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