SQL 高级

2018-08-28 14:03 更新

SQL 高级

SELECT TOP, LIMIT, ROWNUM

SQL SELECT TOP, LIMIT, ROWNUM [TOP LIMIT ROWNUM]

SQL SELECT TOP

SELECT TOP 子句用于指定要返回的记录数量。优于千条数据,大量数据查询影响性能。

SQL Server / MS Access

SELECT TOP number|percent column_name(s) FROM table_name WHERE condition;

MySQL 和 Oracle 中的 SQL SELECT TOP

MYSQL

SELECT column_name(s) FROM table_name WHERE condition LIMIT number;

Oracle

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;

SQL LIKE

WHERE子句中使用LIKE运算符来搜索列中的指定模式 "%"->百分号表示零个,一个或多个字符 "_"->下划线表示单个字符 [注意]MS Access使用问号(?)百分号和下划线可组合使用

LIKE

SELECT column1, column2, ... FROM table_name WHERE columnN LIKE pattern; [注意] OR AND 也可组合使用

SQL Wildcards[通配符]

MS Access和SQL Server中

[ charlist ] - 定义要匹配的字符的集合和范围 [^ charlist ]或[!charlist ] - 定义不匹配字符的集合和范围

SQL IN

SELECT column_name(s) FROM table_name WHERE column_name IN (value1, value2, ...); [注意]允许WHERE子句中指定多个值。多个OR条件的简写。

SQL BETWEEN

BETWEEN操作符用于选取介于两个值之间的数据范围内的值;值可以是数字,文本或日期,BETWEEN包括开始和结束值。 SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; [注意]BETWEEN 选取介于两个值之间可能存在[不包含边界 包含边界 半包含边界]

SQL 通用数据类型

数据类型定义了存储在列中的值的类型。 例如:CHARACTER(N) VARCHAR(N) ... [注意] 数据类型的定义在不同的数据库中的定义不一定相同。

SQL 语句快速参考

关键词:{ AND / OR ALTER TABLE AS (alias) BETWEEN CREATE DATABASE CREATE TABLE CREATE INDEX CREATE VIEW DELETE DROP DATABASE DROP INDEX DROP TABLE GROUP BY HAVING IN INSERT INTO INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN LIKE ORDER BY SELECT SELECT * SELECT DISTINCT SELECT INTO SELECT TOP TRUNCATE TABLE UNION UNION ALL UPDATE WHERE }

SQL JOIN[连接]

SQL JOIN 用于把来自两个或多个表的行结合起来。 [内连接]INNER JOIN:如果表中有至少一个匹配,则返回行 [左连接]LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行 [右连接]RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行 [全连接]FULL JOIN:只要其中一个表中存在匹配,则返回行

SQL INNER JOIN/JOIN[内连接]

SELECT column_name(s) FROM table1 INNER JOIN table2 ON table1.column_name = table2.column_name; [注]内部链接INNER JOIN关键字选择两个表中具有匹配值的记录。

SQL LEFT JOIN/LEFT OUTER JOIN[左连接]

SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_name=table2.column_name; [注]SQL左链接LEFT JOIN关键字返回左表(表1)中的所有行,即使在右表(表2)中没有匹配。如果在正确的表中没有匹配,结果是NULL。

SQL RIGHT JOIN/RIGHT OUTER JOIN[右连接]

SELECT column_name(s) FROM table1 RIGHT JOIN table2 ON table1.column_name = table2.column_name; [注]SQL右链接 RIGHT JOIN 关键字返回右表(table2)的所有行,即使在左表(table1)上没有匹配。如果左表没有匹配,则结果为NULL。

SQL FULL OUTER JOIN[完整外链接]

SELECT column_name(s) FROM table1 FULL OUTER JOIN table2 ON table1.column_name = table2.column_name; [注]当左(表1)或右(表2)表记录匹配时,FULL OUTER JOIN关键字将返回所有记录。返回所有结果集,导致数据量巨大。

SQL Self JOIN[自连接]

SELECT column_name(s) FROM table1 T1, table1 T2 WHERE condition; [注]自联接是一种常规联接,但表本身是连接的。“<>” 可表示自连接。

SQL UNION[合并查询]

UNION运算符用于组合两个或更多SELECT语句的结果集。

SQL UNION

SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;

SQL UNION ALL

SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2; [限制]UNION中的每个SELECT语句必须具有相同的列数,这些列也必须具有相似的数据类型,每个SELECT语句中的列也必须以相同的顺序排列。 [注意]默认情况下,UNION 运算符选择一个不同的值。如果允许重复值,请使用 UNION ALL。

