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; 
 | ||
| 
 | ||
| ``` |