数据库原理实验指导书(Mysql) - 范文中心

数据库原理实验指导书(Mysql)

07/07

数据库原理实验指导书

实验项目列表

实验一:数据库的定义实验

一、实验目的:

1、理解MySQL Server 6.0 服务器的安装过程和方法;

2、要求学生熟练掌握和使用SQL 、T-SQL 、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer, 接收T -SQL 语句和进行结果分析。

二、实验环境:

硬件:PC 机

软件:Windows 操作系统、 MySQL Server 6.0 和Navicat for MySQL 9.0

三、实验内容和原理:

1、安装MySQL 以及相应的GUI 工具

2、用SQL 命令,建立学生-课程数据库基本表 :

学生Student (学号Sno ,姓名Sname ,年龄Sage ,性别Ssex ,所在系Sdept );

课程Course (课程号Cno ,课程名Cname ,先行课Cpno ,学分Ccredit ); 选课SC (学号Sno ,课程号Cno ,成绩Grade ); 要求:

1) 用SQL 命令建库、建表和建立表间联系。 2) 选择合适的数据类型。

3) 定义必要的索引、列级约束和表级约束.

四、实验步骤:

1、运行Navicat for MySQL,然后进行数据库连接,进入到GUI 界面; 2、利用图形界面建立基础表: student 表的信息:

sc 表的信息:

(1)、连接数据库,在localhost 中点击鼠标右键(如图1所示),点击“新建数据库”,在弹出的窗口中输入数据库名称(如图2所示),然后单击“确定”,就完成了数据库的建立。

图1 新建数据库 图2

(2)、进入新建的数据库,在表的位置单击鼠标右击(如图3所示),点击“新建表”,分别在“栏位”中输入上表所示的字段名、类型及长度中的数据(如图4、5、6所示),在“外键”中输入对应表的约束条件(如图)。

图3 新建表 图4 student 表

图5 course 表 图6 sc 表

图7 course的约束条件 图8 sc 的约束条件

3、利用命令方式建表:

(1)、单击“查询”,然后点击“新建查询”,在弹出的新建查询窗口中输入“CREATE DATABASE zhz”命令,建立一个名为zhz 的数据库;

(2)、通过“use zhz”命令进入到zhz 数据库中; (3)、在查询编辑器窗口中分别输入命令: 建立student 表:

CREATE TABLE student

(Sno varchar(9) PRIMARY KEY, Sname varchar(20) UNIQUE, Ssex varchar(2), Sage SMALLINT, Sdept varchar(20) )

建立course 表:

CREATE TABLE course

(Cno varchar(4) PRIMARY KEY, Cname varchar(40), Cpno varchar(4), Ccredit SMALLINT,

FOREIGN KEY (Cpno) REFERENCES course(Cno) )

建立sc 表:

CREATE TABLE sc (Sno varchar(9), Cno varchar(4), Grade SMALLINT,

PRIMARY KEY (Sno,Cno),

FOREIGN KEY (Sno) REFERENCES student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES course(Cno) ON DELETE NO ACTION ON UPDATE CASCADE )

(4)、向student 表中添加“Sentrance ”列: ALTER TABLE student ADD Sentrance DATE (5)、将student 表中“Sentrance ”的类型改为varchar

ALTER TABLE student MODIFY COLUMN Sentrance varchar(4);

(6)、删除student 表中的“Sentrance ”列: ALTER TABLE student DROP Sentrance;

五、实验结果

1、student 表:

2、course 表:

3、sc 表:

4、向student 表中添加Sentrance 列:

5、student 表的基本信息:

6、将Sentrance 的数据类型改为varchar :

六、总结:

通过这次实验,要求掌握了数据库的定义以及基本表的建立,熟悉MySQL 图形界面和SQL 命令去创建、修改、删除基本表及设定表级完整性约束,巩固了SQL 的一些常用的命令语句,为接下来的实验奠定基础。

实验二:数据库的建立和维护实验

一、实验目的和要求

熟练掌握使用 SQL 、Transact-SQL 和SQL Server企业管理器向数据库输入数据、修改数据和删除数据的操作。

二、实验内容和原理

1、基本操作实验

(1) 通过MySQL 的GUI 工具Navicat ,在学生-课程数据库的student 、course 和sc 3个表中各输入若干条记录。要求记录不仅满足数据约束要求,还要有表间关联的记录。

