SQL 关键字参考手册(一)

目录

SQL 关键字

SQL ADD 关键字

ADD

SQL ADD CONSTRAINT 关键字

ADD CONSTRAINT

SQL ALTER 关键字

ALTER TABLE

ALTER COLUMN

SQL ALTER COLUMN 关键字

ALTER COLUMN

SQL ALTER TABLE 关键字

ALTER TABLE

SQL ALL 关键字

ALL

SQL AND 关键字

AND

SQL ANY 关键字

ANY

SQL AS 关键字

AS

列的别名

表格别名

SQL ASC 关键字

ASC

SQL BACKUP DATABASE 关键字

BACKUP DATABASE

SQL BETWEEN 关键字

BETWEEN

SQL CASE 关键字

CASE

SQL CHECK 关键字

CHECK

SQL CHECK on CREATE TABLE

SQL CHECK on ALTER TABLE

DROP a CHECK Constraint

SQL COLUMN 关键字

ALTER COLUMN

DROP COLUMN

SQL CONSTRAINT 关键字

ADD CONSTRAINT

DROP CONSTRAINT

删除唯一约束

删除主键约束

删除外键约束

删除一个检查约束

SQL CREATE 关键字

CREATE DATABASE

CREATE TABLE

使用另一个表创建表

CREATE INDEX

CREATE UNIQUE INDEX

CREATE VIEW

CREATE OR REPLACE VIEW

查询视图

CREATE PROCEDURE

SQL CREATE DATABASE 关键字

CREATE DATABASE

SQL CREATE INDEX 关键字

CREATE INDEX

SQL CREATE OR REPLACE VIEW 关键字

CREATE OR REPLACE VIEW

查询视图


SQL 关键字

关键字 描述
ADD 在现有表中添加一列
ADD CONSTRAINT 在创建表后添加约束
ALTER 添加、删除或修改表中的列,或更改表中列的数据类型
ALTER COLUMN 更改表中列的数据类型
ALTER TABLE 添加、删除或修改表中的列
ALL 如果所有子查询值都满足条件,则返回true
AND 仅包含两个条件都为真的行
ANY 如果任何子查询值满足条件,则返回true
AS 用别名重命名列或表
ASC 对结果集进行升序排序
BACKUP DATABASE 创建现有数据库的备份
BETWEEN 选择给定范围内的值
CASE 根据条件创建不同的输出
CHECK 限制可以放在列中的值的约束
COLUMN 更改列的数据类型或删除表中的列
CONSTRAINT 添加或删除约束
CREATE 创建数据库、索引、视图、表或过程
CREATE DATABASE 创建一个新的 SQL 数据库
CREATE INDEX 在表上创建索引(允许重复值)
CREATE OR REPLACE VIEW 更新视图
CREATE TABLE 在数据库中创建一个新表
CREATE PROCEDURE 创建一个存储过程
CREATE UNIQUE INDEX 在表上创建唯一索引(无重复值)
CREATE VIEW 根据 SELECT 语句的结果集创建视图
DATABASE 创建或删除 SQL 数据库
DEFAULT 创建或删除 SQL 数据库
DELETE 从表中删除行
DESC 对结果集进行降序排序
DISTINCT 只选择不同的(不同的)值
DROP 删除列、约束、数据库、索引、表或视图
DROP COLUMN 删除表中的一列
DROP CONSTRAINT 删除 UNIQUE、PRIMARY KEY、FOREIGN KEY 或 CHECK 约束
DROP DATABASE 删除现有的 SQL 数据库
DROP DEFAULT 删除一个 DEFAULT 约束
DROP INDEX 删除表中的索引
DROP TABLE 删除数据库中的现有表
DROP VIEW 删除视图
EXEC 执行存储过程
EXISTS 测试子查询中是否存在任何记录
FOREIGN KEY 用于将两个表链接在一起的键的约束
FROM 指定从哪个表中选择或删除数据
FULL OUTER JOIN 当左表或右表匹配时返回所有行
GROUP BY 对结果集进行分组(与聚合函数一起使用:COUNT、MAX、MIN、SUM、AVG)
HAVING 用聚合函数代替 WHERE
IN 允许您在 WHERE 子句中指定多个值
INDEX 在表中创建或删除索引
INNER JOIN 返回两个表中具有匹配值的行
INSERT INTO 在表格中插入新行
INSERT INTO SELECT 将数据从一个表复制到另一个表中
IS NULL 空值测试
IS NOT NULL 测试非空值
JOIN 连接表格
LEFT JOIN 返回左表中的所有行,以及右表中匹配的行
LIKE 在列中搜索指定模式
LIMIT 指定要在结果集中返回的记录数
NOT 仅包含条件不成立的行
NOT NULL 强制列不接受 NULL 值的约束
OR 包括任一条件为真的行
ORDER BY 按升序或降序对结果集进行排序
OUTER JOIN 当左表或右表匹配时返回所有行
PRIMARY KEY 唯一标识数据库表中每条记录的约束
PROCEDURE 一个存储过程
RIGHT JOIN 返回右表中的所有行,以及左表中匹配的行
ROWNUM 指定要在结果集中返回的记录数
SELECT 从数据库中选择数据
SELECT DISTINCT 只选择不同的(不同的)值
SELECT INTO 将数据从一个表复制到一个新表中
SELECT TOP 指定要在结果集中返回的记录数
SET 指定应该在表中更新哪些列和值
TABLE 创建表,或添加、删除、修改表中的列,或删除表或表中的数据
TOP 指定要在结果集中返回的记录数
TRUNCATE TABLE 删除表内的数据,但不删除表本身
UNION 组合两个或多个 SELECT 语句的结果集(仅不同的值)
UNION ALL 组合两个或多个 SELECT 语句的结果集(允许重复值)
UNIQUE 确保列中所有值唯一的约束
UPDATE 更新表中的现有行
VALUES 指定 INSERT INTO 语句的值
VIEW 创建、更新或删除视图
WHERE 过滤结果集以仅包含满足指定条件的记录

