昨天学习了SQL的基础知识,今天做一记录总结。
参考文献:廖雪峰的官方网站
基本概念
- SQL:结构化查询语言(Structured Query Language), 是一种操作关系数据库的语言。
- 记录:表的每一行
- 字段:表的每一列
- NULL: 表示字段数据不存在
tips:
- 若字段为
NULL
不代表其值为0或空串‘ ’- 通常情况下,为了加快查询速度(查询时无需判断),应该字段避免允许为
NULL
- 主键:可以区分出不同记录的字段,是表中记录的唯一标识
- 外键:可以把数据与其他表关联起来的字段
查询数据
基本查询
select * from <表名>;
select
:表示查询操作*
:表示返回所有字段SELECT 列1, 列2, 列3
则可以仅返回指定字段,这种操作称为投影。from
: 后跟表名,表示从哪个表查询
条件查询
select <字段名> from <表名> where <条件表达式> order by <字段名> desc <字段名> limit <pageSize> offset <pageSize*(pageIndex-1)>;
where
:后跟字段的具体条件,表示结果集仅包含符合条件的记录- 条件表达式:
- 若字段存储的是字符串,则需要用单引号括起来
- 优先级:
NOT
、AND
、OR
order by
: 后跟字段名,表示按照该字段中的值升序排序desc
: 降序排序- 若有同一字段内有相同数据,要进一步排序,可以继续添加字段名。
- 使用
LIMIT <M> OFFSET <N>
可以对结果集进行分页,每次查询返回结果集的一部分 - 分页查询需要先确定每页的数量和当前页数,然后确定
LIMIT
和OFFSET
的值 - pageSize:每页需要显示的结果数
- pageIndex:当前页的索引
- 在MySQL中,可以省略
offset
,如:LIMIT <>,<>
聚合查询
select <字段名>, COUNT(*) 别名 from <表名> group by class_id;
- 聚合查询:对于统计总数、平均数、最值这类计算,SQL提供了专门的聚合函数,使用聚合函数进行查询,就是聚合查询,它可以快速获得结果。
- 聚合函数:
count(字段名)
:查询该字段的记录数sum(字段名)
:计算该字段的合计值,该字段值必须为数值类型avg(字段名)
:计算该字段的平均值,该字段值必须为数值类型max(字段名)
:计算该字段的最大值min(字段名)
:计算该字段的最小值
注意:
MAX()
和MIN()
函数并不限于数值类型。如果是字符类型,MAX()
和MIN()
会返回排序最后和排序最前的字符。- 通常,使用聚合查询时,我们应该给字段名设置一个别名,便于处理结果。
- 如果聚合查询的
WHERE
条件没有匹配到任何行,COUNT()
会返回0,而SUM()
、AVG()
、MAX()
和MIN()
会返回NULL
:
group by
:后跟字段名,表示按照该字段分组聚合
连接查询
select <字段名> from <主表名> inner join <从表名> on <连接条件>
- 连接查询:确定一个主表作为结果集,然后,把其他表的记录有选择性地“连接”在主表结果集上。
inner join
:只返回两张表都存在的记录left outer join
:返回主表都存在的记录,如果某一记录仅在主表存在,那么结果集就会以NULL
填充剩下的字段。right outer join
:返回从表都存在的记录full outer join
:返回两张表所有记录- JOIN查询需要先确定主表,然后把另一个表的数据“附加”到结果集上;
- JOIN查询仍然可以使用
WHERE
条件和ORDER BY
排序。
修改数据
增
insert into <表名> (字段1, 字段2, ...) values (值1, 值2, ...)
删
delete from <表名> where <条件表达式>;
改
update <表名> set 字段1 = 值1,字段2 = 值2 / 表达式 where <条件表达式>;