一个所有 SQL 语句用法的速查表。
这个仓库被社区不断添加和更新,欢迎提交 PR 👏。
SELECT*FROMtable_name;
SELECT DISTINCTcolumn_name;
SELECTcolumn1, column2FROMtable_nameWHEREcondition;SELECT*FROMtable_nameWHEREcondition1ANDcondition2;SELECT*FROMtable_nameWHEREcondition1ORcondition2;SELECT*FROMtable_nameWHERE NOTcondition;SELECT*FROMtable_nameWHEREcondition1AND(condition2ORcondition3);SELECT*FROMtable_nameWHERE EXISTS(SELECTcolumn_nameFROMtable_nameWHEREcondition);
SELECT*FROMtable_nameORDER BYcolumn;SELECT*FROMtable_nameORDER BYcolumnDESC;SELECT*FROMtable_nameORDER BYcolumn1ASC, column2DESC;
SELECT TOPnumber columns_namesFROMtable_nameWHEREcondition;SELECT TOPpercent columns_namesFROMtable_nameWHEREcondition;- 并非所有数据库系统都支持
SELECT TOP。 MySQL 中是LIMIT子句 SELECTcolumn_namesFROMtable_nameLIMIToffset, count;
- % (percent sign) 是一个表示零个,一个或多个字符的通配符
- _ (underscore) 是一个表示单个字符通配符
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameLIKEpattern;LIKE‘a%’ (查找任何以“a”开头的值)LIKE‘%a’ (查找任何以“a”结尾的值)LIKE‘%or%’ (查找任何包含“or”的值)LIKE‘_r%’ (查找任何第二位是“r”的值)LIKE‘a_%_%’ (查找任何以“a”开头且长度至少为3的值)LIKE‘[a-c]%’(查找任何以“a”或“b”或“c”开头的值)
- 本质上,IN运算符是多个OR条件的简写
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameIN(value1, value2, …);SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameIN(SELECT STATEMENT);
SELECTcolumn_namesFROMtable_nameWHEREcolumn_nameBETWEENvalue1ANDvalue2;SELECT*FROMProductsWHERE(column_nameBETWEENvalue1ANDvalue2)AND NOTcolumn_name2IN(value3, value4);SELECT*FROMProductsWHEREcolumn_nameBETWEEN#01/07/1999# AND #03/12/1999#;
SELECT*FROMtable_nameWHEREcolumn_nameIS NULL;SELECT*FROMtable_nameWHEREcolumn_nameIS NOT NULL;
SELECTcolumn_nameASalias_nameFROMtable_name;SELECTcolumn_nameFROMtable_nameASalias_name;SELECTcolumn_nameASalias_name1, column_name2ASalias_name2;SELECTcolumn_name1, column_name2 + ‘, ‘ + column_name3ASalias_name;
- 每个 SELECT 语句必须拥有相同的列数
- 列必须拥有相似的数据类型
- 每个 SELECT 语句中的列也必须具有相同的顺序
SELECTcolumns_namesFROMtable1UNION SELECTcolumn_nameFROMtable2;UNION仅允许选择不同的值,UNION ALL允许重复
ANY如果任何子查询值满足条件,则返回 true。ALL如果所有子查询值都满足条件,则返回 true。SELECTcolumns_namesFROMtable1WHEREcolumn_name operator (ANY|ALL) (SELECTcolumn_nameFROMtable_nameWHEREcondition);
SELECTcolumn_name1, COUNT(column_name2)FROMtable_nameWHEREconditionGROUP BYcolumn_name1ORDER BYCOUNT(column_name2) DESC;
SELECTCOUNT(column_name1), column_name2FROMtableGROUP BYcolumn_name2HAVINGCOUNT(column_name1)> 5;
INSERT INTOtable_name (column1, column2)VALUES(value1, value2);INSERT INTOtable_nameVALUES(value1, value2 …);
UPDATEtable_nameSETcolumn1 = value1, column2 = value2WHEREcondition;UPDATEtable_nameSETcolumn_name = value;
DELETE FROMtable_nameWHEREcondition;DELETE*FROMtable_name;
SELECT COUNT (DISTINCTcolumn_name);
SELECT MIN (column_names) FROMtable_nameWHEREcondition;SELECT MAX (column_names) FROMtable_nameWHEREcondition;
SELECT AVG (column_name) FROMtable_nameWHEREcondition;
SELECT SUM (column_name) FROMtable_nameWHEREcondition;
SELECTcolumn_namesFROMtable1INNER JOINtable2ONtable1.column_name=table2.column_name;SELECTtable1.column_name1, table2.column_name2, table3.column_name3FROM((table1INNER JOINtable2ONrelationship)INNER JOINtable3ONrelationship);
SELECTcolumn_namesFROMtable1LEFT JOINtable2ONtable1.column_name=table2.column_name;
SELECTcolumn_namesFROMtable1RIGHT JOINtable2ONtable1.column_name=table2.column_name;
SELECTcolumn_namesFROMtable1FULL OUTER JOINtable2ONtable1.column_name=table2.column_name;
SELECTcolumn_namesFROMtable1 T1, table1 T2WHEREcondition;
CREATE VIEWview_nameAS SELECTcolumn1, column2FROMtable_nameWHEREcondition;
SELECT*FROMview_name;
DROP VIEWview_name;
ALTER TABLEtable_nameADDcolumn_name column_definition;
ALTER TABLEtable_nameMODIFYcolumn_name column_type;
ALTER TABLEtable_nameDROP COLUMNcolumn_name;