SQL查询语句
DQL查询语句
一、基础查询
* 查询全表
select * from 表名;
1、语法:
select
字段列表
from
表名列表
where
条件列表
group by
分组字段
having
分组之后的条件
limit
分页限定;
2、基础查询
1、多个字段的查询
* select 字段1,字段2... from 表名;
* 注意:
* 如果查询所有的字段,则可以使用*来代替所有字段
2、去除重复
* select distinct字段1,字段2... from 表名;
3、计算列
* 一般可以使用四则运算计算一个列的值,(一般只会进行数值的计算)
* IFNULL(表达式1,表达式2): null参与的运算,计算结果都为null
* 表达式1:哪个字段需要判断是否为null
* 表达式2:如果该字段为null之后的替换值
4、起别名
* as : as也可以省略,用空格替代
3、条件查询
1、where子句后跟条件
2、运算符
* >、 <、<=、 >= 、= 、 <> 、!=
* BETWEEN ... AND
* IN(集合)
* LIKE
* 占位符
* “_”:单字节占位符
* “%”:任意字节占位符
* IS NULL
* AND 或 &&
* OR 或 ||
* NOT 或 !
二、增强查询
1、排序查询
* 语法: order by 子句
* order by 排序字段1 排序方式, 排序字段2 排序方式;
* 排序方式
ASC :升序 (默认)
DESC: 降序
* 注意:
如果有多个排序条件,则当前面的条件值一样时,才会判断第二条件
2、聚合函数:将一列数据作为一个整体,进行纵向的计算。
* count : 统计个数
* max: 统计最大值
* min: 统计最小值
* avg: 统计平均值
* sum: 统计总和
* 注意:聚合函数,排除null值
解决方案
* 选择不包含非空的列进行计算
* IFNULL函数
3、分组查询
* 语法:group by 分组字段;
* 注意:
* 分组之后查询的字段:分组字段、聚合函数
* where 和 having的区别?
1、 where 在分组之前进行限定,如果不满足条件,则不进行分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来。
2、 where 后不可以跟聚合函数,having后面可以进行聚合函数的判断。
4、分页查询
1、 语法 : limit 开始的索引,每页查询的条数;
2、公式: 开始的索引 = (当前页码 -1 ) * 每页的条数;
-- 每页显示三条数据
SELECT * FROM student3 LIMIT 0,3; -- 查询第一页
SELECT * FROM student3 LIMIT 3,3; -- 查询第二页
SELECT * FROM student3 LIMIT 6,3; -- 查询第三页
3、分页操作 limit 是一个MYSQL“方言”
约束
* 概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性
* 分类:
一、主键约束:primary key
* 注意:
* 1、含义:非空且唯一
* 2、一张表只能有一个字段为主键
* 3、主键是表中记录的唯一标示
* 在创建表时添加主键约束
create table 表名(
列名1 数据类型1 primary key, -- 添加主键约束
列名2 数据类型2,
列名3 数据类型3,
列名4 数据类型4
);
* 删除主键:
alter table 表名 drop PRIMARY KEY;
* 创建完表后,添加主键
alter table 表名 modify 字段名 字段类型 PRIMARY KEY;
* 自动增长:
* 1、概念:如果某一列是数值类型的,使用auto_increment 可以来完成值的自动增长
* 2、在创建表是,添加主键索引,并且完成主键自