《数据库原理及应用》实验报告(1-21)-空

更新时间:2024-01-20 13:16:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数据库原理及应用

实验报告

实验课程: 数据库原理及应用

学 号: 2015030838

学生姓名: 赵殿强

班 级: 网络一班

2016年 月 日

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验一 创建和维护数据库

一、实验目的

(1)掌握在Windows 平台下安装与配置MySQL 5.5 的方法。 (2)掌握启动服务并登录MySQL 5.5 数据库的方法和步骤。 (3)了解手工配置MySQL 5.5 的方法。 (4)掌握MySQL 数据库的相关概念。

(5)掌握使用Navicat 工具和SQL 语句创建数据库的方法。 (6)掌握使用Navicat 工具和SQL 语句删除数据库的方法。

二、实验要求

(1)学生提前准备好实验报告,预习并熟悉实验步骤; (2)遵守实验室纪律,在规定的时间内完成要求的内容; (3)1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

(1)在Windows 平台下安装与配置MySQL 5.5.36 版。 (2)在服务对话框中,手动启动或者关闭MySQL 服务。 (3)使用Net 命令启动或关闭MySQL 服务。

Net start mysql Net stop mysql (4)分别用Navicat 工具和命令行方式登录MySQL。 mysql -h localhost -u root -p

(5)在my.ini 文件中将数据库的存储位置改为D:\\MYSQL\\DATA。 #Path to the database root

datadir= D:\\MYSQL\\DATA。 (6)创建数据库。

① 使用Navicat 创建学生信息管理数据库gradem。

② 使用SQL 语句创建数据库MyDB。

mysql> create database MyDB; Query OK, 1 row affected (0.00 sec) (7)查看数据库属性。

① 在Navicat 中查看创建后的gradem 数据库和MyDB 数据库的状态,查看数据库所在的文件夹。② 利用SHOW DATABASES 命令显示当前的所有数据库。

2

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | gradem | | mydb | | mysql | | performance_schema | | test | +--------------------+ 6 rows in set (0.00 sec) 8)删除数据库。

① 使用Navicat 图形工具删除gradem 数据库。 ② 使用SQL 语句删除MyDB 数据库。

mysql> DROP DATABASE MyDB; Query OK, 0 rows affected (0.00 sec) ③ 利用SHOW DATABASES 命令显示当前的所有。

mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ 4 rows in set (0.00 sec) 9)使用配置向导修改当前密码,并使用新密码重新登录。 10)配置Path 变量,确保MySQL 的相关路径包含在Path 变量中。

My SQL的数据库文件有几种?扩展名分别是什么?

3

