返回

SQL学习总结

昨天学习了SQL的基础知识,今天做一记录总结。

参考文献:廖雪峰的官方网站

基本概念

  • SQL : 结构化查询语言(Structured Query Language), 是一种操作关系数据库的语言。

  • **记录:**表的每一行

  • **字段:**表的每一列

  • NULL: 表示字段数据不存在

    tips:

    • 若字段为NULL不代表其值为0或空串‘ ’

    • 通常情况下,为了加快查询速度(查询时无需判断),应该字段避免允许为NULL

  • **主键:**可以区分出不同记录的字段,是表中记录的唯一标识

  • **外键:**可以把数据与其他表关联起来的字段

查询数据

基本查询

1
2
select * 
from <表名>;
  • select:表示查询操作
  • *:表示返回所有字段
  • SELECT 列1, 列2, 列3则可以仅返回指定字段,这种操作称为投影
  • from: 后跟表名,表示从哪个表查询

条件查询

1
2
3
4
5
select <字段名>
from <表名> 
where <条件表达式>
order by <字段名> desc <字段名>
limit <pageSize> offset <pageSize*(pageIndex-1)>;
  • where:后跟字段的具体条件,表示结果集仅包含符合条件的记录
  • 条件表达式:
    • 若字段存储的是字符串,则需要用单引号括起来
    • 优先级:NOTANDOR
  • order by : 后跟字段名,表示按照该字段中的值升序排序
  • desc : 降序排序
  • 若有同一字段内有相同数据,要进一步排序,可以继续添加字段名
  • 使用LIMIT <M> OFFSET <N>可以对结果集进行分页,每次查询返回结果集的一部分
  • 分页查询需要先确定每页的数量当前页数,然后确定LIMITOFFSET的值
  • **pageSize:**每页需要显示的结果数
  • **pageIndex:**当前页的索引
  • 在MySQL中,可以省略offset,如:LIMIT <>,<>

聚合查询

1
2
3
select <字段名>, COUNT(*) 别名 
from <表名> 
group by class_id;
  • 聚合查询:对于统计总数、平均数、最值这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。

  • 聚合函数:

    • count(字段名):查询该字段的记录数
    • sum(字段名):计算该字段的合计值,该字段值必须为数值类型
    • avg(字段名):计算该字段的平均值,该字段值必须为数值类型
    • max(字段名):计算该字段的最大值
    • min(字段名):计算该字段的最小值

注意:

  1. MAX()MIN()函数并不限于数值类型。如果是字符类型,MAX()MIN()会返回排序最后和排序最前的字符。
  2. 通常,使用聚合查询时,我们应该给字段名设置一个别名,便于处理结果。
  3. 如果聚合查询的WHERE条件没有匹配到任何行,COUNT()会返回0,而SUM()AVG()MAX()MIN()会返回NULL
  • group by:后跟字段名,表示按照该字段分组聚合

连接查询

1
2
3
4
select <字段名>
from <主表名>
inner join <从表名>
on <连接条件>
  • 连接查询:确定一个主表作为结果集,然后,把其他表的记录有选择性地“连接”在主表结果集上。

  • inner join:只返回两张表都存在的记录

  • left outer join:返回主表都存在的记录,如果某一记录仅在主表存在,那么结果集就会以NULL填充剩下的字段。

  • right outer join:返回从表都存在的记录

  • full outer join:返回两张表所有记录

  • JOIN查询需要先确定主表,然后把另一个表的数据“附加”到结果集上;

  • JOIN查询仍然可以使用WHERE条件和ORDER BY排序。

修改数据

1
2
3
insert into <表名> 
(字段1, 字段2, ...) 
values (1, 2, ...)

1
2
delete from <表名> 
where <条件表达式>;

1
2
3
update <表名> 
set 字段1 = 1,字段2 = 2  /  表达式
where <条件表达式>;

事务

挖个坑,以后总结

Built with Hugo
Theme Stack designed by Jimmy