SQL ADD 关键字

ADD

ADD 命令用于在现有表中添加列。

以下 SQL 将 "Email" 列添加到 "Customers" 表中:

【实例】

ALTER TABLE Customers
ADD Email varchar(255);

SQL ADD CONSTRAINT 关键字

ADD CONSTRAINT

ADD CONSTRAINT命令用于在表已经创建后创建约束。

下面的 SQL 添加了一个名为"PK_Person"的约束。 这是对多个列(ID 和 LastName)的 PRIMARY KEY 约束:

【实例】

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

SQL ALTER 关键字

ALTER TABLE

ALTER TABLE 命令添加、删除或修改表中的列。

ALTER TABLE 命令还可以添加和删除表中的各种约束。

以下 SQL 将 "Email" 列添加到 "Customers" 表:

【实例】

ALTER TABLE Customers
ADD Email varchar(255);

以下 SQL 从 "Customers" 表中删除 "Email" 列:

【实例】

ALTER TABLE Customers
DROP COLUMN Email;

ALTER COLUMN

ALTER COLUMN 命令用于更改表中列的数据类型。

下面的 SQL 将 "BirthDate" 表中名为 "Employees" 的列的数据类型更改为类型 year:

【实例】

ALTER TABLE Employees
ALTER COLUMN BirthDate year;

SQL ALTER COLUMN 关键字

ALTER COLUMN

ALTER COLUMN命令用于改变表中某列的数据类型。

下面的SQL将"BirthDate"表中"BirthDate"列的数据类型改为年份:

【实例】

ALTER TABLE Employees
ALTER COLUMN BirthDate year;

SQL ALTER TABLE 关键字

ALTER TABLE

ALTER TABLE 命令添加、删除或修改表中的列。

ALTER TABLE 命令还可以添加和删除表中的各种约束。

以下 SQL 将 "Email" 列添加到 "Customers" 表中:

【实例】

ALTER TABLE Customers
ADD Email varchar(255);

以下 SQL 从 "Customers" 表中删除 "Email" 列:

【实例】

ALTER TABLE Customers
DROP COLUMN Email;

SQL ALL 关键字

ALL

ALL 如果所有子查询值都满足条件,则返回 true。

如果 OrderDetails 表中所有记录的数量 = 10,则以下 SQL 语句返回 TRUE 并列出产品名称:

【实例】

SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