(2)通过MySQL 的GUI 工具Navicat 实现对学生-课程数据库的student 、

course 和sc 3个表中数据的插入、删除和修改操作。

2、提高操作实验

通过查询编辑器用SQL 命令实现对学生-课程库的数据增加、数据删除和数

据修改操作。

三、实验环境

硬件:PC 机

软件:Windows 操作系统、 MySQL Server 6.0 和Navicat for MySQL 9.0

四、算法描述及实验步骤

1、基本操作实验

(1)运行“Navicat ”,双击“student ”表,将学生的信息输入对应位置(如

图1所示);双击“course ”表,将课程信息输入对应位置(如图2所示);双击“sc ”表,将选课信息输入对应位置(如图3所示);

(2)需要数据插入时,就在最后一条记录后输入一条记录。当鼠标点击其

他行时,输入的记录会自动保存在表中。

(3)需要修改记录时,直接对表中已有记录的数据进行改动,用新值替换原有的值。

(4)需要删除记录时,先用鼠标单击要删除行的左边灰色方块,使该记录

成为当前行,然后按键。为了防止误操作,MySQL 会弹出一个警告框,要求用户确认删除操作,单击“确认”按钮即可删除记录。也可通过先选中一行或多行记录,然后再按 键的方法一次删除多条记录。

图1 student 表的数据 图2 course 表的数据

图3 sc 表的数据 图4 警告图标

2、提高操作实验

在查询编辑器中输入以下代码,实现相应的功能。

(1)将(学号:2008004;姓名:李四;性别; 男;所在系:IS;年龄:20)的学生信息插入到student 表中,实现的代码如下:

INSERT INTO student(Sno,Sname,Ssex,Sdept,Sage) V ALUES('2008004','李四',' 男','IS',20);

(2)将student 表中学号为2008001的学生的所在系改为MA ,实现代码如下:

UPDA TE student SET Sdept='MA'

WHERE Sno='2008001'

(3)删除姓名为“张立”的学生记录,实现代码如下:

DELETE FROM student

WHERE Sname='张立'

五、调试过程

提示操作失败,应将SET Sdept=MA和WHERE Sno=2008001改为:

SET Sdept='MA' 和WHERE Sno='2008001',然后再运行,提示修改成功,如下图:

六、实验结果

1、向student 表插入数据:

2、修改数据:

3、删除数据:

七、总结

通过这次实验,掌握了数据库的建立和维护的基本知识以及约束条件的作用,掌握使用MySQL 图形界面和SQL 命令对建立的基本表进行添加数据、修改数据、删除数据的操作,同时也巩固了SQL 命令中的添加、修改、删除语句,为以后做数据库的维护奠定基础。

实验三:数据库的查询实验

一、实验目的和要求

1、掌握select 语句的基本语法; 2、掌握子查询、连接查询的表示;

3、掌握select 语句的GROUP BY、ORDER BY、LIMIT 的作用和使用方法。

二、实验内容和原理

1、select 语句的基本使用:

(1)查询student 表中每个学生的所有数据; (2)查询course 和sc 表的所有记录;

(3)查询年龄在17~19岁之间的学生的姓名及年龄; (4)统计学生总人数;

(5)查询信息系(IS )学生的姓名和性别; (6)查询所有姓“王”的学生的信息。 2、子查询的使用:

(1)查询与“李勇”在同一个系的学生

(2)查询其他系中比CS 系所有学生年龄都小的学生的姓名和年龄。 3、连接查询的使用:

(1)查询选修了3号课程且成绩在85分以上的学生的学号、姓名。 (2)查询所有学生的选课情况。

4、GROUP BY、ORDER BY和LIMIT 子句的使用: (1)查找student 中男生和女生的人数;

(2)查找选修了2号课程的学生的学号及其成绩,查询结果按成绩降序排列;

(3)返回student 表中的前3为同学的信息。

三、实验环境

硬件:PC 机

软件:Windows 操作系统、 MySQL Server 6.0 和Navicat for MySQL 9.0

四、算法描述及实验步骤

1、select 语句的基本使用:

(1)查询student 表中每个学生的所有数据:

SELECT * FROM student

(2)查询年龄在17~19岁之间的学生的姓名及年龄:

SELECT Sname,Sage FROM student

WHERE Sage BETWEEN 17 AND 19

(3)统计学生总人数:

