Skip to content

Latest commit

 

History

History
187 lines (124 loc) · 9.79 KB

sql-cheat-sheet.md

File metadata and controls

187 lines (124 loc) · 9.79 KB

SQL 速查表

原文:www.kdnuggets.com/2018/07/sql-cheat-sheet.html

c 评论

SQL 速查表

SQL(结构化查询语言)是一种用于编程的领域特定语言,旨在查询数据库。与任何语言一样,拥有常见查询和函数名称的列表作为参考是有用的。我们希望这张速查表对你有所帮助:

基本关键字


我们的前三名课程推荐

1. 谷歌网络安全证书 - 快速进入网络安全职业。

2. 谷歌数据分析专业证书 - 提升你的数据分析水平

3. 谷歌 IT 支持专业证书 - 支持你的组织进行 IT 工作


在我们深入了解一些基本常见查询之前,让我们先看看你将会遇到的一些关键字:

关键字 说明
SELECT 用于声明要查询的列。使用 * 表示所有
FROM 声明从哪个表/视图等中选择
WHERE 引入条件
= 用于将值与指定输入进行比较
LIKE 与 WHERE 子句一起使用的特殊运算符,用于在列中搜索特定模式
GROUP BY 将相同的数据安排成组
HAVING 指定仅返回汇总值符合指定条件的行。由于 WHERE 关键字不能与汇总函数一起使用,因此使用此关键字
INNER JOIN 返回所有主键记录在一个表中等于另一个表的主键记录的行
LEFT JOIN 返回“左”(第一个)表中的所有行及其在右(第二个)表中匹配的行
RIGHT JOIN 返回“右”(第二个)表中的所有行及其在左(第一个)表中匹配的行
FULL OUTER JOIN 返回在左表或右表中匹配的行

汇报汇总函数

在数据库管理中,汇总函数是一种将多行的值分组形成单一值的函数。它们对汇报很有用,一些常见汇总函数的示例如下:

函数 说明
COUNT 返回某个表/视图中的行数
SUM 累加值
AVG 返回一组值的平均值
MIN 返回组中的最小值
MAX 返回组中的最大值

从表中查询数据

数据库表是以垂直列和水平行的模型存储的数据元素(值)的集合。使用以下任一方法在 SQL 中查询表:

SQL 解释
SELECT c1 FROM t 从名为 t 的表中选择列 c1 的数据
SELECT * FROM t 从名为 t 的表中选择所有行和列
SELECT c1 FROM t****WHERE c1 = ‘test’ 从名为 t 的表中选择列 c1 的数据,其中 c1 的值为‘test’
SELECT c1 FROM t****ORDER BY c1 ASC (DESC) 从名为 t 的表中选择列 c1 的数据,并按 c1 排序,可以是升序(默认)或降序
SELECT c1 FROM t****ORDER BY c1LIMIT n OFFSET offset 从名为 t 的表中选择列 c1 的数据,跳过指定的行偏移量,并返回接下来的 n 行
SELECT c1, aggregate(c2)FROM tGROUP BY c1 从名为 t 的表中选择列 c1 的数据,并使用聚合函数对行进行分组
SELECT c1, aggregate(c2)FROM tGROUP BY c1HAVING condition 从名为 t 的表中选择列 c1 的数据,使用聚合函数对行进行分组,并使用‘HAVING’子句筛选这些组

从多个表中查询数据

除了从单个表中查询数据,SQL 还允许从多个表中查询数据:

SQL 解释
SELECT c1, c2FROM t1INNER JOIN t2 on condition 从名为 t1 的表中选择列 c1 和 c2,并在 t1 和 t2 之间执行内连接
SELECT c1, c2FROM t1LEFT JOIN t2 on condition 从名为 t1 的表中选择列 c1 和 c2,并在 t1 和 t2 之间执行左连接
SELECT c1, c2FROM t1RIGHT JOIN t2 on condition 从名为 t1 的表中选择列 c1 和 c2,并在 t1 和 t2 之间执行右连接
SELECT c1, c2FROM t1FULL OUTER JOIN t2 on condition 从名为 t1 的表中选择列 c1 和 c2,并在 t1 和 t2 之间执行全外连接
SELECT c1, c2FROM t1CROSS JOIN t2 从名为 t1 的表中选择列 c1 和 c2,并生成表中行的笛卡尔积
SELECT c1, c2****FROM t1, t2 同上 - 从名为 t1 的表中选择列 c1 和 c2,并生成表中行的笛卡尔积
SELECT c1, c2FROM t1 AINNER JOIN t2 B on condition 从名为 t1 的表中选择列 c1 和 c2,并使用 INNER JOIN 子句将其连接到自身