SQL AND 关键字

AND

AND 命令与 WHERE 一起使用,仅包含两个条件都为真的行。

以下 SQL 语句从"Customers"中选择国家为"Germany"且城市为"Berlin"的所有字段:

【实例】

SELECT * FROM Customers
WHERE Country='Germany' AND City='Berlin';

SQL ANY 关键字

ANY

ANY 如果任何子查询值满足条件,则返回 true。

如果在 OrderDetails 表中找到 quantity = 10 的任何记录,则以下 SQL 语句返回 TRUE 并列出产品名称:

【实例】

SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);

如果在 OrderDetails 表中找到数量为 > 99 的任何记录,则以下 SQL 语句返回 TRUE 并列出产品名称:

【实例】

SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);

SQL AS 关键字

AS

AS 命令用于用别名重命名列或表。

别名仅在查询期间存在。

列的别名

以下 SQL 语句创建两个别名,一个用于 CustomerID 列,一个用于 CustomerName 列:

【实例】

SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;

以下 SQL 语句创建两个别名。 请注意,如果别名包含空格,则需要双引号或方括号:

【实例】

SELECT CustomerName AS Customer, ContactName AS [Contact Person]
FROM Customers;

以下 SQL 语句创建一个名为"Address"的别名,该别名组合了四列(Address、PostalCode、City 和 Country):

【实例】

SELECT CustomerName, Address + ', ' + PostalCode + ' ' + City + ', ' + Country AS Address
FROM Customers;

注:要让上面的 SQL 语句在 MySQL 中工作,请使用以下命令:

SELECT CustomerName, CONCAT(Address,', ',PostalCode,', ',City,', ',Country) AS Address
FROM Customers;

表格别名

以下 SQL 语句选择来自 CustomerID=4 的客户的所有订单(Around the Horn)。 我们使用"Customers"和"Orders"表,并分别赋予它们"c"和"o"的表别名(这里我们使用别名使SQL更短):

【实例】

SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;

SQL ASC 关键字

ASC

ASC命令用于对返回的数据进行升序排序。

下面的 SQL 语句选择 "Customers" 表中的所有列,按 "CustomerName" 列排序:

【实例】

SELECT * FROM Customers
ORDER BY CustomerName ASC;

SQL BACKUP DATABASE 关键字

BACKUP DATABASE

BACKUP DATABASE 命令在 SQL Server 中用于创建现有 SQL 数据库的完整备份。

以下SQL语句将现有数据库 "testDB" 完整备份到D盘:

【实例】

BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak';

注: 始终将数据库备份到与实际数据库不同的驱动器。 如果您遇到磁盘崩溃,您的备份文件不会与数据库一起丢失。

差异备份仅备份自上次完整数据库备份以来已更改的数据库部分。

以下 SQL 语句创建数据库 "testDB" 的差异备份:

【实例】

BACKUP DATABASE testDB
TO DISK = 'D:\backups\testDB.bak'
WITH DIFFERENTIAL;

注:差异备份减少了备份时间(因为只备份了更改)。

SQL BETWEEN 关键字

BETWEEN

BETWEEN 命令用于选择给定范围内的值。 这些值可以是数字、文本或日期。

BETWEEN 命令是包容性的:包括开始值和结束值。

以下 SQL 语句选择价格在 10 到 20 之间的所有产品:

【实例】

SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;

要显示上例范围之外的产品,请使用 NOT BETWEEN:

【实例】

SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;

以下 SQL 语句选择 ProductName BETWEEN 'Carnarvon Tigers' 和 'Mozzarella di Giovanni' 的所有产品:

【实例】

SELECT * FROM Products
WHERE ProductName BETWEEN 'Carnarvon Tigers' AND 'Mozzarella di Giovanni'
ORDER BY ProductName;

SQL CASE 关键字

CASE

CASE命令用于根据条件创建不同的输出。

下面的SQL会遍历几个条件,当满足指定条件时返回一个值:

【实例】

SELECT OrderID, Quantity,
CASE
    WHEN Quantity > 30 THEN "The quantity is greater than 30"
    WHEN Quantity = 30 THEN "The quantity is 30"
    ELSE "The quantity is under 30"
END
FROM OrderDetails;