SELECT COUNT(*) FROM student

(4)查询信息系(MA )学生的姓名和性别:

SELECT Sname,Ssex FROM student

WHERE Sdept IN('MA')

(5)查询所有姓“王”的学生的信息。

SELECT * FROM student

WHERE Sname LIKE '王%'

2、子查询的使用:

(1)查询与“李勇”在同一个系的学生的姓名和所在系:

SELECT Sname,Sdept FROM student WHERE Sdept IN (SELECT Sdept FROM student

WHERE Sname='李勇')

(2)查询其他系中比IS 系所有学生年龄都小的学生的姓名和年龄。SELECT Sname,Sage FROM student

WHERE Sage

WHERE Sdept='IS')

3、连接查询的使用:

(1)查询选修了3号课程且成绩在85分以上的学生的学号、姓名:SELECT Sno,Sname FROM student WHERE Sno IN

(SELECT Sno FROM sc

WHERE Cno='3')

(2)查询有选课的学生的基本情况。

SELECT student.Sno,student.Sname,course.Cno,course.Cname FROM student,sc,course

WHERE student.Sno=sc.Sno AND sc.Cno=course.Cno

4、GROUP BY、ORDER BY和LIMIT 子句的使用: (1)查找student 中男生和女生的人数:

SELECT Ssex,COUNT(Ssex) FROM student GROUP BY Ssex

(2)查找选修了2号课程的学生的学号及其成绩,查询结果按成绩降序排列:

SELECT Sno,Grade FROM sc

WHERE Cno='2'

ORDER BY Grade DESC

(3)返回student 表中的前3为同学的信息。

SELECT * FROM student LIMIT 3

五、 实验结果

1、select 语句的基本使用: (1)

(2)

(3) (4)

(5)

2、子查询的使用:

(1)

(2)

3、连接查询的使用:

(1)

(2)

4、GROUP BY、ORDER BY和LIMIT 子句的使用:

(1)

(2)

(3)

六、总结

通过这次实验,掌握了select 语句的基本使用方法,对数据库中的数据进行查询方法有了进一步的了解,巩固了子查询和连接查询的使用以及GROUP BY、ORDER BY和LIMIT 子句的使用,为以后做数据库数据的查询奠定基础。

说明:可以一次插入多条记录

实验四:数据库的视图操作实验

一、实验目的和要求

1、熟悉视图的概念和作用; 2、掌握视图的创建方法; 3、掌握如何查询和修改视图。

二、实验内容和原理

1、创建视图:

(1)创建zhz 数据库上的视图student_view,视图包含学号、姓名、系; (2)创建zhz 数据库上的视图sc_view,视图包含sc 表的全部列。 2、查询视图:

(1)从视图sc_view中查看选修了3号课程的学生的学号; (2)从视图student_view中查询姓名为“王敏”的学生所在的系。 3、更新视图:

(1)向视图sc_view中插入一行数据:2008005,5,87; (2)将视图student_view中学号=2008002的学生的系改为MA ; (3)删除视图student_view中学号=2008007的学生的信息。 4、删除视图:

(1)删除视图sc_view; 5、在界面工具中操作视图

三、实验环境

硬件:PC 机

软件:Windows 操作系统、 MySQL Server 6.0 和Navicat for MySQL 9.0

四、算法描述及实验步骤

1、创建视图:

(1)创建zhz 数据库上的视图student_view,视图包含学号、姓名、系:

CREATE VIEW student_view AS

SELECT Sno,Sname,Sdept FROM student

(2)创建zhz 数据库上的视图sc_view,视图包含sc 表的全部列:

CREATE VIEW sc_view AS

SELECT * FROM sc

2、查询视图:

(1)从视图sc_view中查看选修了3号课程的学生的学号:

SELECT Sno FROM sc_view WHERE Cno='3'

(2)从视图student_view中查询姓名为“王敏”的学生所在的系:

SELECT Sname,Sdept FROM student_view WHERE Sname='王敏'

3、更新视图:

(1)向视图sc_view中插入一行数据:2008005,5,87;

INSERT INTO sc_view V ALUES('2008005','5','87')

(2)将视图student_view中学号=2008002的学生的系改为MA ;

UPDA TE student_view SET Sdept='MA'

WHERE Sno='2008002'

(3)删除视图student_view中学号=2008007的学生的信息;

DELETE

