as关键字
使用SQL语句显示结果的时候,往往在屏幕显示的字段名并不具备良好的可读性,此时可用as起一个别名。
使用as给字段起别名
select id as 序号,name as 名字,gender as 性别 from students;
可以通过as给表起别名
如果是表单查询,可以省略表名
select id,name,gender from students;
表名.字段名
select students.id,students.name,students.gender from students;
可以通过as给表起别名
select s.id,s.name,s.gender from students as s;
- 在这里给表起别名看起来没有什么意义,然而并不是这样,自链接的时候,必须对表起别名。
distinct关键字
distinct可以去除重复数据行
select distinct 列1,... from 表名;
select name,gender from students;
- 下面可以去重
select distinct name,gender from students;
总结
- as关键字可以给表中字段或者表名起别名
- distinct关键字可以去除重复数据行。
where条件查询
支持的运算符:
- 比较运算符
- 逻辑运算符
- 模糊查询
- 范围查询
- 空判断
where条件查询语法格式
select * from 表名 where 条件;
select * from studnets where id=1;
比较运算符查询
- 等于=
- 大于>
- 大于等于>=
- 小于<
- 小于等于<=
- 不等于!=或<>
例:查询编号大于3的学生信息
select * from students where id>3;
查询编号不大于4的学生
select * from students where id<=4;
查询姓名不是“黄蓉“的学生
select * from students where name!='黄蓉';
查询没被删除的学生
select * from students where id_delete=0;
- id_delete只是一个状态,判断是否删除,不直接删除是方便找回
逻辑运算符
- and
- or
- not
例子:查询编号大于3的女同学
select * from students where id>3 and gender=0;
查询编号小于4或没有被删除的学生
select * from id<4 and id_delete=0;
查询年龄不在10岁到15岁之间的学生
select * from students where age<10 and age>15;
select * from students wehre not(age>10 and age<15);
- 多个条件判断想要作为一个整体,可以使用()
模糊查询
- like是模糊查询关键字
- %表示任意多个任意字符
- _表示一个任意字符
查询姓黄的学生
select * from students where name='黄%';
查询姓黄并且”名“是一个字的学生
select * from students where name='黄_';
查询姓黄或叫靖的学生
select * from students where name='黄%'and name='_靖';
范围查询
between...and...表示在一个连续的范围内查询
in表示在一个非连续的范围内查询
例:查询编号为3到8的学生
select * from students where id between 3 and 8;
查询编号不是3到8的男生
select * from students where (not id between 3 and 8)and gender='男';
select * from students where id<3 and id>8 and gender='男';
空判断查询
判断为空使用:is null
判断非空使用:is not null
查询没有填写身高的学生
select * from students where height is null;
注意
- 不能使用where height =null判断为空
- 不能使用where height !=null判断非空
- null不等于''空字符串
总结
- 常见的比较运算符>,<,>=,<=,!=,<>
- 逻辑运算符and表示多个条件同时成立则为真,or表示多个条件有一个成立则为真,not表示对条件取反
- like和%结合使用表示多个任意字符,like和_结合使用表示一个任意字符
- between-and限制连续使用范围 in限制非连续性范围
- 判断为空使用is null
- 判断非空使用is not null
排序查询语法
select * from 表名 order by 列1 asc|desc ,列2 asc|desc...;
语法说明
- 先按照列1进行排序,如果列1的值相同,则按照列2排序,以此类推
- asc从小到大排序,既升序
- desc从大到小排序,既降序
- 默认按照列值从小到大排序(asc)
例:查询未删除男生信息,按照学号降序
select * from students where gender=1 and is_delete=0 order by id desc;
显示所有学生信息,先按照年龄从大到小排序,当年龄相同时,按照身高从高到矮排序
select * from students oder by age desc , height desc;
总结
- 排序使用order by关键字
- asc表示升序
- desc表示降序
分页查询
select * from 表名 limit start(从第几条开始),count(显示多少条);
- limit是分页查询关键字
- start表示开始行索引,默认0
- count表示查询条数
例:查询前3行男生
select * from students gender=1 limit 0,3;
select * from students gender=1 limit 3;
分页查询案例
已知每页显示m条数据,求第n页显示的数据
提示:关键是求每页的开始行索引
查询学生表,获取第n页数据的SQL
select * from students limit m*(n-1),n;
总结
- 使用limit关键字可以限制数据显示数量,通过limit关键字可以完成分页查询
- limit关键字后的第一个参数是开始行索引(默认0,不写就是0),第二个参数是查询条数。