((

(四、思考题

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

五、实验总结

1、收获

2、存在的问题

4

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验二 管理表

一、实验目的

(1) 掌握表的基础知识。

(2) 掌握使用Navicat管理工具和SQL语句创建表的方法。 (3) 掌握表的修改、查看、删除等基本操作方法。

二、实验要求

(1)学生提前准备好实验报告,预习并熟悉实验步骤; (2)遵守实验室纪律,在规定的时间内完成要求的内容; (3)1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

(1)在gradem数据库中创建表4.18~表4.22所示结构的表。

表4.18 student表的表结构 字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 sno char 10 否 主码 sname varchar 8 是 ssex char 2 是 sbirthday datetime 是 saddress varchar 50 是 sdept char 16 是 speciality varchar 20 是 表4.19 course表(课程名称表)的表结构

字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 cno char 5 否 主码 cname varchar 20 否 表4.20 sc表(成绩表)的表结构 字段名称 数据类型 长度 小数位数 是否允许NULL值 说明 sno char 10 否 组合主码、外码 cno char 5 否 组合主码、外码 degree decimal 4 1 是 1~100 表4.21 teacher表(教师表)的表结构

字段名称 数据类型 长度 小数位数 是否允许NULL值 说明

5

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: tno tname tsex tbirthday tdept char varchar char date char 3 8 2 16 否 是 是 是 是 主码 表4.22 teaching表(授课表)的表结构 字段名称 cno tno cterm

(2) 向表4.18至表4.22输入数据记录,见表4.23~表4.27。 表4.23 学生关系表student sno 20050101 20050201 20050301 20050202 sname 李勇 刘晨 王敏 张立 ssex 男 女 女 男 sbirthday 1987-01-12 1988-06-04 1989-12-23 1988-08-25 saddress 山东济南 山东青岛 江苏苏州 河北唐山 sdept 计算机工程系 信息工程系 数学系 信息工程系 speciality 计算机应用 电子商务 数学 电子商务 数据类型 char char tinyint 长度 5 3 1 小数位数 0 是否允许NULL值 否 否 是 说明 组合主码、外码 组合主码、外码 1~10 表4.24 课程关系表course

cno C01 C02 cname 数据库 数学 cno C03 C04 cname 信息系统 操作系统 表4.25 成绩表sc

sno 20050101 20050101 20050101 20050201 20050201 表4.26 教师表teacher

tno 101

cno C01 C02 C03 C02 C03 degree 92 85 88 90 80 tname 李新 tsex 男 tbirthday 1977-01-12 tdept 计算机工程系 6

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 102 201 202 钱军 王小花 张小青 女 女 男 1968-06-04 1979-12-23 1968-08-25 计算机工程系 信息工程系 信息工程系 表4.27 授课表teaching

cno C01 C02 C03 C04

(3) 修改表结构。

① 向student表中增加“入学时间”列,其数据类型为日期时间型。

tno 101 102 201 202 cterm 2 1 3 4 ALTER TABLE student ADD rxsj date AFTER saddress; Query OK, 4 rows affected Records: 4 Duplicates: 0 Warnings: 0 ② 将student表中的sdept字段长度改为20。

ALTER TABLE student MODIFY COLUMN sdept CHAR(20); Query OK, 0 rows affected Records: 0 Duplicates: 0 Warnings: 0 ③ 将student表中的speciality字段删除。

ALTER TABLE student drop speciality; Query OK, 4 rows affected Records: 4 Duplicates: 0 Warnings: 0 ④ 删除student表。

[Err] 1217 - Cannot delete or update a parent row: a foreign key constraint fails; 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[Err] 1217 - Cannot delete or update a parent row: a foreign key constraint fail' at line 1 (4) 利用SQL命令(create table、alter table、drop table)完成对表的操作 ①利用create talbe 命令完成student表和course表的定义。

创建student表; CREATE TABLE sudent (

7

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: sno CHAR(10) NOT NULL, sname VARCHAR(8), ssxe CHAR(2), sbirthday datetime, sddress VARCHAR(50), sdept CHAR (16), speciality VARCHAR(20), CONSTRAINT PRIMARY KEY (sno) ); 创建course表 CREATE TABLE course ( cno CHAR(5) NOT NULL, cname VARCHAR(20) NOT NULL, CONSTRAINT PRIMARY KEY (cno) );

②利用drop table命令实现(3)中的④。

DROP TABLE student; 四、思考题

(1) MySQL中的数据文件有几种?扩展名分别是什么? Fm, myd myi三种

(2) 在定义基本表语句时,NOT NULL参数的作用是什么?

不接受空值

(3) 主码可以建立在“值可以为NULL”的列上吗?

五、实验总结:

1、收获

8

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

2、存在的问题

9

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验三 简单查询——单表无条件和有条件查询

一、实验目的

(1) 掌握SELECT语句的基本用法。 (2) 使用WHERE子句进行有条件的查询。

(3) 掌握使用IN和NOT IN,BETWEEN?AND和NOT BETWEEN?AND来缩小查询范围的方法。 (4) 利用LIKE子句实现字符串匹配查询。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在上次实验建立的Gradem或Gradem1数据库中完成下面查询:

(1) 查询所有学生的基本信息、所有课程的基本信息和所有学生的成绩信息(用三条SQL语句)。

(2) 查询所有学生的学号、姓名、性别和出生日期。

(3) 查询所有课程的课程名称。

(4) 查询前10门课程的课号及课程名称。

(5) 查询所有学生的姓名及年龄。

(6) 查询所有年龄大于18岁的女生的学号和姓名。

(7) 查询所有男生的信息。

(8) 查询所有任课教师的姓名(Tname)和所在系别(Tdept)。

(9) 查询“电子商务”专业的学生姓名、性别和出生日期。

(10) 查询Student表中的所有系名。

10

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

(11) 查询“C01”课程的开课学期。

(12) 查询成绩在80~90分之间的学生学号及课号。

(13) 查询在1970年1月1日之前出生的男教师信息。

(14) 输出有成绩的学生学号。

(15) 查询所有姓“刘”的学生信息。

(16) 查询生源地不是山东省的学生信息。

(17) 查询成绩为79分、89分或99分的记录。

(18) 查询名字中第二个字是“小”字的男生的学生姓名和地址。

(19) 查询名称以“计算机_”开头的课程名称。

(20) 查询计算机工程系和软件工程系的学生信息。

四、思考题

1、LIKE的通配符有哪些?分别代表什么含义?

2、知道学生的出生日期,如何求出其年龄?

3、IS能用“=”来代替吗?

4、关键字ALL和DISTINCT有什么不同的含义?

11

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 四、实验总结:

1、收获

2、存在的问题

12

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验四 简单查询——分组与排序

一、实验目的:

(1) 利用GROUP BY子句对查询结果分组。 (2) 利用ORDER BY子句对查询结果排序。 (3) 掌握聚集函数的使用方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Gradem或Gradem1数据库中完成下面查询: (1) 统计有学生选修的课程的门数。

(2) 计算“c01”课程的平均成绩。

(3) 查询选修了“c03”课程的学生的学号及其成绩,查询结果按分数降序排列。

(4) 查询各个课程号及相应的选课人数。

(5) 统计每门课程的选课人数和最高分。

(6) 统计每个学生的选课门数和考试总成绩,并按选课门数降序排列。

(7) 查询选修了3门以上课程的学生学号。

(8) 查询成绩不及格的学生学号及课号,并按成绩降序排列。

(9) 查询至少选修一门课程的学生学号。

13

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: (10) 统计输出各系学生的人数

(11) 统计各系学生人数;各系的男、女生人数。(两条命令)

(12) 统计各班人数;各班男、女生人数。(两条命令)

(13) 统计各系的老师人数,并按人数升序排序。

(14) 统计不及格人数超过10人的课程号。?统计选修人数超过10人的课程号。

(15) 查询软件系的男生信息,查询结果按出生日期升序排序,出生日期相同的按地址降序排序。

三、思考题

(1) 聚集函数能否直接使用在SELECT子句、HAVING子句、WHERE子句、GROUP BY子句中?

(2) WHERE子句与HAVING子句有何不同?

四、实验总结:

1、收获

2、存在的问题

14

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验五、六、七 多表查询

一、实验目的

(1) 掌握SELECT语句在多表查询中的应用。 (2) 掌握多表连接的几种连接方式及应用。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Gradem或Gradem1数据库中完成下面查询:

(1) 查询计算机工程系女学生的学生学号、姓名及考试成绩。

(2) 查询“李勇”同学所选课程的成绩。(不考虑重名)

(3) 查询“李新”老师所授课程的课程名称。

(4) 查询女教师所授课程的课程号及课程名称。

(5) 查询至少选修一门课程的女学生姓名。

(6) 查询姓“王”的学生所学的课程名称。

(7) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。?查询姓名?

(8) 查询课程成绩及格的男同学的学生信息及课程号与成绩。 (9) 查询选修“c04”课程的学生的平均年龄。

(10) 查询学习课程名为“数学”的学生学号和姓名。

(11) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。?姓名?

(12) 查询在第3学期所开课程的课程名称及成绩。

15

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

(13) 查询“c02”号课程不及格的学生信息。

(14) 查询软件系成绩在90分以上的学生姓名、性别和课程名称。

(15) 查询同时选修了“c04”和“c02”课程的学生姓名和成绩。

三、思考题

(1) 指定一个较短的别名有什么好处?

(2) 内连接与外连接有什么区别?

(3) “=”与IN在什么情况下作用相同?

四、实验总结:

1、收获

2、存在的问题

16

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验八、九 嵌套查询

一、实验目的

(1) 掌握嵌套查询的使用方法。

(2) 掌握相关子查询与嵌套子查询的区别。 (3) 掌握带IN谓词的子查询的使用方法。 (4) 掌握带比较运算符的子查询的使用方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Grademanager数据库中完成下面查询:

(1) 查询计算机系(CS)女学生的学生学号、姓名及考试成绩。

(2) 查询“李勇”同学所选课程的成绩。

(3) 查询“李新”老师所授课程的课程名称。

(4) 查询女教师所授课程的课程号及课程名称。

(5) 查询姓“王”的学生所学的课程名称。

(6) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。

(7) 查询选修“C04”课程的学生的平均年龄。

(8) 查询学习课程名为“数学”的学生学号和姓名。

(9) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。

17

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: (10) 查询在第3学期所开课程的课程名称及成绩。

(11) 查询与“李勇”同一个系的同学姓名。

(12) 查询学号比“刘晨”同学大,而出生日期比他小的学生姓名。

(13) 查询出生日期大于所有女同学出生日期的男同学的姓名及系别。

(14) 查询成绩比该课程平均成绩高的学生的学号及成绩。

(15) 查询不讲授“C01”课的教师姓名。

(16) 查询没有选修“C02”课程的学生学号及姓名。

(17) 查询选修了“数据库”课程的学生学号、姓名及系别。

(18) 查询“C02”号课程不及格的学生信息。

三、思考题

(1) 子查询一般分为几种?

(2) 相关子查询的执行过程是什么?

四、实验总结:

1、收获

2、存在的问题

18

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验十 数据更新

一、实验目的:

(1) 掌握利用INSERT命令实现对表数据的插入操作。 (2) 掌握利用UPDATE命令实现对表数据的修改操作。 (3) 掌握利用DELETE命令实现对表数据的删除操作。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Gradem或Gradem1数据库中完成下面操作:

注意:利用SELECT INTO?命令备份Student、SC、Course这3个表,备份表名自定。

(1) 向Student表中插入记录(\,\张静\,\,\女\,\,\电子商务\。

(2) 插入学号为“20050302”、姓名为“李四”的学生信息。

(3) 把计算机系的学生记录保存到表TS中(TS表已存在,表结构与Student表相同)。

(4) 将学号为“20050202”的学生姓名改为“张华”,系别改为“CS”,专业改为“多媒体技术”。

(5) 将“李勇”同学的专业改为“计算机信息管理”。

(6) 将“20050201”学生选修“C03”号课程的成绩改为该课的平均成绩。

(7) 把成绩低于总平均成绩的女同学的成绩提高5%。

(8) 把选修了“数据库”课程而成绩不及格的学生的成绩全改为空值(NULL)。

19

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: (9) 删除学号为“20050302”的学生记录。

(10) 删除“计算机系”所有学生的选课记录。

(11) 删除SC表中尚无成绩的选课记录。

(12) 把“张晨”同学的成绩全部删除。

三、思考题

(1) DROP命令和DELETE命令的本质区别是什么?

(2) 利用INSERT、UPDATE和DELETE命令可以同时对多个表进行操作吗?

四、实验总结:

1、收获

2、存在的问题

20

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验十一、十二、十三 第四章综合实验

一、实验目的:

(1) 进一步掌握SELECT语句的功能及使用方法。

(2) 进一步掌握SELECT语句的基本语法和查询条件表示方法; (3) 进一步掌握查询条件种类和表示方法; (4) 进一步掌握连接查询的表示及使用; (5) 进一步掌握嵌套查询的表示及使用; (6) 了解集合查询的表示及使用

(7) 进一步掌握利用INSERT命令实现对表数据的插入操作。 (8) 进一步掌握利用UPDATE命令实现对表数据的修改操作。 (9) 进一步掌握利用DELETE命令实现对表数据的删除操作。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

在Grademanager数据库中完成下面操作:

(1) 查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况;

(2) 查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;

?思考能否用嵌套查询?

(3)列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;

(4) 查询缺少成绩的所有学生的详细情况;

(5) 查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;

(6) 查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩;

21

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: (7) 按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;

(8) 列出只选修一门课程的学生的学号、姓名、院系及成绩;

(9) 查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;

(10) 只选修“数据库”和“数据结构”两门课程的学生的基本信息;

(11) 至少选修“数据库”或“数据结构”课程的学生的基本信息;

(12) 列出所有课程被选修的详细情况,包括课程号、课程名、学号及成绩;

(13) 查询只被一名学生选修的课程的课程号、课程名;

(14) 检索所学课程包含学生‘张向东’所学课程的学生学号、姓名;

(15) 使用嵌套查询列出选修了“数据结构”课程的学生学号和姓名;

(16) 使用嵌套查询查询其它系中年龄小于计算机系的某个学生的学生姓名、年龄和系别;

(17) 使用ANY、ALL 查询,列出其他院系中比CS系所有学生年龄小的学生;

(18)分别使用连接查询和嵌套查询,列出与‘张力’在一个系的学生的信息;

(19) 使用集合查询列出CS系的学生以及性别为女的学生名单;

(20) 使用集合查询列出CS系的学生与年龄不大于19岁的学生的交集、差集;

22

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: (21) 使用集合查询列出选修课程1的学生集合与选修课程2的学生集合的交集;

(22) 按照课程名顺序显示各个学生选修的课程(如200515001 数据库 数据结构 数学);

四、实验总结:

1、收获

2、存在的问题

23

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验十四 索引

一、实验目的:

(1) 理解索引的概念与类型。

(2) 掌握创建、更改、删除索引的方法。 (3) 掌握维护索引的方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

1)使用Navicat图形工具创建、管理索引

(1) 在数据库test下创建workinfo表。创建表的同时在id字段上创建名为index_id的唯一性索引,而且以降序的格式排列。workinfo表结构内容如下表所示:

字段名 id sname Type Address Wages 字段描述 编号 职位名称 职位类别 工作地址 工资 数据类型 INT(10) VARCHAR(20) VARCHAR(10) VARCHAR(50) INT INTYTEXT TEXT 主键 是 否 否 否 否 否 否 外键 否 否 否 否 否 否 否 非空 是 是 否 否 否 否 否 唯一 是 否 否 否 否 否 否 自增 是 否 否 否 否 否 否 Contents 工作内容 extra 附加信息 (2) 创建索引。为name字段创建长度为10的索引index_name,在type和address字段上创建名为index_t的组合索引。

(3)将workinfo表的存储引擎更改为MyISAM类型。

(4)在extra字段上创建名为index_ext的全文索引。

(5)重命名索引。将index_t索引更名为index_taddress。

(6)删除索引。删除workinfo表的唯一性索引index_id。

2) 使用SQL语句创建、管理索引

(1) 利用create table语句在test数据库中创建数据表writers,其表结构内容如下表所示。在创建表的同时在w_id

24

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 字段上添加名称为uniquex的唯一索引。

字段名 字段描述 数据类型 主键 外键 非空 唯一 自增 id 编号 INT(10) 是 否 是 是 是 w_name 作者姓名 VARCHAR(20) 否 否 是 否 否 w_address 作者地址 VARCHAR(50) 否 否 否 否 否 w_age 年龄 INT 否 否 是 否 否 w_note 说明 TEXT 否 否 否 否 否 (2)使用alter table语句在w_name字段上建立名称为nameidx的普通索引。

(3)使用create index语句在w_address和w_age字段上建立名称为multiidx的组合索引。

(4)使用create index语句在w_note字段上建立名称为ftidx的全文索引。

(5) 删除索引。利用alter table语句将全文索引ftidx删除,利用drop index语句将nameidx索引删除。

四、思考题

(1) 数据库中索引被破坏后会产生什么结果?

(2) 视图上能创建索引吗?

五、实验总结:

1、收获

2、存在的问题

25

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

实验十五 视图

一、实验目的:

(1) 理解视图的概念。

(2) 掌握创建、更改、删除视图的方法。 (3) 掌握使用视图来访问数据的方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

1) 使用SQL语句创建、管理视图 (1) 创建视图。

① 创建一个名为sc_view1的视图,从数据库gradem的sc表中查询出成绩大于90分的所有学生选修成绩的信息。

② 创建一个名为sc_view2的视图,从数据库gradem的sc表中查询出成绩小于80分的所有学生的学号、课程号、成绩等信息。

③ 创建一个名为sc_view3的加密视图,由数据库gradem的student、course、sc表创建一个显示“20070303”班学生选修课程(包括学生姓名、课程名称、成绩等信息)的视图。

④ 创建一个从视图sc_view1中查询出课程号“c01”的所有学生的视图。

(2) 修改视图的定义。

修改视图sc_view1,使其从数据库gradem的sc表中查询出成绩大于90分且第3学期的所有学生选修成绩的信息。

(3) 视图的更名与删除。

26

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: ① 将视图sc_view1更名为sc_view5。

② 将视图sc_view5删除。

(4) 管理视图中的数据。

① 从视图sc_view2中查询出学号为“2007030125”、课程号为“a01”的学生选修成绩的信息。

② 将视图sc_view2中学号为“2007030122”、课程号为“c02”的成绩改为87。

③ 从视图sc_view2中将学号为“2007030123”、课程号为“a01”的学生信息删除。

2.思考题

(1) 向视图中插入的数据能进入到基本表中去吗?

(2) 修改基本表的数据会自动反映到相应的视图中去吗?

(3) 如何保证视图使用的安全性?

四、实验总结:

1、收获

2、存在的问题

27

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验十六 T-SQL编程

一、实验目的:

(1) 理解常量与变量的概念; (2) 掌握常量与变量的使用方法; (3) 掌握表达式的使用方法;

(4) 理解Transact-SQL流程控制语句的使用; (5) 掌握常用函数的功能及使用方法;

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

(1) 定义一个整型局部变量iAge和可变长字符型局部变量vAddress,并分别赋值20和“中国山东”,最后输出变量的值,并要求通过注释对批处理中语句的功能进行说明。

(2) 通过全局变量获得当前服务器进程的ID标识和My SQL服务器的版本。

(3) 求1~100的偶数和与所有的质数的和。

(4) 对于字符串“Welcome to My SQL”,进行以下操作。(查阅联机丛书) ① 将字符串转换为全部大写。

② 将字符串转换为全部小写。

28

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: ③ 去掉字符串前后的空格。

④ 截取从第12个字符开始的10个字符。

(5) 使用日期型函数,获得输出结果见表5-8。 表5-8 输出结果

年份 2009

(6) 根据sc表中的成绩进行处理:成绩大于等于60分的显示“及格”,小于60分的显示“不及格”,为NULL的显示“无成绩”。

(7) 利用SQL条件语句,在student表中查找“李艳”同学的信息,若找到,则显示该生的学号、姓名、班级名称及班主任,否则显示“查无此人”。

3.思考题

(1) 全局变量与局部变量的区别是什么?

(2) 使用变量的前提是什么?

月份 11 日期 16 星期几 星期一 四、实验总结:

1、收获

2、存在的问题

29

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验十七 存储过程

一、实验目的:

(1) 理解存储过程和函数的概念。 (2) 掌握创建各种存储过程和函数的方法。 (3) 掌握执行存储过程和函数的方法。

(4) 掌握查看、修改、删除存储过程和函数的方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

1) 使用Transact-SQL语句创建存储过程 (1) 创建不带参数的存储过程。

