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