FROM student_view WHERE Sno='2008007'

4、删除视图:

(1)删除视图sc_view;

DROP VIEW sc_view

5、在界面工具中操作视图

(1)创建视图:选择zhz 数据库,单击“视图”图标,单击“新建视图”,单击“视图创建工具”,双击“student ”表,选择“Sno ,Sname ,Sdept ”,然后

单击“保存”,输入视图名“student_view”,单击“确定”按钮。

(2)查询视图:双击视图名,可直接查看视图中的数据

(3)删除视图:在视图窗体中,选择要删除的视图,点击鼠标右键,选择“删除视图”,然后单击“删除”:

五、实验结果

1、创建视图:

(1) (2)

2、查询视图:

(1) (2)

3、更新视图: (1)插入

(2)修改

(3)删除

5、在界面工具中操作视图

六、总结

通过这次实验,掌握了视图的创建、查询、修改以及删除等基本操作;了解了视图与基本表的区别,视图是一个虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中;巩固了视图的基本概念及其作用。

实验五:触发器、存储过程操作实验

一、实验目的和要求

1、掌握存储过程创建和调用的方法; 2、掌握MySQL 中程序片段的组成; 3、掌握触发器的使用方法。

二、实验内容和原理

1、存储过程:

(1)创建存储过程,使用student 表中的学生人数来初始化一个局部变量,并调用这个存储过程;

(2)创建存储过程,比较两学生的年龄,若前者比后者大就输出0,否则输出1。

2、触发器:

(1)创建触发器,在student 表中删除学生信息的同时将sc 表中该学生的选课信息删除,以确保数据的完整性;

(2)假设course1表和course 表的结构和内容都相同,在course 上创建一个触发器,如果添加一门新的选修课程,该课程也会被添加到course1表中。

(3)定义一个BEFORE 行级触发器,为teacher 表定义完整性规则,“向teacher 插入教授的信息时,工资不得低于4000元,如果低于4000元,则自动将其更改为4000元”。

(4)删除teacher 表上的触发器teacher_Income 。

三、实验环境

硬件:PC 机

软件:Windows 操作系统、 MySQL Server 6.0 和Navicat for MySQL 9.0

四、算法描述及实验步骤

1、存储过程:

(1)创建存储过程,使用student 表中的学生人数来初始化一个局部变量,

并调用这个存储过程:

delimiter $$

CREATE PROCEDURE TEST(OUT number1 INTEGER) BEGIN

DECLARE number2 INTEGER;

SET number2=(SELECT COUNT(*) FROM student); SET number1=number2; END $$ Delimiter ;

调用该存储过程:CALL TEST(@number) 查看结果:SELECT @number

(2)创建存储过程,比较两学生的年龄,若前者比后者大就输出0,否则输出1:

delimiter $$

CREATE PROCEDURE

COMPA(IN Sno1 varchar(9),IN Sno2 varchar(9),OUT BJ INTEGER) BEGIN

DECLARE SR1,SR2 FLOAT(10);

SELECT Sage INTO SR1 FROM student WHERE Sno=Sno1; SELECT Sage INTO SR2 FROM student WHERE Sno=Sno2; IF Sno1>Sno2 THEN SET BJ=0; ELSE SET BJ=1; END IF; END $$ Delimiter ;

调用该存储过程:CALL COMPA('2008002','2008003',@BJ); 查看结果:SELECT @BJ 2、触发器:

(1)创建触发器,在student 表中删除学生信息的同时将sc 表中该学生的选课信息删除,以确保数据的完整性:

CREATE TRIGGER DELETE_SM AFTER DELETE ON student FOR EACH ROW DELETE FROM sc WHERE Sno=OLD.Sno

删除student 表中的一行数据,然后查看sc 表的变化:

DELETE FROM student WHERE Sno='2008007'

观察sc 表的变化;

(2)假设student1表和student 表的结构和内容都相同,在student 上创建一个触发器,如果添加一个学生的信息,该信息也会被添加到student1表中:

delimiter $$

CREATE TRIGGER student_Ins

AFTER INSERT ON student FOR EACH ROW BEGIN

INSERT INTO student1

V ALUES(new.Sno,new.Sname,new.Ssex,new.Sage,new.Sdept); END $$ Delimiter ;

向student 表中添加一条新信息('2008006','杨过',' 男',19,'IS') :

INSERT INTO student