① 创建一个从student表查询班级号为“20070301”班的学生资料的存储过程proc_1,其中包括学号、姓名、性别、出生年月等。调用proc_1存储过程,观察执行结果。

② 在gradem1数据库中创建存储过程proc_2,要求实现如下功能:存在不及格情况的学生选课情况列表,其中包括学号、姓名、性别、课程号、课程名、成绩、系别等。调用proc_2存储过程,观察执行结果。

(2) 创建带输入参数的存储过程。

创建一个从student表查询学生资料的存储过程 proc_3,其中包括学号、姓名、性别、出生年月、班级等。要查询的班级号通过执行语句中的输入参数传递给存在过程。

其中,“20070303”为要传递给存储过程proc_3的输入参数,也即是要查询的资料的班级号。

(3) 创建带输出参数的存储过程。

创建一个从sc表查询某一门课程考试成绩总分的存储过程proc_4。

在以上存储过程中,要查询的课程号通过执行语句中的输入参数@cno传递给存储过程,@sum_degree作为输出参数用来存放查询得到的总分。执行此存储过程,观察执行结果。

30

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

2) 使用Transcant-SQL语句查看、修改和删除存储过程 (1) 查看存储过程。

用户的存储过程被创建以后,可以用系统存储过程来查看其有关信息。