使用 SQL 操作符

SQL 操作符是保留字或字符,主要用于 SQL 语句中的 WHERE 子句以执行操作:

SQL 解释
**SELECT c1 FROM t1****UNION [ALL]**SELECT c1 FROM t2 从名为 t1 的表中选择列 c1,并从名为 t2 的表中选择列 c1,将这两个查询的结果合并
SELECT c1 FROM t1INTERSECTSELECT c1 FROM t2 从名为 t1 的表中选择列 c1,并从名为 t2 的表中选择列 c1,返回两个查询的交集
SELECT c1 FROM t1MINUSSELECT c1 FROM t2 从名为 t1 的表中选择列 c1 和从名为 t2 的表中选择列 c1,并从第一个结果集中减去第二个结果集
SELECT c1 FROM t****WHERE c1 [NOT] LIKE pattern 从名为 t 的表中选择列 c1,并使用模式匹配 % 查询行
SELECT c1 FROM t****WHERE c1 [NOT] in test_list 从名为 t 的表中选择列 c1,并返回在 test_list 中(或不在) 的行
SELECT c1 FROM t****WHERE c1 BETWEEN min AND max 从名为 t 的表中选择列 c1,并返回 c1 在 min 和 max 之间的行
SELECT c1 FROM t****WHERE c1 IS [NOT] NULL 从名为 t 的表中选择列 c1,并检查值是否为 NULL

数据修改

数据修改是 SQL 的关键部分,除了添加和删除数据外,还能修改现有记录:

SQL 解释
**INSERT INTO t(column_list)**VALUES(value_list) 向名为 t 的表中插入一行数据
**INSERT INTO t(column_list)**VALUES (value_list), (value_list), … 向名为 t 的表中插入多行数据
**INSERT INTO t1(column_list)**SELECT column_list FROM t2 将 t2 中的行插入到名为 t1 的表中
UPDATE tSET c1 = new_value 在表 t 的列 c1 中更新所有行的新值
UPDATE tSET c1 = new_value, c2 = new_value****WHERE condition 更新表 t 中符合条件的行的列 c1 和 c2 的值
DELETE FROM t 从名为 t 的表中删除所有行
DELETE FROM tWHERE condition 从名为 t 的表中删除所有符合某条件的行

视图

视图是一个虚拟表,是查询的结果。它们非常有用,通常用作安全机制,允许用户通过视图访问数据,而不是直接访问基础表:

SQL 解释
CREATE VIEW view1 ASSELECT c1, c2FROM t1****WHERE condition 创建一个视图,包含来自名为 t1 的表的列 c1 和 c2,其中符合某一条件。

索引

索引用于通过减少需要访问的数据库页面数量来加速查询性能:

SQL 解释
CREATE INDEX index_nameON t(c1, c2) 在表 t 的列 c1 和 c2 上创建索引
CREATE UNIQUE INDEX index_name****ON t(c3, c4) 在表 t 的列 c3 和 c4 上创建唯一索引
DROP INDEX index_name 删除一个索引

存储过程

存储过程是一组带有分配名称的 SQL 语句,这些语句可以被多个程序轻松重用和共享:

SQL 解释
CREATE PROCEDURE procedure_name**    @variable AS datatype = valueAS   -- Comments****SELECT * FROM tGO** 创建一个名为 procedure_name 的过程,创建一个局部变量,然后从表 t 中选择数据

触发器

触发器是一种特殊类型的存储过程,当用户尝试通过 DML 事件(数据操作语言)修改数据时,它会自动执行。DML 事件是对表或视图的 INSERT、UPDATE 或 DELETE 语句:

SQL 解释

| CREATE OR MODIFY TRIGGER trigger_nameWHEN EVENTON table_name TRIGGER_TYPE****EXECUTE stored_procedure | 何时:

  • BEFORE – 在事件发生之前调用

  • AFTER – 在事件发生之后调用

事件:

  • INSERT – 调用以插入

  • UPDATE – 调用以更新

  • DELETE – 调用以删除

TRIGGER_TYPE:

  • FOR EACH ROW

  • FOR EACH STATEMENT

|

DROP TRIGGER trigger_name 删除特定触发器

相关:

更多关于此主题