SQL Cheat Sheet 
查找数据的查询 
SELECT: 用于从数据库中选择数据 
- SELECT*- FROMtable_name;
DISTINCT: 用于过滤掉重复的值并返回指定列的行 
- SELECT DISTINCTcolumn_name;
WHERE: 用于过滤记录/行 
- SELECTcolumn1, column2- FROMtable_name- WHEREcondition;
- SELECT*- FROMtable_name- WHEREcondition1- ANDcondition2;
- SELECT*- FROMtable_name- WHEREcondition1- ORcondition2;
- SELECT*- FROMtable_name- WHERE NOTcondition;
- SELECT*- FROMtable_name- WHEREcondition1- AND(condition2- ORcondition3);
- SELECT*- FROMtable_name- WHERE EXISTS(- SELECTcolumn_name- FROMtable_name- WHEREcondition);
ORDER BY: 用于结果集的排序,升序(ASC)或者降序(DESC) 
- SELECT*- FROMtable_name- ORDER BYcolumn;
- SELECT*- FROMtable_name- ORDER BYcolumn- DESC;
- SELECT*- FROMtable_name- ORDER BYcolumn1- ASC, column2- DESC;
SELECT TOP: 用于指定从表顶部返回的记录数 
- SELECT TOPnumber columns_names- FROMtable_name- WHEREcondition;
- SELECT TOPpercent columns_names- FROMtable_name- WHEREcondition;
- 并非所有数据库系统都支持SELECT TOP。 MySQL 中是LIMIT子句
- SELECTcolumn_names- FROMtable_name- LIMIToffset, count;
LIKE: 用于搜索列中的特定模式,WHERE 子句中使用的运算符 
- % (percent sign) 是一个表示零个,一个或多个字符的通配符
- _ (underscore) 是一个表示单个字符通配符
- SELECTcolumn_names- FROMtable_name- WHEREcolumn_name- LIKEpattern;
- LIKE‘a%’ (查找任何以“a”开头的值)
- LIKE‘%a’ (查找任何以“a”结尾的值)
- LIKE‘%or%’ (查找任何包含“or”的值)
- LIKE‘_r%’ (查找任何第二位是“r”的值)
- LIKE‘a*%*%’ (查找任何以“a”开头且长度至少为 3 的值)
- LIKE‘[a-c]%’(查找任何以“a”或“b”或“c”开头的值)
IN: 用于在 WHERE 子句中指定多个值的运算符 
- 本质上,IN 运算符是多个 OR 条件的简写
- SELECTcolumn_names- FROMtable_name- WHEREcolumn_name- IN(value1, value2, …);
- SELECTcolumn_names- FROMtable_name- WHEREcolumn_name- IN(- SELECT STATEMENT);
BETWEEN: 用于过滤给定范围的值的运算符 
- SELECTcolumn_names- FROMtable_name- WHEREcolumn_name- BETWEENvalue1- ANDvalue2;
- SELECT*- FROMProducts- WHERE(column_name- BETWEENvalue1- ANDvalue2)- AND NOTcolumn_name2- IN(value3, value4);
- SELECT*- FROMProducts- WHEREcolumn_name- BETWEEN#01/07/1999# AND #03/12/1999#;
NULL: 代表一个字段没有值 
- SELECT*- FROMtable_name- WHEREcolumn_name- IS NULL;
- SELECT*- FROMtable_name- WHEREcolumn_name- IS NOT NULL;
AS: 用于给表或者列分配别名 
- SELECTcolumn_name- ASalias_name- FROMtable_name;
- SELECTcolumn_name- FROMtable_name- ASalias_name;
- SELECTcolumn_name- ASalias_name1, column_name2- ASalias_name2;
- SELECTcolumn_name1, column_name2 + ‘, ‘ + column_name3- ASalias_name;
UNION: 用于组合两个或者多个 SELECT 语句的结果集的运算符 
- 每个 SELECT 语句必须拥有相同的列数
- 列必须拥有相似的数据类型
- 每个 SELECT 语句中的列也必须具有相同的顺序
- SELECTcolumns_names- FROMtable1- UNION SELECTcolumn_name- FROMtable2;
- UNION仅允许选择不同的值,- UNION ALL允许重复
ANY|ALL: 用于检查 WHERE 或 HAVING 子句中使用的子查询条件的运算符 
- ANY如果任何子查询值满足条件,则返回 true。
- ALL如果所有子查询值都满足条件,则返回 true。
- SELECTcolumns_names- FROMtable1- WHEREcolumn_name operator (- ANY|- ALL) (- SELECTcolumn_name- FROMtable_name- WHEREcondition);
GROUP BY: 通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,用于将结果集分组为一列或多列 
- SELECTcolumn_name1, COUNT(column_name2)- FROMtable_name- WHEREcondition- GROUP BYcolumn_name1- ORDER BYCOUNT(column_name2) DESC;
HAVING: HAVING 子句指定 SELECT 语句应仅返回聚合值满足指定条件的行。它被添加到 SQL 语言中,因为 WHERE 关键字不能与聚合函数一起使用。 
- SELECT- COUNT(column_name1), column_name2- FROMtable- GROUP BYcolumn_name2- HAVING- COUNT(column_name1- )> 5;
修改数据的查询 
INSERT INTO: 用于在表中插入新记录/行 
- INSERT INTOtable_name (column1, column2)- VALUES(value1, value2);
- INSERT INTOtable_name- VALUES(value1, value2 …);
UPDATE: 用于修改表中的现有记录/行 
- UPDATEtable_name- SETcolumn1 = value1, column2 = value2- WHEREcondition;
- UPDATEtable_name- SETcolumn_name = value;
DELETE: 用于删除表中的现有记录/行 
- DELETE FROMtable_name- WHEREcondition;
- DELETE*- FROMtable_name;
聚合查询 
COUNT: 返回出现次数 
- SELECT COUNT (DISTINCTcolumn_name- );
MIN() and MAX(): 返回所选列的最小/最大值 
- SELECT MIN (column_names- ) FROMtable_name- WHEREcondition;
- SELECT MAX (column_names- ) FROMtable_name- WHEREcondition;
AVG(): 返回数字列的平均值 
- SELECT AVG (column_name- ) FROMtable_name- WHEREcondition;
SUM(): 返回数值列的总和 
- SELECT SUM (column_name- ) FROMtable_name- WHEREcondition;
连接查询 
INNER JOIN: 内连接,返回在两张表中具有匹配值的记录 
- SELECTcolumn_names- FROMtable1- INNER JOINtable2- ONtable1.column_name=table2.column_name;
- SELECTtable1.column_name1, table2.column_name2, table3.column_name3- FROM((table1- INNER JOINtable2- ONrelationship)- INNER JOINtable3- ONrelationship);
LEFT (OUTER) JOIN: 左外连接,返回左表(table1)中的所有记录,以及右表中的匹配记录(table2) 
- SELECTcolumn_names- FROMtable1- LEFT JOINtable2- ONtable1.column_name=table2.column_name;
RIGHT (OUTER) JOIN: 右外连接,返回右表(table2)中的所有记录,以及左表(table1)中匹配的记录 
- SELECTcolumn_names- FROMtable1- RIGHT JOINtable2- ONtable1.column_name=table2.column_name;
FULL (OUTER) JOIN: 全外连接,全连接是左右外连接的并集. 连接表包含被连接的表的所有记录, 如果缺少匹配的记录, 以 NULL 填充。 
- SELECTcolumn_names- FROMtable1- FULL OUTER JOINtable2- ONtable1.column_name=table2.column_name;
Self JOIN: 自连接,表自身连接 
- SELECTcolumn_names- FROMtable1 T1, table1 T2- WHEREcondition;
视图查询 
CREATE: 创建视图 
- CREATE VIEWview_name- AS SELECTcolumn1, column2- FROMtable_name- WHEREcondition;
SELECT: 检索视图 
- SELECT*- FROMview_name;
DROP: 删除视图 
- DROP VIEWview_name;
修改表的查询 
ADD: 添加字段 
- ALTER TABLEtable_name- ADDcolumn_name column_definition;
MODIFY: 修改字段数据类型 
- ALTER TABLEtable_name- MODIFYcolumn_name column_type;
DROP: 删除字段 
- ALTER TABLEtable_name- DROP COLUMNcolumn_name;
