当前位置:文档之家› 数据库管理系统及其应用开发环境的创建使用

数据库管理系统及其应用开发环境的创建使用

学号:姓名:EMAIL: 学院:专业:《数据库应用实践》实验一:数据库管理系统及其应用开发环境的创建使用实验目的:了解数据库应用开发环境的建立与使用;掌握SQL 语言的使用;通过实践理解关系数据模型的相关概念;掌握数据库应用开发环境的使用;掌握创建、删除数据库的方法;掌握创建基本表、查看表属性、修改属性的方法;掌握向表中添加、删除以及修改数据的方法;掌握查询分析器的使用方法;掌握SELECT 语句在单表查询中的应用;掌握复杂查询、多表查询的方法;掌握视图的使用方法;巩固数据库的基础知识。

实验环境:操作系统: windows 8.1 64 bits数据库管理系统:Microsoft SQL Server 2008实验内容:1.应用背景及设计的数据库名。

a)应用背景:学生选课管理系统,一门课可以由多个老师教授,一个老师可以教多门课程,一个学生可以选修多门课程,一门可以有多个学生选修b)数据库名:mrsunday2. 所设计的各张表结构说明,各表之间关系图说明。

表结构说明:创建4张表,Student表存储学生信息,Teacher表存储教师信息,Course 表存储课程信息,SC表存储学生选课信息及选课成绩。

数据库各表之间关系图说明:3. 依据前面实验一实验内容(2),(3)的要求,写出实现相应操作的SQL 语句并给出运行结果的截图。

(2) 以下内容使用SQL 语句完成:1、设计一个应用场景,创建符合该应用需求的应用数据库。

代码:create database mrsudnay;截图:2、在该数据库中创建至少4 个相互关联的基本表,并设置主键、外键、自定义完整性约束(非空、唯一、默认值、check)。

代码:1)Student 表create table Student(Sno char(20)primary key,Sname char(20)not NULL,Ssex char(2)default'男',Sage smallint not NULL check(Sage between 0 and 90),Sdept char(20)not NULL );2)Teacher表create table Teacher (Tno char(10)primary key,Tname char(20)not NULL,Tsex char(2)default'男',Tage smallint not NULL check(Tage between 20 and 60),Sdept char(20)not NULL);3)Course表create table Course (Cno char(5)primary key,Cname char(20)not NULL,Cpno char(5)NULL,-- Cpno是先修课Ccredit smallint not NULL,foreign key (Cpno)references Course(Cno) );4)SC 表create table SC (Sno char(20),Cno char(5),Tno char(10),Grade smallint check(Grade between 0 and 100),primary key (Sno,Cno,Tno),foreign key (Sno)references Student(Sno),foreign key (Cno)references Course(Cno),foreign key (Tno)references Teacher(Tno) );截图:3、维护基本表的结构。

1)在Student表Ssex列增加完整性约束代码:alter table Student add constraint Ssex_ID check(Ssex in('男','女'));修改前为:修改后为:4、创建并查看索引对象。

代码:create unique index SCno on SC(Sno ASC,Cno ASC,Tno DESC);截图:5、向表中录入若干数据,并维护表中数据。

1) Student表insert into Student values('031302428','mrsunday','男',19,'CS');insert into Student values('031302427','XJ','男', 20,'CS');insert into Student values('031302429','ahaha','男', 20,'CS');insert into Student values('031302426','qdl','男', 21,'CS');2) Teacher表insert into Teacher values('00001','aaa','男','40','CS');insert into Teacher values('00002','bbb','男','41','CS');insert into Teacher values('00003','ccc','男','42','CS');3) Course表insert into Course values('001','Chinese',NULL,'2');insert into Course values('002','database',NULL','3');insert into Course values('003','C Language',NULL,'3');insert into Course values('004','data Struct','003','4');4) SC表insert into SC values('031302426','002','00002','89');insert into SC values('031302427','004','00003','78');insert into SC values('031302428','001','00001','70');insert into SC values('031302429','004','00003','97');5) 维护表中数据项:将Teacher表中所有老师的年龄都增加1岁update Teacherset Tage=Tage+ 1;(3)数据库查询,视图使用在创建的表中自行设计实现以下查询:1、单表查询。

1)查询学生姓名为‘mrsunday’学号,姓名,年龄,所属院系select Sno,Ssex,Sage,Sdept from Student where Sname='mrsunday';2)查询全体学生信息select*from Student;2、多表连接查询并排序输出。

1)查询大于19岁的学生及其选修课程的情况,以学号大小降序输出。

select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Tno,Grade from Student,SCwhere Student.Sno=SC.Sno and Sage> 19order by Sno DESC;2)查询每个学生的学号、姓名、选修课程以及选修成绩。

select Student.Sno,Sname,Cname,Gradefrom Student,SC,Coursewhere Student.Sno=SC.Sno and o=o;3、使用聚集函数的查询。

查询选修004号课程的学生成绩中的最高成绩。

select MAX(Grade) 最高成绩from SCwhere Cno='004';4、分组查询。

查询每门课程的课程编号及其选修人数。

select Cno,COUNT(Sno)选修人数from SCgroup by Cno;5、嵌套查询。

查询与mrsunday同系的所有学生的信息。

select*from Studentwhere Sdept in(select Sdeptfrom Studentwhere Sname='mrsunday');6、创建并查询视图。

1) 创建系为CS的学生视图。

create view CS_Studentasselect Sno,Sname,Ssex,Sagefrom Studentwhere Sdept='CS'with check option;2) 在系为CS的学生视图中查找年龄不小于20的学生学号、姓名、年龄。

select Sno,Sname,Sagefrom CS_Studentwhere Sage>= 20;4.实验小结:(对本次实验有何体会与收获)在这次实验中学会了使用创建数据库,为SQL Server 语言有了一定的了解,其中遇到不少困难,比如安装Microsoft SQL Server 2008 时无法连接本地数据库,在网上看了许多教程才搞好。

查看数据库关系图时,无法直接创建,需要一个授权指令ALTER AUTHORIZATION ON database:: mrsunday TO sa,其后才能创建。

此外创建数据库的时候肯定不可能考虑周全,在表的完整性约束总会有错误或者不合理,开始时不知道怎么搞,从开始的直接删除所有表再重新创建表格到后来可以直接用SQL语句来修改,也算是自己进步的体现。

相关主题