《数据库原理》实验报告DB1——数据库和表的创建与管理

一. 实验内容、步骤以及结果

1. 利用图形用户界面连接数据库(10分)。

2. 利用命令行连接数据库(10分)。

3. 利用图形用户界面创建、备份、删除和还原数据库和数据表(40分,每小题5分)

  • 数据库和表的要求

    数据库名:SPJ_MNG,其中包含四张表:S表, P表, J表, SPJ表

    S (SNO, SNAME, STATUS, CITY)
    P (PNO, PNAME, COLOR, WEIGHT)
    J (JNO, JNAME, CITY)
    SPJ (SNO, PNO, JNO, QTY)

供应商表S由供应商代码(SNO)、供应商姓名(SNAME)、供应商状态(STATUS)、供应商所在城市(CITY)组成。

零件表P由零件代码(PNO)、零件名(PNAME)、颜色(COLOR)、重量(WEIGHT)组成。

工程项目表J由工程项目代码(JNO)、工程项目名(JNAME)、工程项目所在城市(CITY)组成。

供应情况表SPJ由供应商代码(SNO)、零件代码(PNO)、工程项目代码(JNO)、供应数量(QTY)组成,表示某供应商供应某种零件给某工程项目的数量为QTY

  • 现在该数据库有若干数据如下,基于该库表完成指定操作。

    表略

(1) 创建SPJ_MNG数据库。

(2) 在SPJ_MNG数据库中创建以上四张表(只输入一部分数据示意即可)。

(3) 导出数据库SPJ_MNG为一个SQL文件。
mysql workbench左上方有一个导航区,
选择administration->data export。
选中需要导出的数据库设置相关参数,进行导出。
(4) 删除已经创建的供应情况表(SPJ表)。
drop tables s,p,j,spj
(5) 删除SPJ_MNG数据库。
drop database spj_2018302390
(6) 利用(3)中备份过的SQL文件还原刚才删除的SPJ_MNG数据库。
MySQL WorkBench中选择Administration → Data Import/Restore。
首先新建数据库SPJ_MNG,然后选中备份文件所在的文件夹,开始导入。
(7) 修改S表,增加一个联系电话的字段STEL,数据类型为字符串类型,并修改S表中SNO允许的字符串最大长度。
alter table s add stel char(15);
alter table s alter column sno char(20);
(8) 了解MySQL 的物理存储文件,查看本机MySQL服务安装目录下(如默认安装C:\ProgramData\MySQL\MySQL Server 8.0\Data)的数据文件。尝试分别按照InnoDB和MyISAM不同的存储引擎创建表,观察并说明物理存储文件差异。

差异:

InnoDB 支持事物,是事物安全的,提供行级锁和外键约束,有缓冲池,用于缓冲数据和索引。

MyiSAM不支持事物,不支持外键约束,不支持行级锁,操作时需要锁定整张表,不过会保存表的行数,执行较快。

4. 利用命令行创建、备份、删除和还原数据库和数据表(40分,每小题5分)

  • 数据库和表的要求
    数据库名:Student, 其中包含三个表:S,C,SC

    S (SNO, SNAME, SGENDER, SBIRTH, SDEPT, SAGE)
    C (CNO, CNAME, CPNO, CREDIT)
    SC (SNO, CNO, GRADE)

学生信息表S由学生学号(SNO)、姓名(SNAME)、性别(SGENDER)、出生日期(SBIRTH)、所在学院(SDEPT)、年龄(SAGE)组成。

课程信息表P由课程编号(CNO)、课程名(CNAME)、先修课编号(CPNO)、学分(CREDIT)组成。

选课信息表SC由学生学号(SNO)、课程编号(CNO)、成绩(GRADE)组成。表示某个学生选修了某门课程,成绩为GRADE

  • 现在该数据库有若干数据如上所示,基于该库表完成指定操作。

    数据略

(1) 用SQL语句创建数据库Student。
Create database student
(2) 用SQL语句创建上述的三张表,各个字段的数据类型请自己确定,每张表只要有主键约束即可,不要其他约束。不用输入数据。
CREATE TABLE s (
	Sno INT ,
  	Sname CHAR (20),
	Sgender CHAR (5) ,	
   	Birth CHAR (20),
    Sdept CHAR (5),
  	PRIMARY KEY (Sno )
);
CREATE TABLE c (
	Cno INT ,
  	Cname CHAR (20),
	Cpno INT,
	Credit INT,
  	PRIMARY KEY (Cno )
);
CREATE TABLE sc (
	Sno INT ,
  	Cno INT ,
  	Grade INT,
    FOREIGN KEY (Sno) REFERENCES s(Sno),
    FOREIGN KEY (Cno) REFERENCES c(Cno)
);
(3) 备份数据库Student。

命令行切换到C:\Program Files\MySQL\MySQL Server 8.0\bin目录下面
(用mysqldump命令。)(回车后要求输入-u用户的密码):

mysqldump -h localhost -u root -p student > d:\student.sql
mysqldump -h localhost -u root -p --no-data --databases student > d:\s2.sql
		h: 服务器名或IP;-u: 用户名;  -p:密码  student:待备份库
		--no-data: 不备份数据
	

含义:将本机数据库student备份到d盘的sql文件中。

(4) 用SQL语句删除创建的表。
drop tables s, c,sc;
(5) 用SQL语句删除创建的数据库。
drop databases student;
(6) 用SQL语句利用(3)中的备份文件还原student数据库。

先使用SQL语句创建Student数据库,再利用(3)中备份的文件进行还原。
打开cmd.exe运行程序,切换到MySQL的bin目录下面,使用以下命令进行还原:

create database student;
mysql -h localhost -uroot -p student<d:/student.sql
(7) 修改S表,增加一个联系电话的字段STEL,数据类型为字符串类型,并修改S表中SNO允许的字符串最大长度。
alter table s add stel char(15);
alter table s alter column sno char(20); 
(8) 查看mysqldump 生成的SQL文件中的定义数据库或表的SQL脚本,对比自动生成的脚本和自己写的SQL语句的异同点。

MySQL dump生成的SQL文件中的SQL脚本解释性语言较多,并且会在每一个建表语句之前删除同名表等,sql语句编写较为完整,逻辑缜密。

二. 实验中出现的问题以及解决方案(对于未解决问题请将问题列出来)

问题:在使用命令行对字符串长度进行更改的时候,发现云数据库上的代码命令行中实现不了。

解决方案: alter table s alter column sno varchar(20);
变为:mysql8.0: alter table s modify sno varchar(20);
随着版本的改变,mysql 语句也在做着改变

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值