MySQL笔记(三)SQL查询语句进阶、嵌套、表连接

SQL查询语句进阶

SELECT * FROM user2 WHERE NAME LIKE "%森"; #模糊查询 查询以森结尾的数据 %为通配符

SELECT * FROM user2 WHERE NAME LIKE "%二%"; #模糊查询 查询包含二的数据

SELECT * FROM user2 LIMIT 0,3; # 0为数据索引 ,3为查询查询的条数

SELECT MAX(age) FROM user2; # 查询最大的年龄

SELECT MIN(age) from user2; # 查询最小的年龄

SELECT AVG(age) from user2; # 查询平均的年龄

SELECT SUM(age) FROM user2; # 求出所有年龄的和

SELECT * from user2 WHERE age in (SELECT MAX(age) FROM user2); # 查询最大年龄的人

SELECT * FROM user2 ORDER BY age; # 以年龄排序 默认升序

SELECT * FROM user2 ORDER BY age desc; # 以年龄排序 降序

SELECT * FROM (SELECT * FROM user2 ORDER BY sex ) as t ORDER BY age ; 
# 多条件排序 先把按性别排序当作表 t 在进行排序 

SELECT COUNT(name),sex FROM user2 GROUP BY sex; # 查出男女各多少人

SELECT SUBSTRING(name FROM 1 FOR 2) FROM user2; 
# 截取字符串 name为截取的字段,1为起始位置 2为长度

SELECT SUBSTRING('120111199403251234' FROM 7 FOR 8); # 截取出生年月日

SELECT DATE_FORMAT(NOW(),'%y-%m-%d'); # 查询当前日期 以格式输出

新建class、result表

MySQL笔记(三)SQL查询语句进阶、嵌套、表连接_第1张图片

多表查询

先找关联关系 user2表 id = result表 id, result表 classid = class 表 classid。

SELECT
	user2.`NAME`,    #查询user2表中的名字
	class.classname,
	result.mark
FROM
	user2,
	class,
	result
WHERE user2.id = result.id AND result.classid = class.classid; # 进行关联

查询结果

MySQL笔记(三)SQL查询语句进阶、嵌套、表连接_第2张图片

表连接

SELECT * FROM user2 LEFT JOIN result ON user2.id = result.id; 
SELECT * FROM user2 RIGHT JOIN result ON user2.id = result.id;

左连接:会将左边的表和左边的表与右边的表的交集作为返回

右连接:会将右边的表和左边的表与右边的表的交集作为返回

SELECT
	user2.`NAME`,    
	SUM(result.mark) # 查询总成绩  求平均改为AVG FORMAT(AVG(result.mark),2)保存小数点后两位
FROM
	user2,
	class,
	result
WHERE user2.id = result.id AND result.classid = class.classid GROUP BY user2.id ; 
# 进行关联并用id进行分组

执行计划

在SQL语句前插入EXPLAN,可以将查询过程和查询时间体现出来MySQL笔记(三)SQL查询语句进阶、嵌套、表连接_第3张图片

你可能感兴趣的:(数据库)