V ALUES('2008006','杨过',' 男',19,'IS'); 观察student1表的变化;

(3)定义一个BEFORE 行级触发器,为teacher 表定义完整性规则“插入教授的信息时,工资不得低于4000元,如果低于4000元,则自动改为4000元”:

CREATE TRIGGER teacher_Income

BEFORE INSERT ON teacher FOR EACH ROW BEGIN

IF(new.Job='教授')AND(new.Income

向teacher 表中添加一条新信息('10006',' 林涛',' 男',' 教授',3500) :

INSERT INTO teacher

V ALUES('10006','林涛',' 男',' 教授',3500) 观察teacher 表的结果;

(4)删除teacher 表上的触发器teacher_Income 。

DROP TRIGGER teacher_Income;

五、调试过程

1、

提示出现语法错误,应在“new.Income=4000;”前添加SET ,然后再运行:

2、

提示出现语法错误,应在“DROP TRIGGER teacher_Income ON teacher”中的“ON teacher” 删除,然后再运行:

六、实验结果

实验前:

实验截图 1、存储过程::

2、触发器:: (1)

(2)

(3)

七、总结

通过这次实验,掌握了存储过程的创建和调用方法以及触发器的创建、删除操作;了解了触发器在数据库中所起到的作用,它是数据库完整性的一个重要方法;巩固了存储过程和触发器的基本概念。


相关内容

  • 大连交通大学软件毕业设计系列-调研报告
    毕业设计(论文) 实习(调研)报告 学生姓名 专业班级 所在院系 指导教师 职 称 所在单位 完成日期 2011年 10月 15日 实习(调研)报告 一.课题的来源及意义 手机游戏是指运行于手机上的游戏软件,随着科技的发展,现在手机的功能也 ...
  • 人事管理系统毕业论文
    本科毕业论文(设计) 论文(设计)题目: 人事综合管理系统 学 院: 专 业: 班 级: 学 号: 学生姓名: 指导教师: 年 月 日 贵州大学本科毕业论文(设计) 诚信责任书 本人郑重声明:本人所呈交的毕业论文(设计),是在导师的指导 下 ...
  • 基于JSP的图书管理系统
    **学院 毕业设计(论文) 基于JSP 的图书管理系统 系 别 : 专业(班级): 作者(学号): 指导教师: 完成日期: **学院教务处制 目 录 基于JSP 的图书管理系统 . ............................. ...
  • 怎样写毕业论文才通过答辩(毕业论文答辩)
    怎样写毕业论文才通过答辩 答辩是毕业的重要环节 毕业设计和毕业论文是本科生培养方案中的重要环节.学生通过毕业论文,综合性地运用几年内所学知识去分析.解决一个问题,在作毕业论文的过程中,所学知识得到疏理和运用,它既是一次检阅,又是一次锻炼.不 ...
  • 求职简历-互联网软件开发工程师
    教育背景 2013.09-至今 软件开发大学 计算机软件与理论 离散数学,C语言,数据结构,操作系统,数据库原理,编译原理,软件工程计算机网络,windows/unix编程,图形图像学 2009.09-2013.07 互联派软件开发学院计算 ...
  • Dubbo路由模块设计说明书
    Dubbo 路由模块 设计说明书 修改记录 1 目录 1. 1.1. 1.2. 引言 ............................................................................. ...
  • 测试应聘简历
    个人简历 姓名 籍贯 政治面貌 专业 联系电话 求职意向 汤先正 江西/宜春 团员 计算机应用 [1**********] 1. 2. 1. 个人简介 2. 3. 4. 个人话语 所受教育 1. 2. 应聘工作:软件测试 求职地点:武汉 能 ...
  • 模块概要设计说明书
    校园博客系统模块概要设计说明书 1. 引言 1.1编写目的 在本校园博客系统项目的前一阶段,已经将系统用户对本系统的需求做了详细的阐述,这些用户需求已经在上一阶段中对多所学院的实地调研中获得. 本阶段已在系统的需求分析的基础上,对校园博客系 ...
  • xx网站运营计划书
    网站运营计划书 方案目录 一. 网站运营的工作组成部分 二. 网站的运营计划目标 三. 网站运营的具体方法策略 四. 网站运营的岗位设置.技术要求及电脑配置 五. 网站运营的效果评价 六. 网站运营的岗位安排及制度 七. 网站维护和服务器系 ...