MySQL之SQL

获取原文件

链接:https://pan.baidu.com/s/1YfFPvWPay_Ysabt77DeXwQ 提取码:xbic
复制这段内容后打开百度网盘手机App,操作更方便哦

一、基础查询

注意:所有查询出来的都是一个虚拟表
语法:SELECT 列名 FROM 表名;
1.查询部分列
2.查询所有列
SELECT 所有列的列名 FROM 表名
SELECT * FROM 表名
注意:生产环境下,优先使用列名查询,*的方式需转换成全列名,效率低、可读性差。

队列中的数据进行运算
+、-、*、/
注意:%是占位符,而非模运算符。

列的别名
列名 as ‘列名’

查询结果去重
distinct 列名
语法:SELECT distinct 列名 FROM 表名;

二、排序查询

语法: SELECT 列名 FROM 表名 ORDER BY 排序列 [排序规则]
排序规则
ASC 升序;DESC 降序

依据单列排序
SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 列名2 DESC;

依据多列排序
SELECT 列名1,列名2,列名3 FROM 表名 ORDER BY 列名2 DESC,列名1 ASC;
注意:按列名2的大小从大到小排序,列名2相同时,按列名1的从小到大排序。

三、条件查询

语法:SELECT 列名 FROM 表名 WHERE 条件;
WHERE 条件:在查询结果中,筛选符合条件的查询结果,条件为布尔表达式

等值判断(=)
SELECT 列名1 ,列名2 ,列名3 FROM 表名 WHERE 列名2=100;
注意:与java不同(==),mysql中等值判断使用=。
不等值判断(>、<、>=、<=、!=、<>)
注意:!= 和 <>都表示不等于

逻辑判断(and、or、not)
SELECT 列名1 ,列名2 ,列名3 FROM 表名 WHERE 列名2=100 AND 列名3=20;
区间判断(between and)
SELECT 列名1,列名2,列名3 FROM 表名 WHERE 列名2 BETWEEN 500 AND 10000;
注意:闭区间,包含区间边界的两个值;在区间判断语法中,小值在前,大值在后,反之,得不到正确结果

NULL值判断(IS NULL 、 IS NOT NULL)
SELECT 列名1 ,列名2 ,列名3 FROM 表名 WHERE 列名2 IS NULL;

枚举查询(IN(值1,值2,值3…))
SELECT 列名1 ,列名2 ,列名3 FROM 表名 WHERE 列名2 IN(70,80,90);
注意:IN的查询效率较低,可通过多条件拼接

模糊查询:单个任意符;%:任意长度的任意字符)
语法:SELECT 列名1 ,列名2 ,列名3 FROM 表名 WHERE 列名1 LIKE ‘张
’;
注意:模糊查询只能和LIKE关键字结合使用

分支结构查询
格式:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
ELSE 结果
END AS ‘列名’
语法:
SELECT 列名1 ,列名2 ,列名3
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
ELSE 结果
END AS ‘列名’
FROM 表名;
注意:通过使用CASE END 进行条件判断,每条数据对应生成一个值。(查询只有一个结果)
经验:类似java中 的switch。

四、时间查询

语法:SELECT 时间函数([参数列表])
经验:执行时间函数查询,会自动生成一张虚表(一行一列)
在这里插入图片描述
获取当前系统时间
#查询当前时间
SELECT SYSDATE();

#查询当前时间
SELECT NOW();

#获取当前日期
SELECT CURDATE();

#获取当前时间
SELECT CURTIME();

在这里插入图片描述

字符串查询

语法:SELECT 字符串函数([参数列表])

在这里插入图片描述
字符串应用
#拼接内容
SELECT CONCAT(‘My’,’S’,’QL’);
应用:例如表中的姓和名进行拼接处理

#字符串替换
SELECT INSERT(‘这是一个数据库’,3,2,’MySql’);#结果为:这是MySql数据库
注意:MYSQL中的字符串下标是从1开始。

#指定内容转换为小写
SELECT LOWER(‘MYSQL’);#mysql

#指定内容转换为大写
SELECT UPPER(‘mysql’);#MYSQL

#指定内容截取
SELECT SUBSTRING(‘JAVAMySQLOracle’,5,5);#MySQL

聚合函数
语法:SELECT 聚合函数(列名) FROM 表名;
经验:对多条数据的单列进行统计,返回统计后的一行结果。
在这里插入图片描述
在这里插入图片描述
注意:聚合函数自动忽略null值,不进行统计。

分组查询
语法:SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组依据(列);
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分组过滤查询
语法:SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组列 HAVING 过滤规则
在这里插入图片描述
限定查询
语法:SELECT 列名 FROM 表名 LIMIT 起始行,查询行数

#查询前5行记录
#查询表中前五名员工的所有信息
SELECT * FROM 表名 LIMIT 0,5;
注意:起始行是从0开始,代表了第一行。第二个参数代表的是从指定行开始查询几行。

#查询范围记录
#查询表中从第三条开始,查询10行
SELECT * FROM 表名 LIMIT 3,10;

#LIMIT 典型应用
分页查询:一页显示10条,一共查询三页
#思路:第一页是从0开始,显示10条
SELECT * FROM LIMIT 0,10;
#第二页是从10开始,显示10条
SELECT * FROM LIMIT 10,10;
#第三页是从20开始,显示10条
SELECT * FROM LIMIT 20,10;
经验:在分页应用场景中,起始行是变化的,但是一页显示的条数是不变的

查询总结

SQL语句编写顺序
SELECT 列名 FROM 表名 WHERE 条件 GROUP BY 分组 HAVING 过滤条件 ORDER BY 排序列(ASC|DESC) LIMIT 起始行,总条数

SQL 语句执行顺序
1.FROM:指定数据来源表
2.WHERE:对查询数据做一次过滤
3.GROUP BY:分组
4.HAVING:对分组后的数据第二次过滤
5.SELECT:查询各字段的值
6.ORDER BY:排序
7.LIMIT:限定查询结果

查询进阶
子查询(作为条件判断)
语法:SELECT 列名 FROM 表名 WHRER 条件(子查询结果)

查询工资大于Bruce的员工信息
在这里插入图片描述
子查询(作为枚举查询条件)
语法:SELECT 列名 FROM 表名 WHERE 列名 IN(子查询结果)

查询与名为“King”同一部门的员工信息
在这里插入图片描述
在这里插入图片描述
子查询(作为一张表:多行多列)
语法:SELECT 列名 FROM (子查询的结果集) WHERE 条件;
在这里插入图片描述
合并查询(了解)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你不懂、、、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值