① 查看存储过程的定义。使用系统存储过程sp_helptext查看存储过程proc_1、proc_3的定义。 ② 使用系统存储过程sp_help查看存储过程proc_1的信息。 (2) 修改存储过程。

使用ALTER PROCEDURE语句将存储过程proc_1修改为查询班级号为“20070302”班的学生资料。

(3) 删除存储过程。 将存储过程 proc_1删除。

四、实验总结:

1、收获

2、存在的问题

31

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验十八、十九 触发器

一、实验目的:

(1) 理解触发器的概念与类型。 (2) 理解触发器的功能及工作原理。 (3) 掌握创建、更改、删除触发器的方法。 (4) 掌握利用触发器维护数据完整性的方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

1) 使用Transcat-SQL语句创建触发器

(1) 创建插入触发器并进行触发器的触发执行。

为表sc创建一个插入触发器 student_sc_insert,当向表sc插入数据时,必须保证插入的学号有效地存在于student表中,如果插入的学号在student表中不存在,给出错误提示。

向表sc中插入一行数据:sno, cno,degree分别是(‘20070302’,‘c01’,78),该行数据插入后,观察插入触发器student_sc_insert是否触发工作,再插入一行数据,观察插入触发器是否触发工作。 (2) 创建删除触发器。

为表student 创建一个删除触发器student_delete,当删除表student中的一个学生的基本信息时,将表sc中该生相应的学习成绩删除。

