90 lines
1.9 KiB
Markdown
90 lines
1.9 KiB
Markdown
|
---
|
|||
|
title: SQL CHECK Constraint
|
|||
|
localeTitle: SQL CHECK约束
|
|||
|
---
|
|||
|
CHECK约束用于限制可以放在列中的值范围。
|
|||
|
|
|||
|
如果在单个列上定义CHECK约束,则它仅允许此列的某些值。
|
|||
|
|
|||
|
如果在表上定义CHECK约束,它可以根据行中其他列中的值限制某些列中的值。
|
|||
|
|
|||
|
### SQL CHECK CREATE TABLE
|
|||
|
|
|||
|
创建“Persons”表时,以下SQL在“Age”列上创建CHECK约束。 CHECK约束确保您不能拥有18岁以下的任何人:
|
|||
|
|
|||
|
**MySQL的:**
|
|||
|
|
|||
|
```sql
|
|||
|
CREATE TABLE Persons (
|
|||
|
ID int NOT NULL,
|
|||
|
LastName varchar(255) NOT NULL,
|
|||
|
FirstName varchar(255),
|
|||
|
Age int,
|
|||
|
CHECK (Age>=18)
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
**SQL Server / Oracle / MS Access:**
|
|||
|
|
|||
|
```sql
|
|||
|
CREATE TABLE Persons (
|
|||
|
ID int NOT NULL,
|
|||
|
LastName varchar(255) NOT NULL,
|
|||
|
FirstName varchar(255),
|
|||
|
Age int CHECK (Age>=18)
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
要允许命名CHECK约束,并在多列上定义CHECK约束,请使用以下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,
|
|||
|
City varchar(255),
|
|||
|
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
|
|||
|
);
|
|||
|
```
|
|||
|
|
|||
|
### SQL CHECK ALTER TABLE
|
|||
|
|
|||
|
要在已创建表时在“Age”列上创建CHECK约束,请使用以下SQL:
|
|||
|
|
|||
|
**MySQL / SQL Server / Oracle / MS Access:**
|
|||
|
|
|||
|
```sql
|
|||
|
ALTER TABLE Persons
|
|||
|
ADD CHECK (Age>=18);
|
|||
|
```
|
|||
|
|
|||
|
要允许命名CHECK约束,并在多列上定义CHECK约束,请使用以下SQL语法:
|
|||
|
|
|||
|
**MySQL / SQL Server / Oracle / MS Access:**
|
|||
|
|
|||
|
```sql
|
|||
|
ALTER TABLE Persons
|
|||
|
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
|
|||
|
```
|
|||
|
|
|||
|
### DROP一个CHECK约束
|
|||
|
|
|||
|
要删除CHECK约束,请使用以下SQL:
|
|||
|
|
|||
|
**SQL Server / Oracle / MS Access:**
|
|||
|
|
|||
|
```sql
|
|||
|
ALTER TABLE Persons
|
|||
|
DROP CONSTRAINT CHK_PersonAge;
|
|||
|
```
|
|||
|
|
|||
|
**MySQL的:**
|
|||
|
|
|||
|
```sql
|
|||
|
ALTER TABLE Persons
|
|||
|
DROP CHECK CHK_PersonAge;
|
|||
|
|
|||
|
```
|