Mysql的高级查询

EXISTS和NOT EXISTS子查询
EXISTS 子查询
语法:
SELECT * FROM 表名 WHERE EXISTS(子查询);
EXISTS关键字后面可以有任意的子查询,如果有返回结果则为true 否则为false;
EXISTS跟NOT EXISTS语法一样,不过是相同取反操作.
子查询注意事项:
1):子查询语句可以嵌套在任何表达式出现的位置.
嵌套在SELECT语句的SELECT子句中的子查询语句:
SELECT (子查询) FROM 表名;
子查询结果为单行单列,但不必指定列别名;
前台在SELECT语句的FROM子句中的子查询语句:
*SELECT FROM (子查询) AS 表的别名;
必须为表指定别名,一般返回对行多列数据记录,可以当做一张临时表;
2):只出现在子查询中而没有出现在父查询中的表不能包含在输出列中;
分组查询
使用group by 进行分组查询
#查看每个学员考试的平均分
SELECT studentNo 学员编号 , AVG(StudentResult) 平均成绩 FROM result GROUP BY StudentNo;
进行多列分组查询
#查询每个班班男同学和女同学的人数

SELECT COUNT(*) 人数,sex 性别,gradeID FROM students GROUP BY sex,gradeID;
使用HAVING子句进行分组筛选
#计算平均成绩大于80分以上的学生
SELECT studentNo 学号, AVG(StudentResult) 平均成绩
FROM result GROUP BY studentNo HAVING AVG(StudentResult)>80;

内连接查询

(1):INNER JOIN用来连接两个表
(2):INNER可以省略
(3):ON用来设置条件
(4):AS用来指定表的 ’别名’ .可写/也可不写
外连接查询
与内连接查询相对的方式称为外连接查询,在外连接中参与连接的表有主从之分,以主表的每行数据匹配从表的数据列,将符合连接条件数据直接返回到结果集中,对那些不符合连接条件的列.将被填上null值后在返回到结果集中;
左外连接查询
左外连接查询的结果集包括LEFT JOIN子句中指定的左表的所有行,而不仅仅是连接列所匹配的行;
左外链接查询使用LEFT JOIN…ON或LEFT OUTER JOIN…ON关键字来进行表之间的关联;
右外连接查询
右外连接查询与左外连接查询类似,只不过要包含右表中所有匹配的行.若右表中有的项在左表中没有对应的项,则以null填充;
右外链接查询使用RIGHT JOIN…ON或RIGHT OUTER JOIN…ON关键字来进行表之间的关联;
模糊查询LIKE
查询名字包含李的所有学生信息:
SELECT * FROM students WHERE studentName like ‘%李%’;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值