mysql primary unique foreign_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

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值