DQL 外來鍵約束,級聯更新

2022-07-13 10:57:10 字數 4992 閱讀 5224

1

create

table emp (--

建立emp表

2 id int

primary

keyauto_increment,

3 name varchar(30

),4 age int

,5 dep_name varchar(30),--

部門名稱

6 dep_location varchar(30)--

部門位址7);

8--新增資料

9insert

into emp (name, age, dep_name, dep_location) values ('

張三', 20, '

研發部', '廣州'

);10

insert

into emp (name, age, dep_name, dep_location) values ('

李四', 21, '

研發部', '廣州'

);11

insert

into emp (name, age, dep_name, dep_location) values ('

王五', 20, '

研發部', '廣州'

);12

insert

into emp (name, age, dep_name, dep_location) values ('

老王', 20, '

銷售部', '深圳'

);13

insert

into emp (name, age, dep_name, dep_location) values ('

大王', 22, '

銷售部', '深圳'

);14

insert

into emp (name, age, dep_name, dep_location) values ('

小王', 18, '

銷售部', '深圳'

);15

16select

*from

emp;

1718

--建立部門表(id,dep_name,dep_location)

19--

一方,主表

20create

table

department(

21 id int

primary

keyauto_increment,

22 dep_name varchar(20

),23 dep_location varchar(20)24

);25

--建立員工表(id,name,age,dep_id)

26--

多方,從表

27create

table

employee(

28 id int

primary

keyauto_increment,

29 name varchar(20

),30 age int

,31 dep_id int

--外來鍵對應主表的主鍵32)

3334

--新增 2 個部門

35insert

into department values(null, '

研發部','

廣州'),(null, '

銷售部', '深圳'

);36

37--

新增員工,dep_id 表示員工所在的部門

38insert

into employee (name, age, dep_id) values ('

張三', 20, 1

);39

insert

into employee (name, age, dep_id) values ('

李四', 21, 1

);40

insert

into employee (name, age, dep_id) values ('

王五', 20, 1

);41

insert

into employee (name, age, dep_id) values ('

老王', 20, 2

);42

insert

into employee (name, age, dep_id) values ('

大王', 22, 2

);43

insert

into employee (name, age, dep_id) values ('

小王', 18, 2

);44

45select

*from

employee;

4647

select

*from

department;

4849

drop

table

department;

5051

drop

table

employee;

5253

--建立部門表(id,dep_name,dep_location)

54--

一方,主表

55create

table

department(

56 id int

primary

keyauto_increment,

57 dep_name varchar(20

),58 dep_location varchar(20)59

);60

--新增 2 個部門

61insert

into department values(null, '

研發部','

廣州'),(null, '

銷售部', '深圳'

);62

63--

建立從表 employee 並新增外來鍵約束 emp_depid_fk

64--

多方,從表

65create

table

employee(

66 id int

primary

keyauto_increment,

67 name varchar(20

),68 age int

,69 dep_id int, --

外來鍵對應主表的主鍵

70--

建立外來鍵約束

71constraint emp_dept_fk foreign

key (dep_id) references

department(id)72)

73--

正常新增資料

74insert

into employee (name, age, dep_id) values ('

張三', 20, 1

);75

insert

into employee (name, age, dep_id) values ('

李四', 21, 1

);76

insert

into employee (name, age, dep_id) values ('

王五', 20, 1

);77

insert

into employee (name, age, dep_id) values ('

老王', 20, 2

);78

insert

into employee (name, age, dep_id) values ('

大王', 22, 2

);79

insert

into employee (name, age, dep_id) values ('

小王', 18, 2

);80

81select

*from

employee;

8283

select

*from

department;

8485

--刪除外來鍵

8687

alter

table employee drop

foreign

keyemp_dept_fk;

8889

--新增外來鍵

90alter

table employee add

constraint emp_dept_fk foreign

key (dep_id) references

department(id);

9192

update employee set dep_id=

null

where dep_id=1;

9394

update employee set dep_id=

5where dep_id is

null;95

96update employee set dep_id=

1where dep_id=5;

9798

--新增外來鍵,設定級聯刪除

99alter

table employee add

constraint emp_dept_fk foreign

key (dep_id) references

department(id)

100on

delete

cascade

;101

102--

新增外來鍵,設定級聯更新

103alter

table employee add

constraint emp_dept_fk foreign

key (dep_id) references

department(id)

104on

update

cascade;

外來鍵約束 外來鍵級聯操作

建立db2資料庫 create database db2 使用db2資料庫 use db2 外來鍵約束 標準語法 constraint 外鍵名 foreign key 本表外來鍵列名 references 主表名 主表主鍵列名 建表時新增外來鍵約束 建立user使用者表 create table u...

主鍵自增長 外來鍵約束 級聯更新

1 自動增長 配合int型別的主鍵使用,自增後的id值取決於上一條 1 如果某一列是數值型別的,使用auto increment可以來完成值的自動增長 2 建立表時,新增自動增長 create table stu 3 刪除自動增長 alter table stu modify id int 4 新增...

MySQL外來鍵約束 級聯刪除和更新

外來鍵約束 什麼是外來鍵約束 一張表中的某個字段引用另乙個表的主鍵 主表 約束別人 副表 從表 使用別人的資料,被別人約束 建立部門表 create table department id int primary key auto increment,主鍵自增 dep name varchar 20...