以下 SQL 将按城市对客户进行排序。 但是,如果 City 为 NULL,则按 Country 排序:

【实例】

SELECT CustomerName, City, Country
FROM Customers
ORDER BY
(CASE
    WHEN City IS NULL THEN Country
    ELSE City
END);

SQL CHECK 关键字

CHECK

CHECK 约束限制了可以放在列中的值。

SQL CHECK on CREATE TABLE

下面的 SQL 在 "Age" 列上创建一个 CHECK 约束,当"Persons" 表已创建。 CHECK 约束确保您不能有任何低于 18 岁的人:

【MySQL】

CREATE TABLE Persons (
    Age int,
    CHECK (Age>=18)
);

【SQL Server / Oracle / MS Access】

CREATE TABLE Persons (
    Age int CHECK (Age>=18)
);

要允许命名 CHECK 约束,并在多个列上定义 CHECK 约束,请使用以下 SQL 语法:

【MySQL / SQL Server / Oracle / MS Access】

CREATE TABLE Persons (
    Age int,
    City varchar(255),
    CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);

SQL CHECK on ALTER TABLE

要在表已创建时在 "Age" 列上创建 CHECK 约束,请使用以下 SQL:

【MySQL / SQL Server / Oracle / MS Access】

ALTER TABLE Persons
ADD CHECK (Age>=18);

要允许命名 CHECK 约束,并在多个列上定义 CHECK 约束,请使用以下 SQL 语法:

【MySQL / SQL Server / Oracle / MS Access】

ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

DROP a CHECK Constraint

要删除 CHECK 约束,请使用以下 SQL:

【SQL Server / Oracle / MS Access】

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

【MySQL】

ALTER TABLE Persons
DROP CHECK CHK_PersonAge;

SQL COLUMN 关键字

ALTER COLUMN

ALTER COLUMN命令用于改变表中某列的数据类型。

下面的SQL将 "Employees" 表中 "BirthDate" 列的数据类型改为年份:

【实例】

ALTER TABLE Employees
ALTER COLUMN BirthDate year;

DROP COLUMN

DROP COLUMN 命令用于删除现有表中的列。

以下 SQL 从 "Customers" 表中删除 "ContactName" 列:

【实例】

ALTER TABLE Customers
DROP COLUMN ContactName;

SQL CONSTRAINT 关键字

ADD CONSTRAINT

ADD CONSTRAINT命令用于在表已经创建后创建约束。

以下 SQL 添加了一个名为 "PK_Person" 的约束,它是对多个列(ID 和 LastName)的 PRIMARY KEY 约束:

【实例】

ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

DROP CONSTRAINT

DROP CONSTRAINT 命令用于删除 UNIQUE、PRIMARY KEY、FOREIGN KEY 或 CHECK 约束。

删除唯一约束

要删除 UNIQUE 约束,请使用以下 SQL:

【SQL Server / Oracle / MS Access】

ALTER TABLE Persons
DROP CONSTRAINT UC_Person;

【MySQL】

ALTER TABLE Persons
DROP INDEX UC_Person;

删除主键约束

要删除 PRIMARY KEY 约束,请使用以下 SQL:

【SQL Server / Oracle / MS Access】

ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

【MySQL】

ALTER TABLE Persons
DROP PRIMARY KEY;

删除外键约束

要删除 FOREIGN KEY 约束,请使用以下 SQL:

【SQL Server / Oracle / MS Access】

ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;

【MySQL】

ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;

删除一个检查约束

要删除 CHECK 约束,请使用以下 SQL:

【SQL Server / Oracle / MS Access】

ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;

【MySQL】

ALTER TABLE Persons
DROP CHECK CHK_PersonAge;

SQL CREATE 关键字

CREATE DATABASE

CREATE DATABASE命令用来创建一个新的SQL数据库。

以下 SQL 创建一个名为"testDB"的数据库:

【实例】

CREATE DATABASE testDB;

注:在创建任何数据库之前,请确保您拥有管理员权限。 创建数据库后,您可以使用以下 SQL 命令在数据库列表中检查它:SHOW DATABASES;

CREATE TABLE

CREATE TABLE 命令在数据库中创建一个新表。