SQL SELECT INTO

SELECT INTO 语句从一个表中复制数据,然后将数据插入到另一个新表中。

AS 别名使用

[AS 别名]将使用SELECT语句中定义的列名和类型创建新表。您可以使用AS子句来应用一个新名称。

空表建立

[创建空表]SELECT INTO 语句可以用于在另一种模式下创建一个新的空表。只需添加WHERE子句,使查询返回时没有数据. SELECT * INTO newtable FROM table1 WHERE 1=0;

SQL INSERT INTO SELECT[从表中查询复制数据至现有数据表中]

INSERT INTO table2 SELECT * FROM table1;

SQL 撤销索引、表以及数据库

DROP INDEX[删除索引]

MS Access 的 DROP INDEX

DROP INDEX index_name ON table_name

MS SQL Server 的 DROP INDEX

DROP INDEX table_name.index_name DB2/Oracle 的 DROP INDEX DROP INDEX index_name

MySQL 的 DROP INDEX

ALTER TABLE table_name DROP INDEX index_name

DROP TABLE[删除表]

DROP TABLE table_name

DROP DATABASE[删除数据库]

DROP DATABASE database_name

TRUNCATE TABLE[删除表中的数据,而不删除表]

TRUNCATE TABLE table_name

SQL CREATE DATABASE[创建数据库]

CREATE DATABASE dbname;

SQL CREATE TABLE[创建表单]

CREATE TABLE table_name ( column_name1 data_type(size), column_name2 data_type(size), column_name3 data_type(size), .... ); [注意]其中:参数说明 column_name 参数规定表中列的名称。 data_type 参数规定列的数据类型(例如 varchar、integer、decimal、date 等等)。 size 参数规定表中列的最大长度。

SQL ALTER TABLE[修改表单结构]

添加列

ALTER TABLE table_name ADD column_name datatype

删除列

ALTER TABLE table_name DROP COLUMN column_name [注意]某些数据库不支持

SQL Server / MS Access

ALTER TABLE table_name ALTER COLUMN column_name datatype

My SQL / Oracle

ALTER TABLE table_name MODIFY COLUMN column_name datatype

SQL AUTO INCREMENT[自增量]

MySQL

ID int NOT NULL AUTO_INCREMENT, PRIMARY KEY (ID)

SQL Server

ID int IDENTITY(1,1) PRIMARY KEY,

Access

ID Integer PRIMARY KEY AUTOINCREMENT,

Oracle[使用序列,才能自增]

CREATE SEQUENCE seq_person MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 10 [注意]nextval函数 需在添加记录时使用

SQL CREATE VIEW、REPLACE VIEW、 DROP VIEW[视图]

SQL CREATE VIEW 语句

CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition [注意]视图总是显示最新数据!每当用户查询视图时,数据库引擎就使用视图的 SQL 语句重新构建数据

SQL CREATE OR REPLACE VIEW 语法

CREATE OR REPLACE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition

SQL DROP VIEW 语法

DROP VIEW view_name

SQL Server 和 MySQL 中的 Date 函数

MySQL Date 函数

NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间的单独部分 DATE_ADD() 向日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔 DATEDIFF() 返回两个日期之间的天数 DATE_FORMAT() 用不同的格式显示日期/时间

SQL Server Date 函数

GETDATE() 返回当前的日期和时间 DATEPART() 返回日期/时间的单独部分 DATEADD() 在日期中添加或减去指定的时间间隔 DATEDIFF() 返回两个日期之间的时间 CONVERT() 用不同的格式显示日期/时间

SQL Date 数据类型

[注意]使用Date时,使用DATE可能会方便维护

MySQL 使用下列数据类型在数据库中存储日期或时间值:

DATE - 格式:YYYY-MM-DD DATETIME - 格式:YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS YEAR - 格式:YYYY 或 YY

SQL Server 使用下列数据类型在数据库中存储日期或时间值:

DATE - 格式:YYYY-MM-DD DATETIME - 格式:YYYY-MM-DD HH:MM:SS SMALLDATETIME - 格式:YYYY-MM-DD HH:MM:SS TIMESTAMP - 格式:唯一的数字

SQL NULL 值 - IS NULL 和 IS NOT NULL

SQL NULL 值

NULL 空值代表丢失的未知数据。 NULL 空值无法和space[空格]或0 比较.

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号