码迷,mamicode.com
首页 > 其他好文 > 详细

完整性约束

时间:2018-10-02 22:24:39      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:联合主键   sch   另一个   order   alt   之间   之一   table   arc   

详细内容见 https://www.cnblogs.com/geaozhang/p/6786105.html 和http://www.w3school.com.cn/sql/sql_primarykey.asp

1、primary key 主键约束

1.1 在创建表时创建主键约束

CREATE TABLE Persons(
Id_P int NOT NULL PRIMARY KEY,
Name varchar(255) NOT NULL,
Address varchar(255),
PRIMARY KEY (Id_P)
);

或者

CREATE TABLE Persons(
Id_P int NOT NULL PRIMARY KEY,
Name varchar(255) NOT NULL,
Address varchar(255),
);

如果需要为主键约束命名,以及为多个列定义主键约束(联合主键),
请使用下面的 SQL 语法:

CREATE TABLE Persons(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (Id_P,LastName)
);
即 
constraint 主键名 primary key(列名);
constraint 主键名 primary key(列名, 列名……);

1.2 给已存在的表添加主键

alter table Person
add primary key (Id_P);


为主键命名或创建联合主键时:
alter table Person
add constraint 主键名 primary key (Id_P, LastName);

1.3 删除表的主键

alter table 表名
drop primary key;

 

2、foreign key 外键约束

一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

FOREIGN KEY 约束用于预防破坏表之间连接的动作。

FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

2.1 在创建表时创建外键约束

CREATE TABLE Orders(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)
# Persons是主表,Orders是从表,"Orders" 表中的 "Id_P" 列是 "Orders" 表中的外键。

如果需要为外键命名,以及为多个列定义外键约束,请使用下面的 SQL 语法:
CREATE TABLE Orders(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
constraint 外键名 foreign key (Id_P)
references Persons(Id_P)
)

2.2 给已存在的表添加主键

alter table 表名
add foreign key (列名) references 主表名 (列名);

例:
ALTER TABLE Orders
ADD FOREIGN KEY (Id_P) 
REFERENCES Persons(Id_P);

当需要为外键命名或者为多个列定义外键时:
alter table 表名
add constraint 外键名 foreign key (列名) references 主表名 (列名);

例:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P);

 

1.3 删除表的主键

alter table 表名
drop foreign key 外键名;

例:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders;

 

修改约束

可以添加或删除约束,但是不能修改一个已有的约束。

ALTER [IGNORE] TABLE tbl_name
   ADD [CONSTRAINT [symbol]] PRIMARY KEY(col_name,...)
  |ADD [CONSTRAINT [symbol]] UNIQUE (col_name,...)
  |ADD [CONSTRAINT [symbol]] FOREIGN KEY (col_name,...)
    References parent_table(col_name)
  |DROP PRIMARY KEY
  |DROP FOREIGN KEY fk_symbo
  |DROP {INDEX|KEY} index_name   --删除唯一性约束

 

完整性约束

标签:联合主键   sch   另一个   order   alt   之间   之一   table   arc   

原文地址:https://www.cnblogs.com/tashawu1993/p/9737875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!