一、查询所有列
SELECT * FROM student;
二、查询指定列
SELECT id,NAME,gender FROM student;
三、查询时添加常量列
需求: 在查询student表时添加一个班级列,内容为“javaS1”
SELECT id,NAME,gender,age,'javaS1' AS '年级' FROM student;
四、查询时合并列 (合并列只能合并数值类型的字段)
---- 查询每个学生的servlet和jsp的总成绩
SELECT id,NAME,(servlet+jsp) AS '总成绩' FROM student;
五、查询时去除重复记录(distinct)
------查询学生的性别 男 女
SELECT DISTINCT gender FROM student;
六、条件查询
1)逻辑条件: and (与) or(或)
2)比较条件 > 、< 、>= 、<= 、= 、<> 、between and(包含头和尾)
3)判断条件 (null空字符串): is null / is not null(包括null 和空字符串)
4)模糊条件 : like
% :表示任意个字符
_ :表示一个字符
例如: 查询姓‘张’的学生 SELECT * FROM student WHERE NAME LIKE '张%';
例如:查询姓‘李’,且姓名只有两个字的学生 SELECT * FROM student WHERE NAME LIKE '李_';
七、聚合查询 : sum() avg() max() min() count()
例如:查询学生的jsp的总成绩 select sum(jsp) as 'jsp的总成绩' from student;
例如 : 查询当前有多少学生 select count(*) from student;
-----注意:count()函数的数量不包含null数据
八、分页查询 limit 起始行,查询几行
起始行从0开始: select * from student limit 0,2; 一页两条数据
九、查询排序 order by
asc : 正序 ,自然顺序 (默认排序) desc :倒序
例如 : 按照id顺序排序 倒序
SELECT * FROM student ORDER BY id DESC;-- 反序
例如: 按照servletc成绩正序,按照jsp成绩的倒序
SELECT * FROM student ORDER BY servlet ASC,jsp DESC;
十、分组查询(group by)
例如 : 查询男、女的人数
SELECT gender,COUNT(*) FROM student GROUP BY gender;
十一、分组查询后筛选 (having)
例如: 查询总人数大于2的性别
SELECT gender,COUNT(*) FROM student WHERE GROUP BY gender HAVING COUNT(*)>2;
注意: 分组之前 条件使用where 关键字,分组之后使用having
**************************************************************************
having和where的区别
1、having是在分组后对数据进行过滤,where是在分组之前对数据进行过滤
2、having后面可以使用聚合函数,where后面不可以
3、where是针对分组前记录的条件,如果某行记录没有满足where条件,将不会参与分组,having是对分组后的数据进行筛选
************************************************************************
十二、sql语句的书写顺序
select -- from -- where -- group by -- having -- order by -- limit
十三、sql语句的执行过程
from-->where-->group by-->having-->select-->order by-->limit