目录
[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 关键字)
[SQL SELECT TOP、LIMIT 和 ROWNUM 关键字](#SQL SELECT TOP、LIMIT 和 ROWNUM 关键字)
[SELECT TOP, LIMIT and ROWNUM](#SELECT TOP, LIMIT and ROWNUM)
[SQL NOT 关键字](#SQL NOT 关键字)
[SQL NOT NULL 关键字](#SQL NOT NULL 关键字)
[NOT NULL](#NOT NULL)
[SQL OR 关键字](#SQL OR 关键字)
[SQL ORDER BY 关键字](#SQL ORDER BY 关键字)
[ORDER BY](#ORDER BY)
[SQL PRIMARY KEY 关键字](#SQL PRIMARY KEY 关键字)
[PRIMARY KEY](#PRIMARY KEY)
[创建表上的 SQL 主键](#创建表上的 SQL 主键)
[ALTER TABLE 上的 SQL 主键](#ALTER TABLE 上的 SQL 主键)
[SQL SELECT 关键字](#SQL SELECT 关键字)
[SQL SELECT INTO 关键字](#SQL SELECT INTO 关键字)
[SELECT INTO](#SELECT INTO)
[SQL SET 关键字](#SQL 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 ALL](#UNION ALL)
[SQL UNIQUE 关键字](#SQL UNIQUE 关键字)
[CREATE TABLE 上的 SQL UNIQUE 约束](#CREATE TABLE 上的 SQL UNIQUE 约束)
[ALTER TABLE 上的 SQL UNIQUE 约束](#ALTER TABLE 上的 SQL UNIQUE 约束)
[SQL UPDATE 关键字](#SQL UPDATE 关键字)
[SQL VALUES 关键字](#SQL VALUES 关键字)
[SQL VIEW 关键字](#SQL VIEW 关键字)
[CREATE VIEW](#CREATE VIEW)
[SQL WHERE 关键字](#SQL WHERE 关键字)
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 | 为一列指定多个可能的值 |