目录
一、实验目的与要求
二、实验内容
实验小结
一、实验目的与要求
1.掌握MySQL中如何创建数据库和表的方法
2.熟练掌握MySQL的数据类型、主键实体完整性的设置
3.参照完整性的定义及应用
4.插入数据
5.数据库的备份操作
二、实验内容
1、创建名为fruitshop的数据库,并创建数据表fruits、customers(客户)、orderitems(订单详单)、suppliers(供货商)和orders(订单总表),表结构和约束条件如下:
注:
1.各表中的“字段说明”属性仅用于辅助说明该属性的含义,不用定义在表的结构中
2.表中没有明确指定外键,试分析找出各表中的外键并定义其外键约束、级联删除、级联更新操作;
表 1 fruits表结构
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
f_id | 水果编号 | char(10) | Y | N | Y | Y | N |
s_id | 供应商编号 | INT | N | Y | Y | N | N |
f_name | 水果名 | char(255) | N | N | Y | N | N |
f_price | 价格 | decimal(8,2) | N | N | Y | N | N |
表 2 customers表1结构
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
c_id | 客户编号 | int | Y | N | Y | Y | Y |
c_name | 客户名 | char(50) | N | N | Y | N | N |
c_address | 客户地址 | char(50) | N | N | N | N | N |
c_city | 城市 | char(50) | N | N | N | N | N |
c_zip | 邮编 | char(10) | N | N | N | N | N |
c_contact | 联系人 | char(50) | N | N | N | N | N |
c_email | 电子邮箱 | char(255) | N | N | N | N | N |
表 3 orderitems表结构
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
o_num | 订单号 | int | Y | Y | Y | N | N |
o_item | 订单项 | int | Y | N | Y | N | N |
f_id | 水果编号 | char(10) | N | Y | Y | N | N |
quantity | 数量 | int | N | N | Y | N | N |
item_price | 单价 | decimal(8,2) | N | N | Y | N | N |
注:orderitems表中o_num和o_item的组合构成主键。
表 4 suppliers表结构
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
s_id | 供应商编号 | int | Y | N | Y | Y | Y |
s_name | 供应商名 | char(50) | N | N | Y | N | N |
s_city | 城市 | char(50) | N | N | N | N | N |
s_zip | 邮编 | char(10) | N | N | N | N | N |
s_call | 电话 | char(50) | N | N | Y | N | N |
表 5 orders表结构
字段名 | 字段说明 | 数据类型 | 主键 | 外键 | 非空 | 唯一 | 自增 |
o_num | 订单号 | int | Y | N | Y | Y | Y |
o_date | 订购日期 | datetime | N | N | Y | N | N |
c_id | 客户编号 | int | N | Y | Y | N | N |
源码:
- 创建数据库fruitshop并开始对数据库进行操作
2.创建表格
(1)创建customers表格
(2)创建fruits表格
(3)创建orderitems表格
(4)创建orders表格
(5)创建suppliers表格
运行测试结果截图:
运行结果:通过show tables可以显示所有的表格
2、向数据表fruits、customers、orderitems和suppliers、orders中插入给定的如下数据
fruits表数据
customers表数据
orderitems表数据
suppliers表数据
orders表数据
3、向数据表fruits、customers、orderitems和suppliers、orders中插入给定的如下数据,要求如下:
向数据表customers和suppliers中分别插入一条记录,新记录customers的C_ID属性值统一为10000,在suppliers的S_ID属性值统一为100,S_NAME数据为JMU,其余属性值为本人的真实信息;向orders表中插入编号为“50001”和“50002”,客户编号为“10000”(本人)的两条记录;向数据表fruits、orderitems表中插入分别插入五条与本人相关(即在对应表中的C_ID属性为10000,S_ID属性为100)的新记录;
源码:
1.插入题目要求的原数据
(1)插入数据到customers表格中
(2)插入数据到orders表格中
(3)插入数据到suppliers表格中
(4)插入数据到fruits表格中
(5)插入数据到orderitems表格中
2.新插入自己的数据
(1)在customers表格中插入自己的数据
(2)在suppliers表格中插入自己的数据
(3)插入数据到orders表格中
(4)插入五条数据到fruits表格中
(5)插入五条数据到orderitems表格中
运行测试结果截图:
(1)显示customers表格数据
(2)显示suppliers表格数据
(3)显示orders表格数据
(4)显示fruits表格数据
(5)显示orderitems表格数据
3.完成本次实验数据库的备份及还原操作:
(1)备份:mysqldump -uroot -p123456 数据库名 >目的地址及文件名.sql
运行测试结果截图:
SQL文件已备份
(2)还原备份数据 source 源地址及文件名.sql
-
实验小结
1.实验中遇到的问题及解决过程
问题1:在创建数据库后直接开始建立表格
解决方案:需要输入命令use fruitshop (表示使用数据库)后才能开始对这个数据库进行操作。
问题2:在使用MySQL语言时不符合标准要求,例如,1忘记加逗号、分号,2在属性为char类型时,添加数据忘记加引号等等导致无法正确进行下一步
解决方案:编码时需符合标准要求
问题3:插入数据时没有正确引用外码
解决方案:通过select 先确定好需要引用的外码的值
2.实验中产生的错误及原因分析
错误1:在创建表格时,起初按照题目要求,先建立fruit表格,但是无法建立该表格
原因分析:创建表格时没有对应逻辑关系,fruit表格中的属性‘s_id’作为外键需要引用suppliers表格中的‘s_id’,因此,在创建fruit表格前需要先创建suppliers表格才能引用。
3.实验体会和收获
本次实验首次体验了在命令行使用MySQL语言进行对数据库和表的基本操作。实验难度较为简单,但是在实验过程中需要重复进行多次相关操作,需要我们细心以及有耐心完成任务。同时,由于对语言规范性不了解,有时会忘记进行相关的操作。本次实验结合课本知识,我掌握了对数据库、表的创建及插入、更新、删除等操作,以及对数据库的备份和还原操作。通过实验学到了许多课堂上未涉及的知识。