83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: SQL CHECK Constraint
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The CHECK constraint is used to limit the value range that can be placed in a column.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you define a CHECK constraint on a single column it allows only certain values for this column.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								If you define a CHECK constraint on a table it can limit the values in certain columns based on values in other columns in the row.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### SQL CHECK on CREATE TABLE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The following SQL creates a CHECK constraint on the "Age" column when the "Persons" table is created. The CHECK constraint ensures that you can not have any person below 18 years:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**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)
							 | 
						||
| 
								 | 
							
								);
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To allow naming of a CHECK constraint, and for defining a CHECK constraint on multiple columns, use the following SQL syntax:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**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 on ALTER TABLE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To create a CHECK constraint on the "Age" column when the table is already created, use the following SQL:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**MySQL / SQL Server / Oracle / MS Access:**
							 | 
						||
| 
								 | 
							
								```sql
							 | 
						||
| 
								 | 
							
								ALTER TABLE Persons
							 | 
						||
| 
								 | 
							
								ADD CHECK (Age>=18);
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To allow naming of a CHECK constraint, and for defining a CHECK constraint on multiple columns, use the following SQL syntax:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**MySQL / SQL Server / Oracle / MS Access:**
							 | 
						||
| 
								 | 
							
								```sql
							 | 
						||
| 
								 | 
							
								ALTER TABLE Persons
							 | 
						||
| 
								 | 
							
								ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								### DROP a CHECK Constraint
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								To drop a CHECK constraint, use the following SQL:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**SQL Server / Oracle / MS Access:**
							 | 
						||
| 
								 | 
							
								```sql
							 | 
						||
| 
								 | 
							
								ALTER TABLE Persons
							 | 
						||
| 
								 | 
							
								DROP CONSTRAINT CHK_PersonAge;
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								**MySQL:**
							 | 
						||
| 
								 | 
							
								```sql
							 | 
						||
| 
								 | 
							
								ALTER TABLE Persons
							 | 
						||
| 
								 | 
							
								DROP CHECK CHK_PersonAge; 
							 | 
						||
| 
								 | 
							
								```
							 |