数据库表约束
--SQL CHECK约束 --CHECK约束属性列内容的取值范围。如果对单列进行CHECK约束则只会对单列的取值有效。 --如果对表进行CHECK约束则对整张表的所有字段都进行限制。 --EG: 在创建PERSONS表示为ID_P列创建CHECK约束。此约束的约束范围为:ID_P列的取值范围不得小于0,要是大于0的整数。 --MYSQL创建语法: CREATE TABLE PERSONS( ID_P INT NOT NULL, FIRSTNAME VARCHAR(100), LASTNAME VARCHAR(200), ADDRESS VARCHAR(200), CITY CARCHAR(2OO), CHECK (ID_P>0) ); --SQL Server / Oracle / MS Access 语法: CREATE TABLE PERSONS( ID_P INT NOT NULL CHECK (ID_P>0), FIRSTNAME VARCHAR(100), LASTNAME VARCHAR(200), ADDRESS VARCHAR(200), CITY CARCHAR(2OO) );
--SQL NOT NULL非空约束 --NOT NULL约束会强制列不接受有NULL值存在。也就是说如果不向字段中添加值,就无法新增记录或修改记录。 --EG: CREATE TABLE [TABLE_NAME] ( [COLUMN_NAME] VARCHAR(100) NOT NULL )
--SQL UNIQUE约束 --UNIQUE约束限制了数据表中的数据的唯一性,也就是说只能出现一次。 --UNIQUE约束 和 PRIMARY KEY约束都有限制表数据唯一性的能力,但是PRIMARY KEY每张表中只能有一个,而UNIQUE约束可以出现多次。 --MYSQL创建语法: CREATE TABLE [TABLE_NAME] ( [COLUMN_NAME] IS NOT NULL , [COLUMN_NAME] NOT NULL , UNIQUE([COLUMN_NAME]) -- 对指定的[COLUMN_NAME]列进行UNIQUE约束。 ); --SQL Server / Oracle / MS Access 创建语法: CREATE TABLE [TABLE_NAME] ( [COLUMN_NAME] IS NOT NULL UNIQUE -- 对指定的[COLUMN_NAME]列进行UNIQUE约束。 ); --如果同时需要对多列进行UNIQUE约束,MySQL/SQL Server/Oracle/MS Access语法基本相同: CREATE TABLE [TABLE_NAME] ( CONSTRAINT UC_PERSONID UNIQUE ([COLUMN_NAMEA],[COLUMN_NAMEB],.....) -- 对指定的[COLUMN_NAME]列进行UNIQUE约束。 ); --如果数据表已经创建: ALTER TABLE [TABLE_NAME] ADD UNIQUE ([COLUMN_NAME]); --当然也有多列创建的语法: ALTER TABLE [TABLE_NAME] ADD CONSTRAINT UC_PERSONID UNIQUE ([COLUMN_NAMEA],[COLUMN_NAMEB],....); --撤销UNIQUE约束之MySQL语法: ALTER TABLE [TABLE_NAME] DROP INDEX UC_PERSONID; --SQL Server/Oracle/MS Access语法: ALTER TABLE [TABLE_NAME] DROP CONSTRAINT UC_PERSONID;
--SQL PRIMARY KEY约束 --SQL PRIMARY KEY约束了每条数据在数据表中的唯一性(主键值必须唯一,主键列不能有NULL值,每张表有且只能有一个PRIMARY KEY) --创建语法之MySQL: CREATE TABLE [TABLE_NAME] ( [COLUMN_NAME] NOT NULL, [COLUMN_NAME] IS NOT NULL , ...... PRIMARY KEY([COLUMN_NAME]) ); --创建语法之SQL Server/Oracle/MS Access: CREATE TABLE [TABLE_NAME] ( [COLUMN_NAME] NOT NULL PRIMARY KEY , [COLUMN_NAME] IS NOT NULL , ...... ) --如果需要进行多列的PRIMARY KEY约束基本上SQL都通过用(MySQL/SQL Server/Oracle/MS Access): CREATE TABLE [TABLE_NAME] ( CONSTRAINT PK_PERSONID PRIMARY KEY ([COLUMN_NAMEA],[COLUMN_NAMEB],.....) -- 对指定的[COLUMN_NAME]列进行PRIMARY KEY约束。 ); --如果数据表已经创建: ALTER TABLE [TABLE_NAME] ADD PRIMARY KEY ([COLUMN_NAME]); --当然也有多列创建的语法: ALTER TABLE [TABLE_NAME] ADD CONSTRAINT PK_PERSONID PRIMARY KEY ([COLUMN_NAMEA],[COLUMN_NAMEB],....); --撤销UNIQUE约束之MySQL语法: ALTER TABLE [TABLE_NAME] DROP PRIMARY KEY; --SQL Server/Oracle/MS Access语法: ALTER TABLE [TABLE_NAME] DROP CONSTRAINT PK_PERSONID;