1 前言
各种数据库的数据类型和所支持的SQL标准不尽相同,在使用数据库之前必须先了解所使用数据库所支持的数据类型及支持的SQL标准。
2 语法功能
注:SQL 大小写不敏感
语句 | 功能 | 示例 | |
SQL SELECT | 选择 | SELECT column_name,column_name FROM table_name; | |
SQL SELECT DISTINCT | 在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。 DISTINCT 关键词用于返回唯一不同的值。 | SELECT DISTINCT column_name,column_name FROM table_name; | |
SQL WHERE | WHERE 子句用于提取那些满足指定标准的记录。 | SELECT column_name,column_name FROM table_name WHERE column_name operator value; | |
AND & OR | 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。 | ||
SQL ORDER BY | ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。 ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。 | SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC; | |
INSERT INTO | INSERT INTO 语句可以有两种编写形式。 第一种形式无需指定要插入数据的列名,只需提供被插入的值即可: 第二种形式需要指定列名及被插入的值: | INSERT INTO table_name VALUES (value1,value2,value3,...); INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...); | |
UPDATE | UPDATE 语句用于更新表中已存在的记录。 | UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value; | |
DELETE | DELETE 语句用于删除表中的行。 | DELETE FROM table_name WHERE some_column=some_value; | |
TOP | SELECT TOP 子句用于规定要返回的记录的数目。 SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。 | SELECT column_name(s) FROM table_name LIMIT number; | |
LIKE | LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。 | SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern; | |
通配符 | 在 SQL 中,通配符与 SQL LIKE 操作符一起使用。 SQL 通配符用于搜索表中的数据。 | 请自行查找。 | |
IN | IN 操作符允许您在 WHERE 子句中规定多个值。 | SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...); | |
BETWEEN | BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。 | SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; | |
别名 | 通过使用 SQL,可以为表名称或列名称指定别名。 基本上,创建别名是为了让列名称的可读性更强。 | SELECT column_name AS alias_name FROM table_name; SELECT column_name(s) FROM table_name AS alias_name; | |
JOIN | SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。 最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。 | INNER JOIN:如果表中有至少一个匹配,则返回行 LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 FULL JOIN:只要其中一个表中存在匹配,则返回行 | |
INNER JOIN | INNER JOIN 关键字在表中存在至少一个匹配时返回行。 | SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name=table2.column_name; | |
LEFT JOIN | LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。 | SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; | |
RIGHT JOIN | RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。 | SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name=table2.column_name; | |
FULL OUTER JOIN | FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行. FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。 | SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name=table2.column_name; | |
UNION | UNION 操作符用于合并两个或多个 SELECT 语句的结果集。 请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。 | SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2; | |
SELECT INTO | 通过 SQL,您可以从一个表复制信息到另一个表。 SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。 | SELECT column_name(s) INTO newtable [IN externaldb] FROM table1; mysql支持以下的语句: CREATE TABLE 新表 SELECT * FROM 旧表 | |
INSERT INTO SELECT | INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。 | INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1; | |
CREATE DATABASE | CREATE DATABASE 语句用于创建数据库。 | CREATE DATABASE dbname; | |
CREATE TABLE | CREATE TABLE 语句用于创建数据库中的表。 表由行和列组成,每个表都必须有个表名。 | CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); | |
SQL 约束 | SQL 约束用于规定表中的数据规则。 如果存在违反约束的数据行为,行为会被约束终止。 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。 | CREATE TABLE table_name ( column_name1 data_type(size) constraint_name, column_name2 data_type(size) constraint_name, column_name3 data_type(size) constraint_name, .... ); | ); |
约束值 | NOT NULL - 指示某列不能存储 NULL 值。 UNIQUE - 保证某列的每行必须有唯一的值。 PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。 FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。 CHECK - 保证列中的值符合指定的条件。 DEFAULT - 规定没有给列赋值时的默认值。 | 因数据库而异。 | |
CREATE INDEX | CREATE INDEX 语句用于在表中创建索引。 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据 | 用于创建索引的语法在不同的数据库中不一样。因此,检查您的数据库中创建索引的语法。 在表上创建一个简单的索引。允许使用重复的值: 在表上创建一个唯一的索引。不允许使用重复的值:唯一的索引意味着两个行不能拥有相同的索引值。 | |
DROP | 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。 | DROP TABLE table_name DROP DATABASE database_name | |
TRUNCATE | 仅仅需要删除表内的数据,但并不删除表本身。 | TRUNCATE TABLE table_name | |
ALTER TABLE | ALTER TABLE 语句用于在已有的表中添加、删除或修改列。修改列语法因数据库不同而略有差别。 | ALTER TABLE table_name ADD column_name datatype ALTER TABLE table_name DROP COLUMN column_name | |
Auto-increment | 我们通常希望在每次插入新记录时,自动地创建主键字段的值。 我们可以在表中创建一个 auto-increment 字段。 | 语法与添加约束一致。 | |
视图 | 在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。 视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。 您可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。 | CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition 更新视图另有操作。 | |
DATE | 因数据库而异。 | 因数据库而异。 | |
GROUP BY | GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。 | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name; | |
HAVING | 在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。 HAVING 子句可以让我们筛选分组后的各组数据。 | SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value; | |
SQL Aggregate 函数 | SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。 | AVG() - 返回平均值 SELECT AVG(column_name) FROM table_name COUNT() - 返回行数 SELECT COUNT(column_name) FROM table_name; FIRST() - 返回第一个记录的值 SELECT FIRST(column_name) FROM table_name; LAST() - 返回最后一个记录的值 SELECT LAST(column_name) FROM table_name; MAX() - 返回最大值 SELECT MAX(column_name) FROM table_name; MIN() - 返回最小值 SELECT MIN(column_name) FROM table_name; SUM() - 返回总和 SELECT SUM(column_name) FROM table_name; | |
SQL Scalar 函数 | SQL Scalar 函数基于输入值,返回一个单一的值。 | UCASE() - 将某个字段转换为大写 SELECT UCASE(column_name) FROM table_name; LCASE() - 将某个字段转换为小写 SELECT LCASE(column_name) FROM table_name; MID() - 从某个文本字段提取字符 SELECT MID(column_name,start[,length]) FROM table_name; LEN() - 返回某个文本字段的长度 SELECT LEN(column_name) FROM table_name; ROUND() - 对某个数值字段进行指定小数位数的四舍五入 SELECT ROUND(column_name,decimals) FROM table_name; NOW() - 返回当前的系统日期和时间 SELECT NOW() FROM table_name; FORMAT() - 格式化某个字段的显示方式 SELECT FORMAT(column_name,format) FROM table_name; |
如果有遗漏,给博主指出哈