将学生“张小燕”的资料从表student中删除,观察删除触发器student_delete是否触发工作,即sc表中该生相应的学习成绩是否被删除。 (3) 创建更新触发器。

为student表创建一个更新触发器student_sno,当更改student表中某学号学生的学号时,同时将sc表中该学生的学号更新。

32

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩:

将student表中“2007030112”的学号改为“2007030122”,观察触发器student_sno是否触发工作,即sc表中是否也全部改为“2007030122”。 2) 查看、删除触发器

(1) 查看触发器的定义、状态和语法等相关信息。 ① 利用SHOW TRIGGERS语句查看。 ② 在triggers表中查看触发器的相关信息。 (2) 删除触发器。

①使用DROP TRIGGER删除student_sno触发器。

3) 使用Navicat工具

使用Navicat工具完成触发器student_sc_insert、触发器student_delete和触发器student_sno的创建、查看和删除。

3.思考题

(1) 能否在当前数据库中为其他数据库创建触发器?

(2) 触发器何时被激发?

四、实验总结:

1、收获

2、存在的问题

33

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验二十 数据库的安全机制

一、实验目的:

(1) 理解My SQL的权限系统的工作原理。 (2) 理解My SQL账户及权限的概念。 (3) 掌握管理My SQL账户和权限的方法。

