1.SQL SELECT TOP, LIMIT, ROWNUM 子句
SQL Server / MS Access 语法
SELECT TOP number|percent column_name(s)
FROM table_name;
MySQL 语法
SELECT column_name(s)
FROM table_name
LIMIT number;
Oracle 语法
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;
2.SQL 通配符
通配符描述例子%替代 0 个或多个字符 -- 选取 url 以字母 "https" 开始的所有记录 SELECT * FROM Websites WHERE url LIKE 'https%'; _替代一个字符 -- 选取 name 以一个任意字符开始,然后是 "oogle" 的所有记录 SELECT * FROM Websites WHERE name LIKE '_oogle'; [charlist] 字符列中的任何单一字符 -- MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式 -- 选取 name 以 "G"、"F" 或 "s" 开始的所有记录 SELECT * FROM Websites WHERE name REGEXP '^[GFs]'; [^charlist] 或 [!charlist] 不在字符列中的任何单一字符 -- 选取 name 不以 A 到 H 字母开头的记录 SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
3.SQL 连接(JOIN)
SQL INNER JOIN
INNER JOIN 关键字在表中存在至少一个匹配时返回行。
SELECT column_name(s)
FROM table1
(INNER) JOIN table2
ON table1.column_name=table2.column_name;
SQL LEFT JOIN
LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
LEFT (OUTER) JOIN table2
ON table1.column_name=table2.column_name;
注释:
在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。
SQL RIGHT JOIN
RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SELECT column_name(s)
FROM table1
RIGHT (OUTER) JOIN table2
ON table1.column_name=table2.column_name;
注释:
在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。
SQL 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;
4.SQL UNION
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
-- 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
5.SQL SELECT INTO
以从一个表复制信息到另一个表(包括表结构)
SELECT *
INTO
newtable
[IN
externaldb
]
FROM
table1;
SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;
MySQL 数据库不支持 SELECT ... INTO 语句,但支持 INSERT INTO ... SELECT 。 当然你可以使用以下语句来拷贝表结构及数据:
CREATE TABLE 新表 SELECT * FROM 旧表
6. SQL INSERT INTO SELECT
从一个表A复制信息到另一个表B(不包括表结构,表B必须已经存在)
INSERT INTO table2
SELECT * FROM table1;
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;
7.SQL CREATE INDEX
更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。
-- 加UNIQUE为建立唯一索引
CREATE (UNIQUE) INDEX index_name
ON table_name (column_name)
8.SQL 视图(Views)
视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据。
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition
9.SQL GROUP BY
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
10.SQL 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;
11.SQL Date 函数
http://www.runoob.com/sql/sql-dates.html
12.SQL 通用数据类型
http://www.runoob.com/sql/sql-datatypes-general.html
合自:http://www.runoob.com/sql/sql-tutorial.html