目录
SQL 关键字
SQL INSERT INTO 关键字
INSERT INTO
SQL INSERT INTO SELECT 关键字
INSERT INTO SELECT
SQL IS NULL 关键字
IS NULL
SQL IS NOT NULL 关键字
IS NOT NULL
SQL JOIN 关键字
INNER JOIN
LEFT JOIN
RIGHT JOIN
FULL OUTER JOIN
SQL LIKE 关键字
LIKE
SQL SELECT TOP、LIMIT 和 ROWNUM 关键字
SELECT TOP, LIMIT and ROWNUM
SQL NOT 关键字
NOT
SQL NOT NULL 关键字
NOT NULL
SQL OR 关键字
OR
SQL ORDER BY 关键字
ORDER BY
ASC
DESC
SQL PRIMARY KEY 关键字
PRIMARY KEY
创建表上的 SQL 主键
ALTER TABLE 上的 SQL 主键
删除主键约束
SQL SELECT 关键字
SELECT
SQL SELECT INTO 关键字
SELECT INTO
SQL SET 关键字
SET
SQL TABLE 关键字
CREATE TABLE
使用另一个表创建表
ALTER TABLE
DROP TABLE
TRUNCATE TABLE
SQL UNION 和 UNION ALL 关键字
UNION
UNION ALL
SQL UNIQUE 关键字
UNIQUE
CREATE TABLE 上的 SQL UNIQUE 约束
ALTER TABLE 上的 SQL UNIQUE 约束
删除唯一约束
SQL UPDATE 关键字
UPDATE
SQL VALUES 关键字
VALUES
SQL VIEW 关键字
CREATE VIEW
查询视图
创建或替换视图
删除视图
SQL WHERE 关键字
SELECT
关键字 | 描述 |
---|---|
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 | 过滤结果集以仅包含满足指定条件的记录 |
INSERT INTO 命令用于在表中插入新行。
以下 SQL 在 "Customers" 表中插入一条新记录:
【实例】
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
下面的 SQL 将插入一条新记录,但只在"CustomerName"、"City"和"Country"列中插入数据 (CustomerID 将自动更新):
【实例】
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
INSERT INTO SELECT 命令从一个表中复制数据并将其插入到另一个表中。
以下 SQL 将"供应商"复制到"客户"(未填充数据的列将包含 NULL):
【实例】
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
以下 SQL 将"供应商"复制到"客户"中(填充所有列):
【实例】
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
以下 SQL 仅将"Customers"供应商复制到"客户"表中:
【实例】
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';
IS NULL 命令用于测试空值(NULL 值)。
以下 SQL 列出了 "Address" 字段中具有 NULL 值的所有客户:
【实例】
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NULL;
注: NULL 值不同于零值或包含空格的字段。 具有 NULL 值的字段是在创建记录期间留空的字段! 始终使用 IS NULL 来查找 NULL 值。
IS NOT NULL 命令用于测试非空值(NOT NULL 值)。
以下 SQL 列出了 "Address" 字段中有值的所有客户:
【实例】
SELECT CustomerName, ContactName, Address
FROM Customers
WHERE Address IS NOT NULL;
INNER JOIN 命令返回两个表中具有匹配值的行。
以下 SQL 选择所有带有客户信息的订单:
【实例】
SELECT Orders.OrderID, Customers.CustomerName
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
注: 只要列之间存在匹配项,INNER JOIN 关键字就会从两个表中选择所有行。 如果"Orders"表中存在与"Customers"不匹配的记录,这些订单将不会显示!
以下 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 命令返回左表中的所有行,以及右表中匹配的行。 如果没有匹配,则从右侧开始,结果为 NULL。
以下 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 命令返回右表的所有行,以及左表的匹配记录。 当没有匹配时,结果从左侧开始为 NULL。
以下 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 命令在左表或右表中存在匹配时返回所有行。
以下 SQL 语句选择所有客户和所有订单:
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
FULL OUTER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;
注: FULL OUTER JOIN 关键字返回左表(客户)中的所有行,以及右表中的所有行 表(订单)。 如果"客户"中有行与"订单"不匹配,或者"订单"中有行与"客户"不匹配,这些行也会被列出。
LIKE
命令用于 WHERE 子句中搜索列中的指定模式。
LIKE
可以使用两个通配符:
以下 SQL 选择 CustomerName 以"a"开头的所有客户:
【实例】
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%';
以下 SQL 选择 CustomerName 以"a"结尾的所有客户:
【实例】
SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
以下 SQL 选择所有具有"or"的 CustomerName 的客户:
【实例】
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';
以下 SQL 语句选择 CustomerName 以"a"开头且长度至少为 3 个字符的所有客户:
【实例】
SELECT * FROM Customers
WHERE CustomerName LIKE 'a_%_%';
SELECT TOP命令用于指定要返回的记录数。
注: 并非所有数据库系统都支持 SELECT TOP。 MySQL 使用 LIMIT,Oracle 使用 ROWNUM。
以下 SQL 语句从"客户"表中选择前三个记录:
【实例】
SELECT TOP 3 * FROM Customers;
以下 SQL 语句显示了使用 LIMIT 子句的等效示例:
【实例】
SELECT * FROM Customers
LIMIT 3;
以下 SQL 语句显示了使用 ROWNUM 的等效示例:
【实例】
SELECT * FROM Customers
WHERE ROWNUM <= 3;
NOT 命令与 WHERE 一起使用,仅包含条件不成立的行。
以下 SQL 语句从"客户"中选择所有国家/地区不是"Germany"的字段:
【实例】
SELECT * FROM Customers
WHERE NOT Country='Germany';
NOT NULL 约束强制列不接受 NULL 值,这意味着您不能在不向该字段添加值的情况下插入或更新记录。
以下 SQL 确保 "ID", "LastName", 和 "FirstName" 列不会接受 NULL 值:
【实例】
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
当 "Persons" 表已经创建时,以下 SQL 在 "Age" 列上创建一个 NOT NULL 约束:
ALTER TABLE Persons
MODIFY Age int NOT NULL;
OR 命令与 WHERE 一起使用以包含任一条件为真的行。
以下 SQL 语句从"客户"中选择城市为"柏林"或城市为"慕尼黑"的所有字段:
【实例】
SELECT * FROM Customers
WHERE City='Berlin' OR City='München';
ORDER BY命令用于对结果集进行升序或降序排序。
ORDER BY 命令默认按升序对结果集进行排序。 要按降序对记录进行排序,请使用 DESC 关键字。
以下 SQL 语句选择"客户"表中的所有列,按 "CustomerName" 列排序:
【实例】
SELECT * FROM Customers
ORDER BY CustomerName;
ASC命令用于对返回的数据进行升序排序。
以下 SQL 语句选择"客户"表中的所有列,按 "CustomerName" 列排序:
【实例】
SELECT * FROM Customers
ORDER BY CustomerName ASC;
DESC命令用于对返回的数据进行降序排序。
以下 SQL 语句从"客户"表中选择所有列,按 "CustomerName" 列降序排序:
【实例】
SELECT * FROM Customers
ORDER BY CustomerName DESC;
PRIMARY KEY 约束唯一标识表中的每条记录。
一张表只能有一个主键,可以由一个或多个字段组成。
以下 SQL 在创建 "Persons" 表时在 "ID" 列上创建一个 PRIMARY KEY:
【MySQL】
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】
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】
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)组成。
在"ID"上创建 PRIMARY KEY 约束; 当表已经创建列时,使用以下 SQL:
【MySQL / SQL Server / Oracle / MS Access】
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
要允许命名 PRIMARY KEY 约束并在多个列上定义 PRIMARY KEY 约束,请使用以下 SQL 语法:
【MySQL / SQL Server / Oracle / MS Access】
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
注: 如果您使用 ALTER TABLE 语句添加主键,则必须已将主键列声明为不包含 NULL 值(首次创建表时)。
要删除 PRIMARY KEY 约束,请使用以下 SQL:
【MySQL】
ALTER TABLE Persons
DROP PRIMARY KEY;
【SQL Server / Oracle / MS Access】
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
SELECT 命令用于从数据库中选择数据。 返回的数据存储在一个结果表中,称为结果集。
以下 SQL 语句从"客户"表中选择"客户名称"和"城市"列:
【实例】
SELECT CustomerName, City FROM Customers;
以下 SQL 语句从"客户"表中选择所有列:
【实例】
SELECT * FROM Customers;
SELECT INTO 命令从一个表中复制数据并将其插入到一个新表中。
以下 SQL 语句创建客户的备份副本:
SELECT * INTO CustomersBackup2017
FROM Customers;
以下 SQL 语句使用 IN 子句将表复制到另一个数据库的新表中:
SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'
FROM Customers;
以下 SQL 语句仅将几列复制到新表中:
SELECT CustomerName, ContactName INTO CustomersBackup2017
FROM Customers;
以下 SQL 语句仅将德国客户复制到新表中:
SELECT * INTO CustomersGermany
FROM Customers
WHERE Country = 'Germany';
以下 SQL 语句将数据从多个表复制到一个新表中:
SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2017
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
SET 命令与 UPDATE 一起使用,以指定应该在表中更新哪些列和值。
以下 SQL 使用新的 ContactName 和更新第一个客户 (CustomerID = 1):
【实例】
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
以下 SQL 会将 Country 为"Mexico"的所有记录的 "ContactName" 字段更新为"Juan":
【实例】
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';
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)
);
也可以使用 CREATE TABLE 创建现有表的副本。
以下 SQL 创建一个名为 "TestTables" 的新表(它是 "Customers" 表的副本):
【实例】
CREATE TABLE TestTable AS
SELECT customername, contactname
FROM customers;
ALTER TABLE 命令添加、删除或修改表中的列。
ALTER TABLE 命令还可以添加和删除表中的各种约束。
以下 SQL 将 "Email" 列添加到 "Customers" 表:
【实例】
ALTER TABLE Customers
ADD Email varchar(255);
以下 SQL 从 "Customers" 表中删除 "Email" 列:
【实例】
ALTER TABLE Customers
DROP COLUMN Email;
DROP TABLE 命令删除数据库中的一个表。
以下SQL删除表 "Shippers":
【实例】
DROP TABLE Shippers;
注:在删除表之前要小心。 删除表会导致表中存储的所有信息丢失!
TRUNCATE TABLE 命令删除表内的数据,但不删除表本身。
以下 SQL 截断表 "Categories":
【实例】
TRUNCATE TABLE Categories;
UNION 命令组合两个或多个 SELECT 语句的结果集(仅不同的值)
以下 SQL 语句从"Customers"和"Suppliers"表中返回城市(仅不同的值):
【实例】
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
UNION ALL 命令组合两个或多个 SELECT 语句的结果集(允许重复值)。
以下 SQL 语句从"Customers"和"Suppliers"表中返回城市(也有重复值):
【实例】
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
UNIQUE 约束确保列中的所有值都是唯一的。
以下 SQL 在创建 "Persons" 表时在 "ID" 列上创建一个 UNIQUE 约束:
【SQL Server / Oracle / MS Access】
CREATE TABLE Persons (
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
【MySQL】
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】
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);
要在已创建表时在 "ID" 列上创建 UNIQUE 约束,请使用以下 SQL:
【MySQL / SQL Server / Oracle / MS Access】
ALTER TABLE Persons
ADD UNIQUE (ID);
要命名一个 UNIQUE 约束,并在多个列上定义一个 UNIQUE 约束,请使用以下 SQL 语法:
【MySQL / SQL Server / Oracle / MS Access】
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
要删除 UNIQUE 约束,请使用以下 SQL:
【MySQL】
ALTER TABLE Persons
DROP INDEX UC_Person;
【SQL Server / Oracle / MS Access】
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
UPDATE 命令用于更新表中现有的行。
以下 SQL 语句将第一个客户 (CustomerID = 1) 更新为一个新联系人和一个新城市。
【实例】
UPDATE Customers
SET ContactName = 'Alfred Schmidt', City= 'Frankfurt'
WHERE CustomerID = 1;
以下 SQL 语句会将所有国家/地区为"Mexico"的记录的联系人姓名更新为"Juan":
【实例】
UPDATE Customers
SET ContactName='Juan'
WHERE Country='Mexico';
注:更新表中的记录时要小心! 注意 UPDATE 语句中的 WHERE 子句。 WHERE 子句指定应该更新哪些记录。 如果省略 WHERE 子句,表中的所有记录都会被更新!
VALUES 命令指定 INSERT INTO 语句的值。
以下 SQL 在 "Customers" 表中插入一条新记录:
【实例】
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
以下SQL会插入一条新记录,但只在 "CustomerName", "City", 和 "Country" 列插入数据(CustomerID会自动更新):
【实例】
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
在 SQL 中,视图是基于 SQL 语句结果集的虚拟表。
CREATE VIEW 命令创建一个视图。
以下 SQL 创建一个视图,用于选择来自巴西的所有客户:
【实例】
CREATE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = "Brazil";
我们可以这样查询上面的视图:
【实例】
SELECT * FROM [Brazil Customers];
CREATE OR REPLACE VIEW 命令更新视图。
以下 SQL 将 "City" 列添加到 "Brazil Customers" 视图:
【实例】
CREATE OR REPLACE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = "Brazil";
DROP VIEW 命令删除视图。
以下 SQL 删除 "Brazil Customers" 视图:
【实例】
DROP VIEW [Brazil Customers];
WHERE 命令过滤结果集以仅包含满足指定条件的记录。
以下 SQL 语句从"Customers"表中选择"Mexico"中的所有客户:
【实例】
SELECT * FROM Customers
WHERE Country='Mexico';
SQL 需要在文本值周围加上单引号(大多数数据库系统也允许使用双引号)。
但是,数字字段不应用引号引起来:
【实例】
SELECT * FROM Customers
WHERE CustomerID=1;
注: WHERE 子句不仅用在 SELECT 语句中,它也用在 UPDATE、DELETE 语句等中!
可以在 WHERE 子句中使用以下运算符:
运算符 | 描述 |
---|---|
= | 相等 |
<> | 不相等。 注释: 在某些版本的 SQL 中,此运算符可能写为 != |
> | 大于 |
< | 小 |
>= | 大于等于 |
<= | 小于或等于 |
BETWEEN | 一定范围内 |
LIKE | 搜索模式 |
IN | 为一列指定多个可能的值 |