本文最后更新于:2020年9月27日 晚上
基本语句
查
增
| INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
|
删
| DELETE FROM 表名称 WHERE 列名称 = 值
|
改
| UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
|
流程
逻辑判断
IF
| IF(判断语句, 判断结果为True时的返回值, 判断结果为False时的返回值)
|
案例:将salary表中的记录性别进行更变
CASE
| CASE 判断目标 WHEN 所期望的值 THEN 目标是期望值时所执行内容 ELSE 目标不是期望值时所执行内容 END
|
案例:将salary表中的记录性别进行更变
| UPDATE salary SET sex = CASE sex WHEN 'm' THEN 'f' ELSE 'm' END;
|
多表
JOIN
| SELECT column_name FROM Table_name1 JOIN Table_name2 ON 连接条件
|
案例
Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id
Employee 表
编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名
| SELECT a.NAME AS Employee FROM Employee AS a JOIN Employee AS b ON a.ManagerId = b.Id AND a.Salary > b.Salary
|
- INNER JOIN:如果表中有至少一个匹配,则返回行
- LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN:只要其中一个表中存在匹配,则返回行
LEFT JOIN
| SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
|
案例
查询两个表提供的FirstName, LastName, City, State
Person表
PersonId 是主键
Address表
| select FirstName, LastName, City, State from Person left join Address on Person.PersonId = Address.PersonId;
|
处理
排序
ORDER BY
| SELECT column_name, column_name FROM table_name ORDER BY 用作排序的列名, 第二个用作排序的列名 ASC|DESC;
|
案例
编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列
cinema表
| select * from cinema where mod(id, 2)=1 and description != "boring" order by rating DESC
|