今日学习 | MySQL语法30讲复盘
今日贴士STAR法则
STAR法则是情境(situation)、任务(task)、行动(action)、结果(result)四项的缩写。STAR法则是一种常常被面试官使用的工具,用来收集面试者与工作相关的具体信息和能力。STAR法则比起传统的面试手法来说,可以更精确地预测面试者未来的工作表现。
最近想投一个鹅厂短视频推荐策略的数据产品实习生,需要熟练SQL进行数据分析。因此学习了@MoshHamedani的SQL进阶教程,目前能检索、插入、更新、删除数据。
01
News
SQL 语法总结 I
NO.1 基础语句
USE 子句调动数据库= 双击
需要以分号结束;
因为MySQL不分大小写,因此规定,只大写关键字;
以' '或" "代表字符串;
1| USE sql_store;
SELECT * FROM
*代表全体列,可手动单选;FROM 后面接表名
-- 双横线代表注释
1.LIMIT n = 只取前n行
LIMIT m,n = 跳过m行取n行
#LIMIT永远放在语句最后
2.+-*/运算符计算属性值
%代表取模运算,<> , !=为不等于
布尔运算中AND有最高优先级,可用()改变顺序
3.SELECT……AS……
给派生属性取名
4.SELECT DISTINCT
得到删去重复数据的列表
WHERE 子句筛选属性
1.可用年份字符串进行比较
1| WHERE birthdate > '1990-01-01'
2.WHERE NOT ()
用排除法得到结果
3.WHERE (NOT)IN(a,b,c..)子句
取值可选()内的筛选
BETWEEN ... AND ... 筛选中间值
4.WHERE ... LIKE '...'
%任意长度占位符
_一个字符占位符
5.REGEXP '' 正则运算
^以字符开头
$以字符结尾
'a|b' | = OR
'[a-h]d' [] = 单字符出现
6.WHERE ... IS NULL
筛选空值
ORDER BY
以某属性为序,属性后DESC为降序
1| SELECT.. FROM..
2| WHERE..
3| ORDER BY..
顺序不可颠倒
左右滑动查看练习代码
NO.2 内外连接
当需要将多张表格连接在一起共同展示结果时,通过JOIN语句连接,后跟连接两张表对应的共同属性
·当表格之间的属性名相同时,使用JOIN..USING()..子句
·属性名不相同时,使用 JOIN..ON..子句
INNER JOIN 内连接
1.显式连接 Explicity Syntax
SELECT... FROM...后接表名可简化
(INNER) JOIN...后接表名可简化
ON...接表1名.联系属性名 = 表2名.联系属性名
*当一个表格有两个属性构成主码时,ON后要写两个等式,并用AND连接
1| FROM orders o
2| JOIN customers c
3| ON o.customer_id = c.customer_id
或
1| FROM orders o
2| JOIN customers c
3| USING (customer_id)
2.隐式连接 Implicity Syntax
SELECT... FROM 表a, 表b
WHERE...接表1名.联系属性名 = 表2名.联系属性名
1| FROM orders o, customers c
2| WHERE o.customer_id = c.customer_id
#尽量少用隐式连接,容易出现笛卡尔积
LEFT JOIN 左连接
INNER JOIN 默认只取两张表中对应且不为空值的项
有时,需要的一条记录在表格1有值,对应表格2的属性为空值,则使用LEFT JOIN
韦恩图如下:
图源水印
NATURAL JOIN 语句
简单来说,是为了省略ON子句
当为了缩短查询时,让MySQL自动选择相同名字的属性,可使用NATURAL JOIN语句,由于不可控,不建议用
1| SELECT *
2| FROM orders o
3| NATURAL JOIN customers c
CROSS JOIN语句
SELECT..FROM 后接两张表的隐式连接,执行结果与CROSS JOIN...WHERE...相同
如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,不建议用
1| SELECT *
2| FROM customers c, orders o
3| ORDER BY c.first_name
或
1| SELECT *
2| FROM customers c
3| CROSS JOIN orders o
4| ORDER BY c.first_name
UNION子句
UNION子句能连接不同表格的记录,结果的列名为第一个第一个SELECT语句的列名
1| SELECT name AS full_name
2| FROM shippers
3| UNION
4| SELECT first_name
5| FROM customers
左右滑动查看练习代码
内连接
多表连接
多表外连接
USING子句
USING子句