数据库外键练习

①一对多关系练习

要求:

部门表:有部门编号、部门名称、以及部门介绍

员工表:有员工编号、员工姓名、员工薪资以及员工对应部门的编号

# 部门表
create table 部门表(
	id int primary key auto_increment,
    部门 varchar(32),
    部门信息 varchar(64)    
);

# 员工表
create table 员工表(
	id int primary key auto_increment,  # 主键
    员工姓名 varchar(32),
    薪资 int,
    部门编号 int,
    foreign key(部门编号) references 部门表(id)
);

信息录入

# 部门表信息录入
insert into 部门表(部门,部门信息) values('销售部','产品推销');
insert into 部门表(部门,部门信息) values('技术部','技术开发');
insert into 部门表(部门,部门信息) values('管理部','行政管理');
select * from 部门表;
+----+----------+-------------+
| id | 部门      | 部门信息     |
+----+----------+-------------+
|  1 | 销售部    | 产品推销     |
|  2 | 技术部    | 技术开发     |
|  3 | 管理部    | 行政管理     |
+----+----------+-------------+

# 员工表信息录入
insert into 员工表(员工姓名,薪资,部门编号) values('吴煌',8000,1);
insert into 员工表(员工姓名,薪资,部门编号) values('柯圣风',7500,1);
insert into 员工表(员工姓名,薪资,部门编号) values('陈源',13000,2);
insert into 员工表(员工姓名,薪资,部门编号) values('龙康志',15000,3);
select * from 员工表;
+----+------------+--------+------------+
| id | 员工姓名     | 薪资   | 部门编号    |
+----+-------------+--------+-----------+
|  1 | 吴煌         |  8000 |          1 |
|  2 | 柯圣风       |  7500 | 	       1 |
|  3 | 陈源         | 13000 |          2 |
|  4 | 龙康志       |  15000 |         3 |
+----+--------------+-------+-----------+

②多对多关系练习

要求:

图书表:有书籍编号、书名、以及价格

作者表:有作者编号、作者名字、以及性别

关系表:

# 书籍表
create table 书籍表(
	id int primary key auto_increment,
    书名 varchar(32),
    价格 float(8,2) 
);

# 作者表
create table 作者表(
	id int primary key auto_increment,
    作者 varchar(32),
    性别 varchar(4) 
);

# 关系表
create table 书籍关系表(
	id int primary key auto_increment,
    作者id int,
    foreign key(作者id) references 作者表(id)
    on update cascade
    on delete cascade,
    书籍id int,
    foreign key(书籍id) references 书籍表(id)
    on update cascade  # 级联更新
    on delete cascade  # 级联删除
);

信息录入

# 书籍表信息录入
insert into 书籍表(书名,价格) values('Python开发',298);
insert into 书籍表(书名,价格) values('Go语言入门',88.88);
insert into 书籍表(书名,价格) values('程序员的自我修养',178);
insert into 书籍表(书名,价格) values('头发的养护秘籍',666.66);
select * from 书籍表;
+----+----------------------+--------+
| id | 书名                  | 价格   |
+----+----------------------+--------+
|  1 | Python开发            | 298.00 |
|  2 | Go语言入门             |  88.88 |
|  3 | 程序员的自我修养        | 178.00 |
|  4 | 头发的养护秘籍          | 666.66 |
+----+-----------------------+--------+

# 作者表信息录入
insert into 作者表(作者,性别) values('潘森','男');
insert into 作者表(作者,性别) values('古哥','男');
insert into 作者表(作者,性别) values('静静','女');
select * from 作者表;
+----+--------+-------+
| id | 作者   | 性别   |
+----+--------+-------+
|  1 | 潘森   | 男     |
|  2 | 古哥   | 男     |
|  3 | 静静   | 女     |
+----+--------+-------+

# 关系表信息录入
insert into 书籍关系表(作者id,书籍id) values(1,1);
insert into 书籍关系表(作者id,书籍id) values(2,2);
insert into 书籍关系表(作者id,书籍id) values(3,3),(3,4);
select * from 书籍关系表;
+----+----------+----------+
| id | 作者id    | 书籍id   |
+----+----------+----------+
|  1 |        1 |        1 |
|  2 |        2 |        2 |
|  3 |        3 |        3 |
|  4 |        3 |        4 |
+----+----------+----------+

③一对一关系练习

要求:

用户表:有用户编号、用户名、用户年龄、关联用户详情的编号

用户详情表:有用户详情编号、用户地址、手机号

# 用户详情表
create table 用户详情表(
	id int primary key auto_increment,
    地址 varchar(32),
    手机号 bigint
);

# 用户表
create table 用户表(
	id int primary key auto_increment,
    用户名 varchar(32),
    年龄 int,
    详细id int unique,
    foreign key(详细id) references 用户详情表(id)
    on update cascade
    on delete cascade
);

信息录入

# 用户详情表信息录入
insert into 用户详情表(地址,手机号) values('中国上海',13288884444),('中国北京',17012345678);
select * from 用户详情表;
+----+-------------+-------------+
| id | 地址         | 手机号      |
+----+-------------+-------------+
|  1 | 中国上海     | 13288884444 |
|  2 | 中国北京     | 17012345678 |
+----+-------------+-------------+

# 用户表信息录入
insert into 用户表(用户名,年龄,详细id) values('Poco',18,1),('黑影',20,2);
select * from 用户表;
+----+-----------+--------+----------+
| id | 用户名     | 年龄   | 详细id    |
+----+-----------+--------+----------+
|  1 | Poco      |     18 |        1 |
|  2 | 黑影       |     20 |        2 |
+----+-----------+--------+----------+
posted @ 2021-05-04 20:14  黑影Poco  阅读(76)  评论(0)    收藏  举报