sql整理

xiaoxiao2021-02-28  113

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
转载请注明原文地址: https://www.6miu.com/read-68943.html

最新回复(0)