第四章
总结笔记:
一.条件查询 where
1.等值查询 =
select * from student where id=1;
2.不等值查询 != (< >)
查询年龄不是20岁的学生信息
select * from student where age!=20;
3.关系比较查询 < <= > >=
查询年龄不是20岁的学生信息
select * from student where age>20;
4.逻辑运算查询 and or
and 满足所有条件 or只需要满足其中一个条件
查询年龄是小于21岁并且住址是郑州
select * from student where age<21 and address="郑州";
查询年龄小于21岁或者住址是郑州的
select * from student where age<21 or address="郑州";
5.区间查询 between .. and (包含边界值)
查询年龄是18岁和21岁之间
select * from student where age between 18 and 21;
6.模糊查询 like
① %(匹配0-n个字符)
查询学生表中名字包含x的学生信息
select * from student where stuname like '%x%';
② _ (匹配一个字符,相当于一个占位符)
查询学生表中地址第二个字为京的信息
select * from student where adderss like '_京';
二.排序查询 order by asc升序 desc降序
语法:select * from 表名 (where 条件) order by 排序的字段 asc/desc
1.查询学生信息按年龄从大到小排序
select * from student order by age desc;
注意:排序条件可以是多个字段,多个字段之间使用逗号隔开,asc/desc关键字作用于前面的字段
2.limit 限制查询几条信息
limit 1个参数 limit 2个参数 第一个参数代表从哪里开始,第二个参数代表要查询几条数据(mysql中数据从0开始数)
查询前3条数据 select * from 表名 limit 3;
查询从第2条开始的3条数据 select * from 表名 limit 1,3;
三.聚合函数 是针对于一组数据产生一个结果
1.sum() 求和
查询所有学生年龄总和
select sum(stuage) from student;
2.avg() 求平均值
查询所有学生年龄平均值
select avg(stuage) from student;
3.max() 求最大值
查询所有学生年龄最大的
select max(stuage) from student;
4.min() 求最小值
查询所有学生年龄最小的
select min(stuage) from student;
5.count() 统计查询
查询所有数据 两种写法等效
select count(*) from student;
select count(1) from student;
注意:如果指定字段的值为空,会自动忽略
四.分组语句 group by
语法:select 字段名 from 表名 group by 分组条件;
说明:group by 后面跟分组条件字段
查询班级信息分组显示
select className from class group by className;
书写注意事项
①只有出现在group by后面的字段,才能单独出现在select后面
②如果要在group by语句种进行结果的排序,那么排序字段也必须是group by后指定的字段和结果的字段
③如果group by子句种的字段使用了某个单行函数,那么select子句种的字段也必须使用相同的单行函数
五.having语句 对分组后的数据再次进行筛选
语法:select 字段 from 表名 where 条件 group by 分组条件 having 条件
查询借书卡信息表种班级人数大于1的班级
select class from card group by class having count(cno)>1; 先对班级进行一个分组,在使用聚合函数计算班级人数
注意:①和聚合函数混合使用只能用having语句
②当使用where或having都能满足一个需求时,优先使用where
六.起别名
语法:① select 字段名1 as 新名字,字段名2 as 新名字... from 表名;
② select 字段名1 新名字,字段名2 新名字... from 表名;
③ select 字段名1 "新名字",字段名2 "新名字"... from 表名;
七.其他
1.表达式 计算总价
创表的时候 设计价格这个字段
将float类型改为decimal(数值1,数值2) 数值1代表小数点前面整数位为多少位,数值2代表小数点后面保留几位小数
查询总价格
select 单价*数量 from 表名;
2.去重 distinct(如果遇到重复的去除掉,只显示一遍)
查询借阅卡表中包含的班级有哪些
select distinct class from card;