SQL高级应用--约束(NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT)

一、SQL约束

  约束用于限制加入标的数据的类型

  可以在创建表的时候规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE语句)

  主要探讨以下的几种约束:

1) NOT NULL

2) UNIQUE

3) PRIMARY KEY

4) FOREIGN KEY

5) CHECK

6) DEFAULT

 

二、SQL NOT NULL 约束

  NOT NULL约束强制列不接受 NULL值

  NOT NULL约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新纪录或更新记录

  下面的SQL语句强制 Id_P和 LastName 列不接受 NULL 值

CREATE TABLE Persons
(
     Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City  varchar(255)
)

  

 

三、SQL UNIQUE 约束

  UNIQUE 约束唯一标识数据库表中的每条记录

  UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证

  PRIMARY KEY 拥有自动定义的 UNIQUE 约束

  请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束

下面的SQL 在“Persons” 表创建时在“Id_P”列创建 UNIQUE约束:

  MySQL

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE(Id_P)
)

  SQL Server / Oracle / MS Access

CREATE TABLE Persons
(
    Id_P int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
)

  如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE约束,请使用下面的 SQL语法

CREATE TABLE Persons
(
    Id_P int NOT NULL,
    LastName  varchar(255) NOT NULL,
    FirstName  varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT uc_PersonID UNIQUE(Id_P, LastName)
)

 

当表已被创建,如需在 Id_P列创建 UNIQUE约束,请使用下列的SQL

  MySQL / SQL Server / Oracle / Ms Access

ALTER TABLE Persons
ADD UNIQUE(Id_P)

  如需命名 UNIQUE约束,并定义多个列的 UNIQUE约束,请使用下面的 SQL 语法

  MySQL / SQL Server / Oracle / MS Access

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE(Id_P, LastName)

 

撤销 UNIQUE约束

  如需撤销UNIQUE 约束,请使用下面的SQL:

  MySQL

ALTER TABLE Persons
DROP INDEX uc_PersonID

  SQL Server / Oracle / MS Access

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。