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