SQL 关键字参考手册(三)

目录

[SQL 关键字](#SQL 关键字)

[SQL INSERT INTO 关键字](#SQL INSERT INTO 关键字)

[INSERT INTO](#INSERT INTO)

[SQL INSERT INTO SELECT 关键字](#SQL INSERT INTO SELECT 关键字)

[INSERT INTO SELECT](#INSERT INTO SELECT)

[SQL IS NULL 关键字](#SQL IS NULL 关键字)

[IS NULL](#IS NULL)

[SQL IS NOT NULL 关键字](#SQL IS NOT NULL 关键字)

[IS NOT NULL](#IS NOT NULL)

[SQL JOIN 关键字](#SQL JOIN 关键字)

[INNER JOIN](#INNER JOIN)

[LEFT JOIN](#LEFT JOIN)

[RIGHT JOIN](#RIGHT JOIN)

[FULL OUTER JOIN](#FULL OUTER JOIN)

[SQL LIKE 关键字](#SQL LIKE 关键字)

LIKE

[SQL SELECT TOP、LIMIT 和 ROWNUM 关键字](#SQL SELECT TOP、LIMIT 和 ROWNUM 关键字)

[SELECT TOP, LIMIT and ROWNUM](#SELECT TOP, LIMIT and ROWNUM)

[SQL NOT 关键字](#SQL NOT 关键字)

NOT

[SQL NOT NULL 关键字](#SQL NOT NULL 关键字)

[NOT NULL](#NOT NULL)

[SQL OR 关键字](#SQL OR 关键字)

OR

[SQL ORDER BY 关键字](#SQL ORDER BY 关键字)

[ORDER BY](#ORDER BY)

ASC

DESC

[SQL PRIMARY KEY 关键字](#SQL PRIMARY KEY 关键字)

[PRIMARY KEY](#PRIMARY KEY)

[创建表上的 SQL 主键](#创建表上的 SQL 主键)

[ALTER TABLE 上的 SQL 主键](#ALTER TABLE 上的 SQL 主键)

删除主键约束

[SQL SELECT 关键字](#SQL SELECT 关键字)

SELECT

[SQL SELECT INTO 关键字](#SQL SELECT INTO 关键字)

[SELECT INTO](#SELECT INTO)

[SQL SET 关键字](#SQL SET 关键字)

SET

[SQL TABLE 关键字](#SQL TABLE 关键字)

[CREATE TABLE](#CREATE TABLE)

使用另一个表创建表

[ALTER TABLE](#ALTER TABLE)

[DROP TABLE](#DROP TABLE)

[TRUNCATE TABLE](#TRUNCATE TABLE)

[SQL UNION 和 UNION ALL 关键字](#SQL UNION 和 UNION ALL 关键字)

UNION

[UNION ALL](#UNION ALL)

[SQL UNIQUE 关键字](#SQL UNIQUE 关键字)

UNIQUE

[CREATE TABLE 上的 SQL UNIQUE 约束](#CREATE TABLE 上的 SQL UNIQUE 约束)

[ALTER TABLE 上的 SQL UNIQUE 约束](#ALTER TABLE 上的 SQL UNIQUE 约束)

删除唯一约束

[SQL UPDATE 关键字](#SQL UPDATE 关键字)

UPDATE

[SQL VALUES 关键字](#SQL VALUES 关键字)

VALUES

[SQL VIEW 关键字](#SQL VIEW 关键字)

[CREATE VIEW](#CREATE VIEW)

查询视图

创建或替换视图

删除视图

[SQL WHERE 关键字](#SQL WHERE 关键字)

SELECT


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 INSERT INTO 关键字

INSERT INTO

INSERT INTO 命令用于在表中插入新行。

以下 SQL 在 "Customers" 表中插入一条新记录:

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

下面的 SQL 将插入一条新记录,但只在"CustomerName"、"City"和"Country"列中插入数据 (CustomerID 将自动更新):

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

SQL INSERT INTO SELECT 关键字

INSERT INTO SELECT

INSERT INTO SELECT 命令从一个表中复制数据并将其插入到另一个表中。

以下 SQL 将"供应商"复制到"客户"(未填充数据的列将包含 NULL):

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;

以下 SQL 将"供应商"复制到"客户"中(填充所有列):

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;

以下 SQL 仅将"Customers"供应商复制到"客户"表中:

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';

SQL IS NULL 关键字

IS NULL

IS NULL 命令用于测试空值(NULL 值)。

以下 SQL 列出了 "Address" 字段中具有 NULL 值的所有客户:

【实例】

sql 复制代码
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;

注: NULL 值不同于零值或包含空格的字段。 具有 NULL 值的字段是在创建记录期间留空的字段! 始终使用 IS NULL 来查找 NULL 值。

SQL IS NOT NULL 关键字

IS NOT NULL

IS NOT NULL 命令用于测试非空值(NOT NULL 值)。

以下 SQL 列出了 "Address" 字段中有值的所有客户:

【实例】

sql 复制代码
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;

SQL JOIN 关键字

INNER JOIN

INNER JOIN 命令返回两个表中具有匹配值的行。

以下 SQL 选择所有带有客户信息的订单:

【实例】

sql 复制代码
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

注: 只要列之间存在匹配项,INNER JOIN 关键字就会从两个表中选择所有行。 如果"Orders"表中存在与"Customers"不匹配的记录,这些订单将不会显示!

以下 SQL 语句选择包含客户和发货人信息的所有订单:

【实例】

sql 复制代码
SELECT Orders.OrderID, Customers.CustomerName, Shippers.ShipperName
FROM ((Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID)
INNER JOIN Shippers ON Orders.ShipperID = Shippers.ShipperID);

LEFT JOIN

LEFT JOIN 命令返回左表中的所有行,以及右表中匹配的行。 如果没有匹配,则从右侧开始,结果为 NULL。

以下 SQL 将选择所有客户以及他们可能拥有的任何订单:

【实例】

sql 复制代码
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID
ORDER BY Customers.CustomerName;

注: LEFT JOIN 关键字返回左表 (Customers) 中的所有记录,即使右侧没有匹配项 表(订单)。

RIGHT JOIN

RIGHT JOIN 命令返回右表的所有行,以及左表的匹配记录。 当没有匹配时,结果从左侧开始为 NULL。

以下 SQL 将返回所有员工以及他们可能下的任何订单:

【实例】

sql 复制代码
SELECT Orders.OrderID, Employees.LastName, Employees.FirstName
FROM Orders
RIGHT JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
ORDER BY Orders.OrderID;

注: RIGHT JOIN 关键字返回右表 (Employees) 中的所有记录,即使左侧没有匹配项 表(订单)。

FULL OUTER JOIN

FULL OUTER JOIN 命令在左表或右表中存在匹配时返回所有行。

以下 SQL 语句选择所有客户和所有订单:

sql 复制代码
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

注: FULL OUTER JOIN 关键字返回左表(客户)中的所有行,以及右表中的所有行 表(订单)。 如果"客户"中有行与"订单"不匹配,或者"订单"中有行与"客户"不匹配,这些行也会被列出。

SQL LIKE 关键字

LIKE

LIKE 命令用于 WHERE 子句中搜索列中的指定模式。

LIKE 可以使用两个通配符:

  • % - 表示零个、一个或多个字符
  • _ - 表示单个字符(MS Access 使用问号 (?) 代替)

以下 SQL 选择 CustomerName 以"a"开头的所有客户:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';

以下 SQL 选择 CustomerName 以"a"结尾的所有客户:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';

以下 SQL 选择所有具有"or"的 CustomerName 的客户:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';

以下 SQL 语句选择 CustomerName 以"a"开头且长度至少为 3 个字符的所有客户:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE CustomerName LIKE 'a_%_%';

SQL SELECT TOP、LIMIT 和 ROWNUM 关键字

SELECT TOP, LIMIT and ROWNUM

SELECT TOP命令用于指定要返回的记录数。

注: 并非所有数据库系统都支持 SELECT TOP。 MySQL 使用 LIMIT,Oracle 使用 ROWNUM。

以下 SQL 语句从"客户"表中选择前三个记录:

【实例】

sql 复制代码
SELECT TOP 3 * FROM Customers;

以下 SQL 语句显示了使用 LIMIT 子句的等效示例:

【实例】

sql 复制代码
SELECT * FROM Customers
LIMIT 3;

以下 SQL 语句显示了使用 ROWNUM 的等效示例:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE ROWNUM <= 3;

SQL NOT 关键字

NOT

NOT 命令与 WHERE 一起使用,仅包含条件不成立的行。

以下 SQL 语句从"客户"中选择所有国家/地区不是"Germany"的字段:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE NOT Country='Germany';

SQL NOT NULL 关键字

NOT NULL

NOT NULL 约束强制列不接受 NULL 值,这意味着您不能在不向该字段添加值的情况下插入或更新记录。

以下 SQL 确保 "ID", "LastName", 和 "FirstName" 列不会接受 NULL 值:

【实例】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255) NOT NULL,
    Age int
);

当 "Persons" 表已经创建时,以下 SQL 在 "Age" 列上创建一个 NOT NULL 约束:

sql 复制代码
ALTER TABLE Persons
MODIFY Age int NOT NULL;

SQL OR 关键字

OR

OR 命令与 WHERE 一起使用以包含任一条件为真的行。

以下 SQL 语句从"客户"中选择城市为"柏林"或城市为"慕尼黑"的所有字段:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE City='Berlin' OR City='München';

SQL ORDER BY 关键字

ORDER BY

ORDER BY命令用于对结果集进行升序或降序排序。

ORDER BY 命令默认按升序对结果集进行排序。 要按降序对记录进行排序,请使用 DESC 关键字。

以下 SQL 语句选择"客户"表中的所有列,按 "CustomerName" 列排序:

【实例】

sql 复制代码
SELECT * FROM Customers
ORDER BY CustomerName;

ASC

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

以下 SQL 语句选择"客户"表中的所有列,按 "CustomerName" 列排序:

【实例】

sql 复制代码
SELECT * FROM Customers
ORDER BY CustomerName ASC;

DESC

DESC命令用于对返回的数据进行降序排序。

以下 SQL 语句从"客户"表中选择所有列,按 "CustomerName" 列降序排序:

【实例】

sql 复制代码
SELECT * FROM Customers
ORDER BY CustomerName DESC;

SQL PRIMARY KEY 关键字

PRIMARY KEY

PRIMARY KEY 约束唯一标识表中的每条记录。

一张表只能有一个主键,可以由一个或多个字段组成。

创建表上的 SQL 主键

以下 SQL 在创建 "Persons" 表时在 "ID" 列上创建一个 PRIMARY KEY:

【MySQL】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (ID)
);

【SQL Server / Oracle / MS Access】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

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

【MySQL / SQL Server / Oracle / MS Access】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);

注: 在上面的示例中,只有一个主键 (PK_Person)。 但是,主键的 VALUE 由两列(ID + LastName)组成。

ALTER TABLE 上的 SQL 主键

在"ID"上创建 PRIMARY KEY 约束; 当表已经创建列时,使用以下 SQL:

【MySQL / SQL Server / Oracle / MS Access】

sql 复制代码
ALTER TABLE Persons
ADD PRIMARY KEY (ID);

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

【MySQL / SQL Server / Oracle / MS Access】

sql 复制代码
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

注: 如果您使用 ALTER TABLE 语句添加主键,则必须已将主键列声明为不包含 NULL 值(首次创建表时)。

删除主键约束

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

【MySQL】

sql 复制代码
ALTER TABLE Persons
DROP PRIMARY KEY;

【SQL Server / Oracle / MS Access】

sql 复制代码
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;

SQL SELECT 关键字

SELECT

SELECT 命令用于从数据库中选择数据。 返回的数据存储在一个结果表中,称为结果集。

以下 SQL 语句从"客户"表中选择"客户名称"和"城市"列:

【实例】

sql 复制代码
SELECT CustomerName, City FROM Customers;

以下 SQL 语句从"客户"表中选择所有列:

【实例】

sql 复制代码
SELECT * FROM Customers;

SQL SELECT INTO 关键字

SELECT INTO

SELECT INTO 命令从一个表中复制数据并将其插入到一个新表中。

以下 SQL 语句创建客户的备份副本:

sql 复制代码
SELECT * INTO CustomersBackup2017
FROM Customers;

以下 SQL 语句使用 IN 子句将表复制到另一个数据库的新表中:

sql 复制代码
SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'
FROM Customers;

以下 SQL 语句仅将几列复制到新表中:

sql 复制代码
SELECT CustomerName, ContactName INTO CustomersBackup2017
FROM Customers;

以下 SQL 语句仅将德国客户复制到新表中:

sql 复制代码
SELECT * INTO CustomersGermany
FROM Customers
WHERE Country = 'Germany';

以下 SQL 语句将数据从多个表复制到一个新表中:

sql 复制代码
SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2017
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;

SQL SET 关键字

SET

SET 命令与 UPDATE 一起使用,以指定应该在表中更新哪些列和值。

以下 SQL 使用新的 ContactName 更新第一个客户 (CustomerID = 1):

【实例】

sql 复制代码
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

以下 SQL 会将 Country 为"Mexico"的所有记录的 "ContactName" 字段更新为"Juan":

【实例】

sql 复制代码
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

SQL TABLE 关键字

CREATE TABLE

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

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

【实例】

sql 复制代码
CREATE TABLE Persons (
    PersonID int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
);

使用另一个表创建表

也可以使用 CREATE TABLE 创建现有表的副本。

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

【实例】

sql 复制代码
CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;

ALTER TABLE

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

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

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

【实例】

sql 复制代码
ALTER TABLE Customers
ADD Email varchar(255);

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

【实例】

sql 复制代码
ALTER TABLE Customers
DROP COLUMN Email;

DROP TABLE

DROP TABLE 命令删除数据库中的一个表。

以下SQL删除表 "Shippers":

【实例】

sql 复制代码
DROP TABLE Shippers;

注:在删除表之前要小心。 删除表会导致表中存储的所有信息丢失!

TRUNCATE TABLE

TRUNCATE TABLE 命令删除表内的数据,但不删除表本身。

以下 SQL 截断表 "Categories":

【实例】

sql 复制代码
TRUNCATE TABLE Categories;

SQL UNION 和 UNION ALL 关键字

UNION

UNION 命令组合两个或多个 SELECT 语句的结果集(仅不同的值)

以下 SQL 语句从"Customers"和"Suppliers"表中返回城市(仅不同的值):

【实例】

sql 复制代码
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;

UNION ALL

UNION ALL 命令组合两个或多个 SELECT 语句的结果集(允许重复值)。

以下 SQL 语句从"Customers"和"Suppliers"表中返回城市(也有重复值):

【实例】

sql 复制代码
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;

SQL UNIQUE 关键字

UNIQUE

UNIQUE 约束确保列中的所有值都是唯一的。

CREATE TABLE 上的 SQL UNIQUE 约束

以下 SQL 在创建 "Persons" 表时在 "ID" 列上创建一个 UNIQUE 约束:

【SQL Server / Oracle / MS Access】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int
);

【MySQL】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    UNIQUE (ID)
);

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

【MySQL / SQL Server / Oracle / MS Access】

sql 复制代码
CREATE TABLE Persons (
    ID int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    CONSTRAINT UC_Person UNIQUE (ID,LastName)
);

ALTER TABLE 上的 SQL UNIQUE 约束

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

【MySQL / SQL Server / Oracle / MS Access】

sql 复制代码
ALTER TABLE Persons
ADD UNIQUE (ID);

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

【MySQL / SQL Server / Oracle / MS Access】

sql 复制代码
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

删除唯一约束

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

【MySQL】

sql 复制代码
ALTER TABLE Persons
DROP INDEX UC_Person;

【SQL Server / Oracle / MS Access】

sql 复制代码
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;

SQL UPDATE 关键字

UPDATE

UPDATE 命令用于更新表中现有的行。

以下 SQL 语句将第一个客户 (CustomerID = 1) 更新为一个新联系人一个新城市。

【实例】

sql 复制代码
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;

以下 SQL 语句会将所有国家/地区为"Mexico"的记录的联系人姓名更新为"Juan":

【实例】

sql 复制代码
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';

注:更新表中的记录时要小心! 注意 UPDATE 语句中的 WHERE 子句。 WHERE 子句指定应该更新哪些记录。 如果省略 WHERE 子句,表中的所有记录都会被更新!

SQL VALUES 关键字

VALUES

VALUES 命令指定 INSERT INTO 语句的值。

以下 SQL 在 "Customers" 表中插入一条新记录:

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

以下SQL会插入一条新记录,但只在 "CustomerName", "City", 和 "Country" 列插入数据(CustomerID会自动更新):

【实例】

sql 复制代码
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

SQL VIEW 关键字

CREATE VIEW

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

CREATE VIEW 命令创建一个视图。

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

【实例】

sql 复制代码
CREATE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = "Brazil";

查询视图

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

【实例】

sql 复制代码
SELECT * FROM [Brazil Customers];

创建或替换视图

CREATE OR REPLACE VIEW 命令更新视图。

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

【实例】

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

删除视图

DROP VIEW 命令删除视图。

以下 SQL 删除 "Brazil Customers" 视图:

【实例】

sql 复制代码
DROP VIEW [Brazil Customers];

SQL WHERE 关键字

SELECT

WHERE 命令过滤结果集以仅包含满足指定条件的记录。

以下 SQL 语句从"Customers"表中选择"Mexico"中的所有客户:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE Country='Mexico';

SQL 需要在文本值周围加上单引号(大多数数据库系统也允许使用双引号)。

但是,数字字段不应用引号引起来:

【实例】

sql 复制代码
SELECT * FROM Customers
WHERE CustomerID=1;

注: WHERE 子句不仅用在 SELECT 语句中,它也用在 UPDATE、DELETE 语句等中!

可以在 WHERE 子句中使用以下运算符:

运算符 描述
= 相等
<> 不相等。 注释: 在某些版本的 SQL 中,此运算符可能写为 !=
> 大于
<
>= 大于等于
<= 小于或等于
BETWEEN 一定范围内
LIKE 搜索模式
IN 为一列指定多个可能的值
相关推荐
Hacker_LaoYi2 小时前
【渗透技术总结】SQL手工注入总结
数据库·sql
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍06-基于子查询的SQL注入(Subquery-Based SQL Injection)
数据库·sql·安全·web安全·漏洞挖掘·hw
冷眼看人间恩怨3 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
独行soc3 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
清平乐的技术专栏4 小时前
Hive SQL 查询所有函数
hive·hadoop·sql
cmdch20179 小时前
Mybatis加密解密查询操作(sql前),where要传入加密后的字段时遇到的问题
数据库·sql·mybatis
Hejjon9 小时前
SpringBoot 整合 SQLite 数据库
笔记
程序猿小柒9 小时前
【Spark】Spark SQL执行计划-精简版
大数据·sql·spark
听见~11 小时前
SQL优化
数据库·sql
西洼工作室11 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式