(4) 学会创建和删除普通用户的方法和密码管理的方法。 (5) 学会如何进行权限管理。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

1)利用Navicat图形工具实现下列操作:

① 使用root用户创建aric用户,初始密码设置为abcdef。让该用户对gradem数据库拥有SELECT、UPDATE、DROP权限。

②使用root用户将aric用户的密码修改为123456 ③查看aric用户的权限。

④用aric用户登录,将其密码修改为aaabbb,并查看自己的权限。 ⑤利用aric用户来验证自己是否有GRANT权限和CREATE权限。 ⑥用root用户登录,收回aric用户的删除权限。 ⑦删除root用户。 ⑧修改root用户的密码。 2) 利用命令实现下列操作:

① 使用root用户创建exam1用户,初始密码设置为123456。让该用户对所有数据库拥有SELECT、CREATE、DROP、SUPER、GRANT权限。

②创建exam2用户,该用户没有初始密码。

③用exam2用户登录,将其密码修改为000000。

④用exam1用户登录,为exam2用户设置CREATE和DROP权限。

34

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: ⑤用exam2用户登录,验证其拥有的CREATE和DROP权限。

⑥用root用户登录,收回exam1用户和exam2用户的所有权限。

⑦删除exam1用户和exam2用户。

⑧修改root用户的密码。

