MySQL 高级(进阶) SQL 语句
创作时间:
作者:
@小白创作中心
MySQL 高级(进阶) SQL 语句
引用
CSDN
1.
https://blog.csdn.net/Vince15dvd/article/details/139837082
MySQL高级SQL语句是数据库操作中非常重要的内容,掌握这些语句可以让你更高效地进行数据查询和处理。本文将详细介绍MySQL中常用的高级SQL语句,包括基本查询语句、通配符、排序、函数、分组、子查询、连接查询等,帮助你深入理解并掌握这些功能。
SQL高级语句
SELECT
显示表格中一个或数个字段的所有数据记录
SELECT * FROM 表名 #显示表的所有数据
SELECT 字段 FROM 表名 #显示对应字段的表数据
DISTINCT
不显示重复的数据记录
SELECT DISTINCT 字段 FROM 表名 #不显示重复字段的数据记录
WHERE
有条件查询
SELECT 字段 FROM 表名 WHERE 条件 #查询满足条件的字段
SELECT * FROM 表名 WHERE 条件 #查询表中满足条件的所有数据
AND(且)
SELECT * FROM 表名 WHERE (条件1 AND 条件2); #满足条件1和条件2
OR(或)
SELECT 字段 FROM 表名 WHERE 条件1 OR 条件2 #满足条件1或条件2
BETWEEN
显示两个值范围内的数据记录
SELECT "字段" FROM "表名" WHERE "字段" BETWEEN '值1' AND '值2';
SELECT * FROM store_info WHERE Date BETWEEN '2020-12-06' AND '2020-12-10';
通配符
通常通配符都是跟 LIKE 一起使用的
%
:百分号表示零个、一个或多个字符_
:下划线表示单个字符'A_Z'
:所有以 'A' 起头,另一个任何值的字符,且以 'Z' 为结尾的字符串。例如,'ABZ' 和 'A2Z' 都符合这一个模式,而 'AKKZ' 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。'ABC%'
: 所有以 'ABC' 起头的字符串。例如,'ABCD' 和 'ABCABC' 都符合这个模式。'%XYZ'
: 所有以 'XYZ' 结尾的字符串。例如,'WXYZ' 和 'ZZXYZ' 都符合这个模式。'%AN%'
: 所有含有 'AN'这个模式的字符串。例如,'LOS ANGELES' 和 'SAN FRANCISCO' 都符合这个模式。'_AN%'
:所有第二个字母为 'A' 和第三个字母为 'N' 的字符串。例如,'SAN FRANCISCO' 符合这个模式,而 'LOS ANGELES' 则不符合这个模式。
LIKE
匹配一个模式来找出我们要的数据记录
SELECT * FROM 表名 WHERE 字段 LIKE 条件
ORDER BY
按关键字排序
SELECT * FROM 表名 (WHERE 条件) ORDER BY 字段 ASC/DESC
ASC 升序 默认
DESC 降序
数学函数
RAND()
返回 0 到 1 的随机数ROUND(x,y)
保留 x 的 y 位小数四舍五入后的值TRUNCATE(x,y)
返回数字 x 截断为 y 位小数的值GREATEST(值1, 值2, ....)
返回集合中最大的值,也可以返回多个字段的最大的值LEAST(值1, 值2, ....)
返回集合中最小的值,也可以返回多个字段的最小的值MOD(x,y)
返回 x 除以 y 以后的余数POWER(x,y)
返回 x 的 y 次方
聚合函数
用于获取一个字段里的值:
AVG()
返回指定列的平均值SUM()
返回指定列的所有值之和COUNT()
返回指定列中非 NULL值的个数MIN()
返回指定列的最小值MAX()
返回指定列的最大值
字符串函数
CONCAT('字符串1', '字符串2', ....)
将提供的参数 x 和 y 拼接成一个字符串SUBSTR(x,y,z)
获取从字符串 x 中的第 y 个位置开始长度为 z 的字符串REPLACE(x,y,z)
将字符串 z 替代字符串 x 中的字符串 yLENGTH(x)
返回字符串 x 的长度UPPER(x)
将字符串 x 的所有字母变成大写字母LOWER(x)
将字符串 x 的所有字母变成小写字母LEFT(x,y)
返回字符串 x 的前 y 个字符RIGHT(x,y)
返回字符串 x 的后 y 个字符
字符串截取:面试题
echo abcdefg
i=abcdefg #定义变量
echo ${i:2:2} #从下标2开始截取两个 下标从0开始计算
echo abcdefg | cut -b 3-4 #截取下标3到4个的 cut下表从1开始
expr substr $i 3 2 #expr下表从1开始
使用字符串函数连接两个字段:
SELECT CONCAT(字段,字段2) FROM 表名; 字符串要加 ' '
SELECT 字段1 || 字段2 FROM 表名 字符串要加 ' ' #要开启PIPES_AS_CONCAT 模式
使用字符串函数截取
SELECT SUBSTR(字段,y,z) FROM 表名 WHERE 语句;
SELECT SUBSTR(store_name,5,6) FROM location WHERE store_name='los Angles';
GROUP BY
对GROUP BY后面的字段的查询结果进行汇总分组,通常是结合聚合函数一起使用的
原则:GROUP BY 有一个原则,凡是在 GROUP BY 后面出现的字段,必须在 SELECT 后面出现;凡是在SELECT 后面出现的、且未在聚合函数中出现的字段,必须出现在 GROUP BY 后面。
HAVING
用来过滤由 GROUP BY 语句返回的记录集,通常与 GROUP BY 语句联合使用
HAVING 语句的存在弥补了 WHERE 关键字不能与聚合函数联合使用的不足。
原因:是因为SQL语句执行顺序中having优先级低于where。
SELECT 字段1 聚合函数(字段2) FROM 表 GROUP BY 字段1 #分组,通常会结合聚合函数使用,分组也有去重的效果
SELECT 字段1 聚合函数(字段2) FROM 表 GROUP BY 字段1 HAVING (函数条件); #having的作用:过滤group by分组后的结果
别名 :字段別名 表格別名
语法:SELECT "表格別名"."字段1" [AS] "字段別名" FROM "表格名" [AS] "表格別名"; 【】代表可以省略
子查询
用于连接表格,内查询的结果会作为外查询的条件来使用
SELECT 字段 FROM 表名1 WHERE 字段 比较运算符(SELECT 字段 FROM 表2 WHERE 条件表达式)
EXISTS
用来根据条件过滤查询结果,并只返回满足条件的行
SELECT "字段1" FROM "表格1" WHERE EXISTS (SELECT * FROM "表格2" WHERE "条件");
这里的子查询作为条件进行判断。如果子查询返回至少一行结果,则外部查询的结果将包含该行
连接查询
- inner join(内连接):只返回两个表中联结字段相等的行
- left join(左连接): 返回包括左表中的所有记录和右表中联结字段相等的记录 ,不相等的行返回NULL
- right join(右连接): 返回包括右表中的所有记录和左表中联结字段相等的记录,不相等的行返回NULL
求交集
内连接:SELECT A.字段 FROM 左表 A INNER JOIN 右表 B ON A.字段=B.字段;
SELECT A.字段 FROM 左表 A INNER JOIN 右表 B USING(字段);
USING(字段)= ON A.字段=B.字段;
联集
UNION 联集,将两个select查询语句的结果合并,并去重
UNION ALL 联集,将两个select查询语句的结果合并,不去重
用联集求两个表无交集
SELECT 字段 FROM 左表 A LEFT JOIN 右表 B ON A.字段=B.字段 WHERE B字段 IS NULL
#求右表与左表无交集的字段
SELECT 字段 FROM 左表 A RIGHT JOIN 右表 B ON A.字段=B。字段 WHERE A字段 IS NULL
#求左边与右表无交集的字段
再使用联集
SELECT 字段 FROM 左表 A LEFT JOIN 右表 B ON A.字段=B的字段 WHERE B字段 IS NULL
UNION ALL
SELECT 字段 FROM 左表 A RIGHT JOIN 右表 B ON A.字段=B。字段 WHERE A字段 IS NULL
就可以显示出两表无交集的字段
热门推荐
减脂和增肌的区别
大学生Citywalk沉浸式感受家乡变化
租用免费云服务器时,需要考虑哪些关键因素?
软件如何模拟测试运行
益民联社张义民:宏观经济政策与股市趋势分析
难忘的富士山一日游日本标志性山峰完全指南
西班牙语口语练习:提升流利度和自信心
气管长肿瘤做什么检查能发现
十年施工经验揭秘:美缝选择全攻略,助你轻松避坑!
甲木命格死木特点分析,什么是八字的“死木”
什么是云服务的自服务门户?
调查发现运动和寿命关系,65岁后别对运动严苛,“适度” 其实更好
得了荨麻疹该怎么处理?有效应对和日常护理指南分享
轻松享瘦:低热量寿司的选择与享用秘诀
名中医白兰地医生牛皮癣患者饮食指南
房屋平面图怎么看朝向?如何根据朝向选择合适的房屋?
感受“付款之痛”:澳洲新研究揭为何现金支付会帮助省钱
牙结石掉了感觉牙齿缺一块怎么办
标题的含义答题技巧 有哪些含义
全球变暖趋势持续 欧洲滑雪旅游业受波及
类型融合成趋势,“悬疑+爱情”这条路怎么走?
什么是ST股票的特征和定义?这类股票的市场表现有哪些特点?
牙龈起包怎么办?了解3种常见原因及应对策略!
我国芯片产业的发展及破局策略
人文南京新图鉴:3100年前,南京从这里走来
必须了解酵母的十个问题
成年人32颗牙齿排列用处详解!每颗牙都有独特的用处以及优势!
俄罗斯舰队的悲剧:马卡洛夫海军上将和彼得罗巴甫洛夫斯克之死
终极省钱秘籍:用最少的钱买到心仪的PS5游戏,折扣与购买技巧全揭秘
云南离缅甸很近吗?云南与缅甸:文化交融下的“零距离”接触!