实验报告(一)
一、实验题目
实验一 数据定义与DML操作
二、实验目的
1. 掌握使⽤SQL语⾔创建数据库(模式)的⽅法。
2. 掌握使⽤MySQL Workbench和SQL语⾔对表的操作⽅法。
3. 掌握使⽤SQL语⾔插⼊、修改、删除数据的⽅法。
4. 理解完成数据定义与DML操作可以有不同的解决⽅案(不同的⽅法、不同的SQL语句),要学会选择合理的⽅案。
三、实验内容与实现
实验要求1:
1. 创建 edu_db 数据库中的其余三张表:教师信息、开课信息和成绩信息。
2. 思考:
(1. 这三张表定义的先后顺序(考虑主/外键的关系)。
答:考虑主外键的关系,先创建教师信息,再创建开课信息,最后创建成绩信息。
(2. 开课编号 的⾃增主键如何设置。
答:id int(32) primary key auto_increment,//设置为auto_increment
(3. 数据类型的不同⻓度对数据取值范围的影响。
答:数据类型长度不同,数据取值范围是不同的 ,以下以整数类型举例说明。
数据类型 | 字节b | 范围(有符号) | 范围(无符号-unsigned) | 用途 |
TINYINT | 1 | (-128,127) | (0,255) | 微小整数值 |
SMALLINT | 2 | (-32768,32 767) | (0,65 535) | 小整数值 |
MEDIUMINT | 3 | (-8388608, 8388607) | (0,16777215) | 中等整数值 |
INT或INTEGER | 4 | (-2147483648, 2147483647) | (0,4294967295) | 整数值 |
BIGINT | 8 | (-9233372036854775808, 9223372036854775807) | (0,18446744073709551615) | 大整数值 |
(4. 如何定义三张表中的主键和外键约束。
答:
主键:primary key
外键约束:eg:alter table books add constraint FK_Book_categoryid foreign key(categoryId) references Category(id)
3. 使⽤可视化⽅法定义 教师信息,要求:
(1. 设置外键名为: fk_teacher_dept ;
(2. 表外键:限制删除主键值且级联更新主键值;
(3. 设置好的表定义界⾯截图和⽣成的建表语句
4. 使⽤SQL语句定义开课信息,要求:
(1. 定义时创建约束,自定义约束名;
(2. 将开课年份列设置为字符型,占⽤4字节。
5. 使⽤SQL语句定义 成绩信息,要求:
(1. 定义时不创建约束;
(2. 通过 修改表 的⽅式添加约束,给出约束名。
6. 修改开课信息的开课年份字段,将数据类型设置为⻓度为4字节的整型。
实验要求2:
1.将上述其余数据插⼊到表中,实验记录下数据录⼊的SQL语句(按表的数据插⼊顺序),包括开课但未批卷的成绩信息。
班级信息:
学生信息:
课程信息:
教师信息:
开课信息:
学生成绩:
- 思考数据插⼊的顺序(考虑数据完整性要求),给出你认为正确的插⼊表的顺序并说明原因。
答:总共有班级信息,学生信息,课程信息,教师信息,开课信息,学生成绩6个表数据,学生信息应在班级信息之后插入,开课信息应在课程信息和教师信息后插入,学生成绩信息应在学生信息和课程信息之后插入。
2. 思考录⼊开课信息和学生成绩时表中各字段的取值。
实验要求3:
1. 19级选择数据结构课程正考已经批改完毕,请根据如下表格更改分数。
学号 | 分数 |
19040001 | 80.00 |
19040002 | 85.00 |
19040007 | 57.00 |
2. 将19级学⽣的信息从学⽣表中删除。
提示:需要关联删除哪些表中的数据?删除的顺序是什么?
答:scores表和students的数据都得删除,先删除scores表中的19级学生信息,再删除students表中数据。
(1删除成绩表
(2删除学生表
四、实验问题总结与心得
通过本次数据库实验,我掌握使⽤SQL语⾔创建数据库的⽅法;掌握使⽤MySQL Workbench和SQL语⾔对表的操作⽅法;掌握使⽤SQL语⾔插⼊、修改、删除数据的⽅法;理解完成数据定义与DML操作可以有不同的解决⽅案,要学会选择合理的⽅案。
通过动手实践,巩固和复习了学习的数据库理论知识,提高了自己的动手能力,将课本上的知识用到实践中,真正做到了学以致用,让我真正体验了做数据库的大致流程,以及实验中给出的数据库设计很有代表性,对之后项目数据库设计很有借鉴意义。“不积硅步,无以至千里;不积小流,无以成江河”,其实我们就应该多多实践,积累经验,经验多了对之后的发展大有作用,对数据库的应用也会得心应手。在今后继续努力,继续加油。