四、实验总结:

1、收获

2、存在的问题

35

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: 实验二十一 数据库的备份与恢复

一、实验目的:

(1) 理解My SQL备份的基本概念。 (2) 掌握各种备份数据库的方法。 (3) 掌握如何从备份中恢复数据。 (4) 掌握数据库迁移的方法。 (5) 掌握表的导入与导出的方法。

二、实验要求

1、学生提前准备好实验报告,预习并熟悉实验步骤; 2、遵守实验室纪律,在规定的时间内完成要求的内容; 3、1~2人为1小组,实验过程中独立操作、相互学习。

三、实验内容及步骤

首先在指定位置建立备份文件的存储文件夹,如D:\\mysqlbak。 (1)利用Navicat图形工具实现数据的备份与恢复。 ①对Gradem数据库进行备份,备份文件名为gradembak。

②备份gradem数据库中的student表,备份文件存储在D:\\mysqlbak,文件名称为studbak.txt。 ③将原有的gradem数据库删除,然后将备份文件gradembak恢复为gradem。

④将gradem数据库中的student表删除,然后将备份文件studbak.txt恢复到数据库中。 (2)使用命令进行数据的备份与恢复。

①使用mysqldump命令备份gradem数据库,生成的gbak.sql文件存储在D:\\mysqlbak。

