(一)实验目的
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不能进行该修改。