实验五:外键及操作关联表

(一)实验目的

1、掌握数据库基础知识、数据库和表的基本操作

2 、掌握外键建立。

3 、掌握操作关联表。

(二)实验内容

表 deposite

属性名称

类型与长度

中文含义

备注

d_id

int(11)

存款流水号

主键,  自增

c_id

char(6)

客户标识

外键,  关联 customer  c_id

b_id

char(6)

银行标识

外键,  关联 bank  b_id

dep_date

date

存入日期

amount

decimal(8,2)

存款金额

表 customer

属性名称

类型与长度

中文含义

备注

c_id

char(6)

客户标识

主键

name

varchar(30)

客户姓名

非空

location

varchar(30)

工作地点

salary

decimal(8,2)

工资

 bank

属性名称

类型与长度

中文含义

备注

b_id

char(6)

银行标识

主键

bank_name

varchar(30)

银行名称

非空

(1)按要求创建以上三张表格(先不要插入数据)。

(2)建立外键。

(3)请首先插入 deposite 表中数据,是否能够执行? 

INSERT INTO deposite (d_id,c_id,b_id,dep_date,amount) VALUES
(13, 101005,'B0004','2020-04-05',7896);

显示不能执行,因为deposit.b_id、deposite.c_id分别与bank.b_id、customer.c_id建立了外键约束,deposite作为从表不能随意添加对应主表中不存在的数据,主表customer表中的c_id不存在欲添加的“101005”。

(4)请插入 customer 表数据,  是否能够执行?

INSERT INTO customer (c_id ,name ,location ,salary) VALUES
('101005','邹酷','山东','1295');

执行成功

(5)请再次插入 deposite 表中数据,是否能够执行?

INSERT INTO deposite (d_id,c_id,b_id,dep_date,amount) VALUES
(13, 101005,'B0004','2020-04-05',7896);

执行成功

(6)请将各表格中数据添加完成, 记录执行过程中表的先后顺序。

先后顺序:customer->bank->deposite

(7)在 customer 表中删除孙萌的数据记录,是否能够执行?

 delete from customer where name='孙萌';

不能执行,因为customer作为主表与deposite建立的约束,两者的c_id进行了关联,删除主表customer的数据时,需要先删除从表deposite的数据

(8)在 bank 表中删除中国银行的数据记录,是否能够执行?

 delete from bank where bank_name='中国银行';

不能执行,因为bank.b_id和deposite.b_id关联了,bank作为主表与deposite建立的约束,删除主表bank的数据时,需要先删除从表deposite的数据

(9)在 deposite 表中删除 d_id 分别为 2、7 、12 的数据记录,是否能够执行?

delete from deposite where d_id in (2,7,12);

(10)在 bank 表中删除中国银行的数据记录,是否能够执行?

delete from bank where bank_name='中国银行';

执行成功

(11)在 deposite 表中删除 d_id 分别为 1 、5 、9 的数据记录, 后在 custome 表中删除

孙萌的数据记录,是否能够执行?

delete from deposite where d_id in (1,5,9);

delete from customer where name='孙萌';

执行成功

(12)在 deposite 表中将 d_id=3 的 b_id 更新为 B0003,是否能够执行?

update deposite set b_id=B0003 where d_id=3;

不能执行,因为前面操作中删除了bank中中国银行的信息,而中国银行的编号正是B0003,deposite.b_id与bank.b_id关联了,主表bank中的B0003已删除,故deposite不能进行该修改。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值