②使用mysqldump命令备份gradem数据库中的course表和sc表,生成的cs.sql文件存储在D:\\mysqlbak。 ③使用mysqldump命令同时备份两个数据库,具体数据库自定。

④将gradem数据库删除,分别使用mysql命令和source命令将gradem数据库的备份文件gbak.sql恢复到数据库中。

⑤将数据库中的course表和sc表删除,分别使用mysql命令和source命令将备份文件cs.sql恢复到gradem数据库中。

(3)表的导入与导出。

①利用Navicat图形工具分别将gradem数据库中的student表导出为.txt文件、word文件、excel文件和html文件。在导出.txt文件时,根据个人需求,设置不同的栏位分隔符、行分隔符及文本限定符,导出的文件存储在D:\\mysqlbak。

②利用Navicat图形工具将导出的student表的.txt文件和excel文件导入到数据库gradem中,表名分别为stud1和stud2。

③利用SELECT ??INTO OUTFILE命令导出sc表的记录,记录存储到D:\\mysqlbak\\scbak.txt中。

36

山东信息职业技术学院实验报告

学号: 2015030838 姓名: 赵殿强 班级: 网络一班 同组者: 课程名称: 数据库原理及应用 指导老师: 孙灿 实验成绩: ④删除sc表中的所有记录,然后利用LOAD DATA INFILE命令将scbak.txt中的记录加载到sc表中。 ⑤使用mysqldump命令将gradem数据库中的teacher表中的记录导出到文本文件teacherbak.txt中,要求字段之间使用空格“ ”间隔,所有字符类型的字段值用单引号括起来,定义转义字符为星号“*”,每行记录以回车换行符“\\r\\n”结尾,文件存储到D:\\mysqlbak中。

⑥删除gradem数据库中的teacher表,然后使用mysqlimport命令将d:\\mysqlbak\\teacherbak.txt文件中的数据导入到gradem数据库中的teacher表中,字段之间使用逗号“,”间隔,所有字符型字段值用双引号括起来,定义转义字符为单引号“\\’”。

⑦使用mysqldump命令和mysql将student表的记录导出到xml文件中, 文件名分别为stud1.xml和stud2.xml。文件存放在D:\\mysqlbak中。

四、实验总结:

1、收获

2、存在的问题

37

本文来源:https://www.bwwdw.com/article/iabo.html

Top