JAVAWeb学习笔记--SQL语句
添加数据
不建议使用第二种省略列名的方式。
修改数据
需要注意的是:修改语句中如果不加条件,则将所有数据都修改!
如: update stu set tel=“1231241”;
会将表中所有点tel都设置为1231241
删除数据
需要注意的是:修改语句中如果不加条件,则将所有数据都删除!
查询语法
基础查询
不建议使用*,因为这样不方便代码的阅读、改进和注释
as的用法:
1 | ` SELECT name as '姓名' ,english as "英语" from stu;` |
条件查询
具体案例:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | -- 1.查询年龄大于20岁的学员信息 SELECT * from stu where age > 20; -- 2.查询年龄大于等于20岁的学员信息 SELECT * from stu where age >= 20; -- 3.查询年龄大于等于20岁并且年龄小于等于30岁的学员信息 SELECT * from stu where age >= 20 and age<=30; SELECT * from stu where age BETWEEN 20 and 30; -- 4.查询入学日期在'1998-09-01'到'1999-09-01' 之 间的学员信息 SELECT * from stu where hire_date between '1998-09-01' and '1999-09-01' ; -- 5.查询年龄等于18岁的学员信息 SELECT * from stu where age =18; -- 6.查询年龄不等于18岁的学员信息 SELECT * from stu where age !=18; SELECT * from stu where age <>18; -- 7.查询年龄等于18岁或者年龄等于20岁或者年龄等于22岁的学员信息 SELECT * from stu where age =18 or age=20 or age=22; SELECT * from stu where age in (18,20,22); -- 8.查询英语成绩为null的学员信息 -- 注意: nul1值的比较不能使用 = !=。需要使用is is not I SELECT * from stu where english is NULL ; |
模糊查询
通配符:
(1)_ :代表单个任意字符
(2)%号:代表任意个数字符
1 2 3 4 5 6 7 8 9 10 11 12 | -- 模糊查询like ===================== /* 通配符: (1)_ :代表单个任意字符 (2)%号:代表任意个数字符 */ -- 1.查询姓'马'的学员信息 SELECT * FROM stu where name like '马%' ; -- 2.查询第二个字是'花'的学员信息 SELECT * FROM stu where name like '_花%' ; -- 3.查询名字中包含'德'的学员信息 SELECT * FROM stu where name like '%德%' ; |
排序查询
1 2 3 4 5 6 | -- 1.查询学生信息,按照年龄升序排列 SELECT * from stu order by age asc ; -- 2.查询学生信息,按照数学成绩降序排列 SELECT * from stu order by math desc ; -- 3. 查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列 SELECT * from stu order by math desc , english asc ; |
分组查询
null不参与所有聚合函数的运算,也就是min,max这些都不会选取到null,求平均值也是直接忽略null;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* 聚合函数 count:统计数量 max:求最大值 min:求最小值 sum:求和 avg:求平均值 */ -- 1.统计班级共有 多少个学生 select count (id) from stu ; select count (*) from stu ; -- count不会统计为null的单元格 -- 2.查询数学成绩的最高分 select max (math) from stu; -- 3.查询数学成绩的最低分 select min (math) from stu; -- 4.查询数学成绩的总分 SELECT sum (math) from stu; -- 5.查询数学成绩的平均分 SELECT avg (math) from stu; |
分组查询
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义这句话的意思是说:
分组字段和聚合函数前后需要对应,不然就没有意义
比如:SELECT name,sex,avg(math) from stu GROUP BY sex;
这里的name与后面的sex并没有对应,所以得到的结果一定也是没有意义的。
有意义:
无意义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* 分组函数 SELECT字段列表FROM表名[WHERE分组前条件限定]GROUPBY分组字段名[HAVING分组后条件过滤]...; */ select * from stu ; -- 1.查询男同学和女同学各自的数学平均分 SELECT sex, avg (math) from stu GROUP BY sex; /* 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义这句话的意思是说: 分组字段和聚合函数前后需要对应,不然就没有意义 比如:SELECT name,sex,avg(math) from stu GROUP BY sex; 这里的name与后面的sex并没有对应,所以得到的结果一定也是没有意义的。 */ -- 2.查询男同学和女同学各自的数学平均分,以及各自人数 select sex, count (sex), avg (math) from stu GROUP BY sex; -- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组 select sex, count (sex), avg (math) from stu where math >70 GROUP BY sex ; /*4.查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2*/ select sex, count (sex), avg (math) from stu where math >70 GROUP BY sex having count (*)>1 ; |
分页查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /* SELECT字段列表FROM表名LIMIT起始索引 ,查询条目数 *起始索引:从0开始 */ select * from stu; -- 1.从0开始查询,查询3条数据 SELECT * from stu limit 0,3; -- 2.每页显示3条数据,查询第1页数据 SELECT * from stu limit 0 , 3; -- 3.每页显示3条数据,查询第2页数据 SELECT * from stu limit 3 , 3; -- 4.每页显示3条数据,查询第3页数据 SELECT * from stu limit 6 , 3; -- 起始索引=(当前页码-1)*每页显示的条数 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人