MySQL-单表查询

目录

单表查询

IN / NOT IN / OR

ANY

ALL

IS NULL 和 IS NOT NULL

UNION

SELECT ***


单表查询

IN / NOT IN / OR

查询条件在一个集合汇总 存在 / 不存在,也可以使用 OR 来替代

 #查询课程 C02 C03 C04 的平均成绩
 SELECT ACG(score) FROM grade WHERE courseid='C02' OR classid='C03' OR classid='C04' GROUP BY courseid;
 ​
 #以上查询语句相当于
 SELECT AVG(score) FROM grade WHERE courseid IN ('C02','C03','C04') GROUP BY courseid;

image-20231201220128450

 #查询课程不在 C02 C03 C04 中的其他课程的平均成绩
 SELECT ACG(score) FROM grade WHERE courseid!='C02' AND courseid!='C03' AND courseid!='C04'; 
 ​
 SELECT ACG(score) FROM grade WHERE courseid NOT IN ('C02','C03','C04') GROUP BY courseid;

image-20231201220648913

ANY

用于条件判断的子查询 > < >= <= =

找各个子集合中的或运算

> ANY 大于最小的

< ANY 小于最大的

 ​
 SELECT * FROM student WHERE degree='本科' AND age < ANY(SELECT DISTINCT(age) FROM student WHERE degree='研究生');
 #SELECT DISTINCT(age) FROM student WHERE degree='研究生' 表示选出研究生的不同年龄
 # < ANY() 表示本科生年龄小于所有研究生学生的不同年龄中的任何一个,相当于小于其中的最大一个数
 #同理 > ANY() 表示大于ANY中的子查询结果的最小的一个数

ALL

等价于在子集合中查询各个条件的 与运算 结果

> ALL 大于最大的

< ALL 小于最小的

 #查找本科生年龄比研究生最小年龄还小的人
 SELECT * FROM student WHERE degree='本科' AND age < ALL(SELECT DISTINCT(age) FROM student WHERE degree='研究生');

IS NULL 和 IS NOT NULL

 #查询学历是NULL的人的信息
 SELECT * FROM student WHERE degree IS NULL;

UNION

联合查询,将两条SQL语句的查询结果拼成一个结果集,一般用于不同表之间的联合查询

UNION使用的两个条件

  • 两张表的列数必须一样

  • 联合查询的数据类型要兼容

 #查询姓张和姓王的学生
 SELECT * FROM student WHERE sname LIKE '张%' OR sname LIKE '王%';
 ​
 SELECT * FROM student WHERE sname LIKE '张%' UNION SELECT * FROM student WHERE sname LIKE '王%';

但是UNION更多的还是用在不同表之间的联合查询,将不同表之相似的信息查询整合在一起

 #查询所有班级和课程
 SELECT classid,classname FROM class UNION SELECT courseid,cname FROM course;

image-20231202102223769

SELECT ***

 SELECT NOW();  #查询当前时间
 SELECT LENGTH('HELLO');  #查看当前字符串长度
 SHOW VARIABLES;  #查看mysql自带参数信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值