MySQL实现数据库设计实验

用 MySQL实现数据库设计实验

实验二 用 MySQL 实现数据库设计实验目的:

1. 掌握使用命令行方式创建和管理 MySQL 数据库及相关数据库对象。

2. 掌握使用 SQL 语言中的 SELECT 命令实现查询功能。

上机准备:

1.复习有关关系数据库的基本知识和概念;

2.复习有关 SQL
语言中 SELECT 命令的使用;

3.了解有关 MySQL
系统的组成;

4.了解有关 MySQL
服务器的使用和管理;

5.了解有关 Navicat for MySQL 的基本操作;

6.了解有关数据库备份和恢复的基本操作;实验内容:

本实验将建立一个学校教学管理数据库,在这个数据库中,存储以下信息:

1.有关学生的信息,包括学生的学号,姓名,性别,出生日期,所在班级;

student(Sno,sname,
ssex,sbirth,ClassNo)

Sno CHAR(10),sname varCHAR(8),ssex CHAR(2) DEFAULT ‘男’,

sbirth date,ClassNo char(10)

2.有关班级的信息,包括班级的班名10,专业v10,年级v10,人数,班主任v10,所在院系v18;

sclass(ClassNo,className,major,grade,number,advisor,Dno)

3.有关课程的信息,包括课程编号10,课程名称v50,课程类别(是指该课程为必修,指选还是任选)v50,适用专业v50,开课时间v20,学分v10,周学时v10,先导课号v50(先修课);

course(Cno,cname,category,major, startTM,credits,
weekHours,Cpno)

4.有关教师的信息,包括教师编号10,教师姓名v10,教师性别v10,教师年龄,参加工作时间,所在院系v18;

teacher (Tno,Tname,Tsex,Tage,Tworktime,Dno)

5.有关院系的信息,包括院系编号 10,院系名称v50,院系主任v10,院系所在地址;

department(Dno,Dname,Tno,address)

6.有关学生选课的信息,包括课程编号10,学生的学号,成绩;

sc(Sno,Cno,score)

7.有关教师教授课程的信息,包括教师编号10,课程编号10,授课地点v50,授课学期vchar(10);

tc (Tno,Cno,location,term)

      根据第一次实验定义外键和未列出的关系模型,设计生成正确的表。          

一、
熟悉开发环境练习:

1.安装 MySQL
数据库和 Navicat 软件。启动或停止 MySQL 服务器

2.了解 MySQL
的版本、数据库引擎、字符集、root 账号和默认端口号。

3.学会使用 MySQL
服务器的连接

4.使用 MySQL
的命令输入界面来执行 SQL 命令。

二、
使用 MySQL 的命令行方式完成数据库及数据库对象的创建和管理实验步骤:

1.创建数据库

(1)要求参数: 数据库名称:study

(2)创建后用 SHOW
查看刚创建的数据库 study;

(3)用 USE
命令选用数据库 study;

(4)用 SQL
语句删除数据库 study;

(5)(选做)用 MYSQLADMIN
创建和删除;直接在数据库目录中创建和删除。

2.创建表

(1)根据上述数据库的信息,决定创建几个表,并给每一个表指定一个有意义的表名;

(2)根据每个表中每列存储的数据的情况,为每个列指定列名,数据类型,数据的长度,是否允许为空等列的属性;

(3)使用命令行方式或者 Navicat
建立所有的表;

(4)创建之后,还可以根据具体情况,再对表的结构进行修改;(包括添加列,删除列,修改已存在的列)

3.实现数据完整性

(1)针对每一个表分析并定义主码(Primary Key)

(2)定义 UIQUE
约束

用来规定一个列中的两行不能有相同的值;例如:希望学生的姓名是唯一的;

(3)针对每一个表分析外部码,并利用“关系图”定义外部码(Foreign
Key),建立表之间的参照关系;

以下示例并不完整,请根据上述数据库的信息补充完整 SQL 命令,并创建表和对应的外键。

例如:

CREATE TABLE student (
sno char(7) NOT NULL,

sname varchar(16)
NOT NULL,

PRIMARY KEY (sno)

);

CREATE TABLE course (
cno char(2) NOT NULL,

cname varchar(20)
NOT NULL,

PRIMARY KEY (cno)

);

Create table sc(

sno char(9) NOT NULL,

cno char(4)NOT, score smallint,

Primary key(sno,cno),

Foreign key(sno) refrences student(sno),

Foreign key(cno) refrences course(cno)

);

(4)创建以上约束后,练习修改约束的操作(包括增加,修改和删除以上约束);

4.根据自己所在班级的情况,对已经创建的表自己输入一些相关示例数据,在输入的过程中,特地输入一些违反上述约束条件的数据,观察处理的效果;

(1)使用企业管理器,完成一些记录的插入、修改和删除;

(2)练习使用
INSERT、UPDATE、DELETE
命令完成记录的插入、修改和删除;如果对该命令的使用不是很清楚,请练习查找“帮助系统”完成上述命令的学习;

  insert into student values('2017210000','张三','男','1998-04-05', '2017211130')         insert

into course values(‘1’, ‘数据库技术’, ‘指选’,
‘通信工程’, ‘第 2
学期’, ‘2’, ‘2’,NULL) insert
into sc(sno,cno) values(‘2017210000’,’1’)
update course set startTM= ‘每年第
2 学期’
where cno= ‘1’ update sc set score = 90 where sno =’
2017210000’ and cno =’1’ delete from sc where sno =’ 2017210000’ and cno=’1’

(3)练习使用
TRUNCATE TABLE 命令删除表数据; truncate table sc

三、使用 Navicat
创建和管理索引

1.利用表的属性对话框,观察每个表已经自动创建的索引;

2.针对学生选课信息表创建如下索引

(1)
按学号+课程编号建立主键索引;

create index PK_SC ON
SC(sno,cno)

(2)
按学号建立索引,考虑是否需要创建唯一索引;

(3)
按课程编号建立索引,考虑是否需要创建唯一索引;

3.练习索引的修改和删除操作

4.查阅 MySQL
数据库索引的类型、Unique 索引和 FullText
索引,以及效率的问题。

四、实现以下查询
1.练习课堂上举例介绍的几类查询;

2.实现以下查询

(1) 检索选修了课程号为C1或C2课程,且成绩高于或等于70分的学生的姓名,课程名和成绩。

(2) 检索姓“王”的所有学生的姓名和年龄。

(3) 检索没有考试成绩的学生姓名和课程名。

(4) 检索年龄大于女同学平均年龄的男学生姓名和年龄。

注:上述查询中所用的课程号和学号的值,可以根据自己表中的数据作修改;为了验证查询的正确,可能还需要输入或修改表中的示例数据;

五、创建和管理视图

1.创建视图:
使用 Navicat 或使用 CREATE
VIEW 命令

例 1:创建视图,包含所有通信工程专业的学生的信息;例 2:创建视图,包含所有学生的学号,姓名,选课的课程名和成绩;

2.利用已经创建的视图进行查询;

具体代码: https://download.csdn.net/download/by1jing/12364706

你可能感兴趣的:(MySQL实现数据库设计实验)