目录
SQL 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];