SQL FOREIGN KEY 约束

SQL FOREIGN KEY 约束
一个表中的FOREIGN KEY 指向另一个表中的PRIMARY KEY。
通过外键我们创建两张表:
PHONE表

PHONENUMBERPHONETYPEYEAR
16955685923Android2015
16955685967Android2013
16955895967Iphone2017
16955893867Iphone2017

STAFF表

IDNUMBERNAMEPHONENUMBER
KEC231HENRY0116955895967
KEC241HENRY0216955685967
KEC531HENRY0316955685923

请注意,”STAFF”中的”PHONENUMBER”列指向”PHONE”表中的 “PHONENUMBER”列。
“PHONE”表中的 “PHONENUMBER”列是”PHONE”表中PRIMARY KEY。”STAFF” 表中的”PHONENUMBER”列是”STAFF”表中的 FOREIGN KEY。
FOREIGN KEY约束用于预防破坏表之间连接的动作。
FOREIGN KEY约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。


SQL FOREIGN KEY CONSTRAINT ON CREATE TABLE
在 “STAFF” 表创建时为 “PHONENUMBER ” 列创建 FOREIGN KEY:
MySQL

CREATE TABLE STAFF(IDNUMBER VARCHAR2(20) NOT NULL,NAME VARCHAR2(20) NOT NULL,PHONENUMBER NUMBER(11) NOT NULL,PRIMARY KEY(IDNUMBER),FOREIGN KEY(PHONENUMBER) REFERENCES PHONE(PHONENUMBER));

SQL Server / Oracle / MS Access

CREATE TABLE STAFF(IDNUMBER VARCHAR2(20) NOT NULL PRIMARY KEY,NAME VARCHAR2(20) NOT NULL,PHONENUMBER NUMBER(11) NOT NULL FOREIGN KEY REFERENCES PHONE(PHONENUMBER));

如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束
MySQL / SQL Server / Oracle / MS Access

CREATE TABLE STAFF(IDNUMBER VARCHAR2(20) NOT NULL,NAME VARCHAR2(20) NOT NULL,PHONENUMBER NUMBER(11) NOT NULL,PRIMARY KEY(IDNUMBER),CONSTRAINT FKC FOREIGN KEY(PHONENUMBER) REFERENCES PHONE(PHONENUMBER));

SQL FOREIGN KEY CONSTRAINT ON ALTER TABLE
如果在 “STAFF” 表已存在的情况下为 “PHONENUMBER” 列创建 FOREIGN KEY 约束
MySQL / SQL Server / Oracle / MS Access

ALTER TABLE STAFF ADD  FOREIGN KEY(PHONENUMBER) REFERENCES PHONE(PHONENUMBER)

如果需要命名 FOREIGN KEY 约束,以及为多个列定义 FOREIGN KEY 约束
MySQL / SQL Server / Oracle / MS Access

ALTER TABLE STAFF ADD CONSTRAINT FKC FOREIGN KEY(PHONENUMBER) REFERENCES PHONE(PHONENUMBER)

撤销 FOREIGN KEY 约束
如需撤销 FOREIGN KEY 约束
MySQL

ALTER TABLE STAFF 
DROP FOREIGN KEY FKC 

SQL Server / Oracle / MS Access

ALTER TABLE STAFF 
DROP CONSTRAINT FKC 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值