以下 SQL 创建一个名为"Persons"的表。 包含五列:PersonID、LastName、FirstName、Address 和 City:

【实例】

CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

使用另一个表创建表

以下 SQL 创建一个名为 "TestTables" 的新表(它是 "Customers" 表的两列的副本):

【实例】

CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;

CREATE INDEX

CREATE INDEX 命令用于在表中创建索引(允许重复值)。

索引用于非常快速地从数据库中检索数据。 用户看不到索引,它们只是用来加速搜索/查询。

下面的 SQL 在 "Persons" 表的 "LastName" 列上创建一个名为 "idx_lastname" 的索引:

CREATE INDEX idx_lastname
ON Persons (LastName);

如果您想为列组合创建索引,可以在括号内列出列名,用逗号分隔:

CREATE INDEX idx_pname
ON Persons (LastName, FirstName);

注: 创建索引的语法因数据库而异。 因此:检查在数据库中创建索引的语法。使用索引更新表比不更新表需要更多时间(因为索引也需要更新)。 因此,仅在将经常搜索的列上创建索引。

CREATE UNIQUE INDEX

CREATE UNIQUE INDEX 命令在表上创建唯一索引(不允许重复值)

以下 SQL 在 "Persons" 表的 "PersonID" 列上创建一个名为 "uidx_pid" 的索引:

CREATE UNIQUE INDEX uidx_pid
ON Persons (PersonID);

CREATE VIEW

CREATE VIEW 命令创建一个视图。

视图是基于 SQL 语句结果集的虚拟表。

以下 SQL 创建一个视图,用于选择来自巴西的所有客户:

【实例】

CREATE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = "Brazil";

CREATE OR REPLACE VIEW

CREATE OR REPLACE VIEW 命令更新视图。

以下 SQL 将 "City" 列添加到 "Brazil Customers" 视图:

【实例】

CREATE OR REPLACE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = "Brazil";

查询视图

我们可以这样查询上面的视图:

【实例】

SELECT * FROM [Brazil Customers];

CREATE PROCEDURE

CREATE PROCEDURE命令用于创建存储过程。

存储过程是可以保存的准备好的 SQL 代码,因此代码可以反复重用。

以下 SQL 创建一个名为"SelectAllCustomers"的存储过程,该过程从"Customers"表中选择所有记录:

【实例】

CREATE PROCEDURE SelectAllCustomers
AS
SELECT * FROM Customers
GO;

执行上面的存储过程如下:

【实例】

EXEC SelectAllCustomers;

SQL CREATE DATABASE 关键字

CREATE DATABASE

CREATE DATABASE命令用来创建一个新的SQL数据库。

以下 SQL 创建一个名为"testDB"的数据库:

【实例】

CREATE DATABASE testDB;

注:在创建任何数据库之前,请确保您拥有管理员权限。 创建数据库后,您可以使用以下 SQL 命令在数据库列表中检查它:SHOW DATABASES;

SQL CREATE INDEX 关键字

CREATE INDEX

CREATE INDEX 命令用于在表中创建索引(允许重复值)。

索引用于非常快速地从数据库中检索数据。 用户看不到索引,它们只是用来加速搜索/查询。

下面的 SQL 在 "Persons" 表的 "LastName" 列上创建一个名为 "idx_lastname" 的索引:

CREATE INDEX idx_lastname
ON Persons (LastName);

如果您想为列组合创建索引,可以在括号内列出列名,用逗号分隔:

CREATE INDEX idx_pname
ON Persons (LastName, FirstName);

注: 创建索引的语法因数据库而异。 因此:检查在数据库中创建索引的语法。 使用索引更新表比不更新表需要更多时间(因为索引也需要更新)。 因此,仅在将经常搜索的列上创建索引。

SQL CREATE OR REPLACE VIEW 关键字

CREATE OR REPLACE VIEW

CREATE OR REPLACE VIEW 命令更新视图。

以下 SQL 将 "City" 列添加到 "Brazil Customers" 视图:

【实例】

CREATE OR REPLACE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = "Brazil";

查询视图

我们可以这样查询上面的视图:

【实例】

SELECT * FROM [Brazil Customers];

你可能感兴趣的:(SQL系列教程,SQL,教程,资料,笔记)