数据库表约束

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

 

posted @ 2019-07-06 22:01  我需要一杯水  阅读(721)  评论(0编辑  收藏  举报