Mysql之多表設計之外鍵約束

2021-08-02 18:56:15 字數 2691 閱讀 1793

1.1.1.1 約束的作用

約束是用來保證資料的完整性。

1.1.1.2 單錶約束

l 主鍵約束

l 唯一約束

l 非空約束

1.1.1.3 多表約束

l 外來鍵約束:用來保證資料完整性(多表之間)。

1.1.2.1 建立乙個部門表

create table dept(

did int primary key auto_increment,

dname varchar(20)

);

insert into dept values (null,'市場部

');insert into dept values (null,'人事部

');insert into dept values (null,'教研部

');

1.1.2.2 建立乙個員工表

create table employee(

eid int primary key auto_increment,

ename varchar(20),

salary double,

birthday date,

*** varchar(10),

dno int

);

insert into employee values (null,'張三

',8000,'1988-09-01','

男',3);

insert into employee values (null,'李四

',9000,'1988-09-01','

男',1);

insert into employee values (null,'王五

',6000,'1988-09-01','

男',2);

insert into employee values (null,'趙六

',10000,'1988-09-01','

男',3);

insert into employee values (null,'孫七

',10000,'1988-09-01','

男',1);

1.1.2.3 刪除其中的某個部門(是否可以)

l 檢視資料

l 向員工表中插入一條記錄(沒有部門)

insert into employee values (null,'田八

',10000,'1988-09-01','

男',null);

l 刪除乙個人事部

delete from dept where did = 2;

向剛才做的這兩個操作(插入乙個沒有部門的員工,刪除乙個帶有員工的部門)。這種情況都是不應該發生。這個時候需要在多表之間新增外來鍵約束。

1.1.3.1 在員工表上新增外來鍵

alter table employee add foreign key (dno) references dept(did);

1.1.3.2 設定外來鍵為非空

alter table employee modify dno int not null;

MySQL之外鍵約束

mysql有兩種常用的引擎型別 myisam和innodb。目前只有innodb引擎型別支援外來鍵約束。innodb中外鍵約束定義的語法如下 constraint symbol foreign key index name index col name,referencestbl name inde...

MySQL之外鍵約束

mysql有兩種常用的引擎型別 myisam和innodb。目前只有innodb引擎型別支援外來鍵約束。innodb中外鍵約束定義的語法如下 constraint symbol foreign key index name index col name,references tbl name ind...

MySQL之外鍵約束

mysql有兩種常用的引擎型別 myisam和innodb。目前只有innodb引擎型別支援外來鍵約束。innodb中外鍵約束定義的語法如下 constraint symbol foreign key index name index col name,references tbl name ind...