xx大学xx学院实验报告
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
班级xxx学号120202011015姓名zwf指导教师xxx成绩
实验题目交互式SQL-子查询和数据操纵命令实验时间 2013/11/9 一实验目的
1.熟悉使用交互式SQL语句的工具; 2.掌握使用SQL语句创建表;
3.掌握使用SQL插入数据、删除数据和修改数据的功能; 4.掌握使用SQL语句进行嵌套查询; 5.掌握SQL语句的集合查询。
二实验工具SQL Server 2008
利用SQL Server 2008及其新建查询窗口;
三实验内容和要求
1.在SQL Server 2008中建立一个数据库,这个数据库可以建立在实验机器的本地服务器上;
2.登录数据库服务器,连接数据库服务器,按照实验要求,在上面创建的数据库中创建下面三张表,并插入相关的数据。
3.根据以下要求认真填写实验报告,记录完成创建表和查询数据的SQL语句;
3.1数据定义
(1)熟悉基本表的创建、修改及删除。 (2)熟悉常用约束的定义。
3.2 数据操纵
(1)熟悉插入数据、删除数据和修改数据的SQL语句;
3.3 数据查询
(1)完成各类查询操作--嵌套查询、集合查询;
3.4具体操作内容
在实验数据库中,创建学生表(Student)、课程表(Course)和选课表(SC),向三个表中分别插入相关数据,用SQL语句完成以下相关操作。 1.使用SQL语言创建下面的三个表。 表一:学生信息表(Student) 列名 说明 数据类型 约束 Sno 学号 字符串,长度为7 主码 Sname 姓名 字符串,长度为10 非空
1
Ssex Sage Sdept 性别 年龄 所在系 字符串,长度为2 微整型 字符串,长度为20 表二:课程信息表(Course) 列名 说明 数据类型 约束 Cno 课程号 字符串,长度为10 主码 Cname 课程名 字符串,长度为20 非空 Ccredit 学分 整型 Semster 学期 整型 Period 学时 整型 表三:学生选课信息表(SC) 列名 说明 数据类型 约束 Sno 学号 字符串,长度为7 主码,引用Student的外码 Cno 课程号 字符串,长度为10 主码,引用Course的外码 Grade 成绩 整型 XKLB 修课类别
2.在以上的三个表中,分别插入下面的数据; Sno 9512101 9512102 9512103 9521101 9521102 9521103 9531101 9531102 Cno C01 C02 C03 C04 C05 C06
2
字符串,长度为4 可空 Sname 李勇 刘晨 王敏 张立 吴宾 张海 钱小平 王大力 Ssex 男 男 女 男 女 男 女 男 Sage 19 20 20 22 21 20 18 19 Ccredit 3 2 4 6 8 5 Sdept 计算机系 计算机系 计算机系 信息系 信息系 信息系 数学系 数学系 Semester 1 3 7 6 2 4 Cname 计算机文化基础 VB 计算机网络 数据库基础 高等数学 数据结构
Sno 9512101 9512101 9512101 9512102 9512102 9512102 9512102 9512102 9512103 9512103 9531101 9531101 9531102 Cno C01 C02 C06 C02 C04 C01 C05 C06 C02 C06 C01 C05 C05 Grade 90 86 62 78 66 82 92 50 68 62 80 95 85 XKLB 必修 选修 必修 选修 必修 选修 必修 必修 选修 必修 选修 必修 必修 3.5使用SQL语句完成下面要求的内容
1.创建表;
(1)写出创建上面的学生信息表的SQL语句; (2)写出创建上面的课程信息表的SQL语句; (3)写出创建上面的选课信息表的SQL语句; 2.修改表
(1)修改学生信息表,给性别列添加只能取“男”或“女”的约束; (2)修改课程信息表,要求课程名不能取相同的名字;
(3)修改学生选课信息表,将成绩列的数据类型改为微整数类型; 3.插入、修改和删除数据
(1)写出向上面表中插入数据的SQL语句; (2)把王敏同学的所在系改为信息系;
(3)把数据库基础改名为数据库原理与应用; (4)删除成绩小于40分的选课信息; 4.使用嵌套查询,完成下面要求的查询
(1)查询课程成绩大于90分的学生的姓名、性别和所在系;
(2)查询计算机系所有学生的C02号课程的成绩,列出学号和成绩,并按成绩由高到低排序;
(3)查询出成绩大于该课程平均分的学生的学号、课程号和成绩; (4)查询哪些学生没有选课,要求列出学号、姓名、性别和所在系;
(5)查询既选修了C03号又选修了C05号课程的学生的姓名、性别和所在系; (6)查询信息系成绩在80分以上的学生的学号、姓名; (7)查询数学系考试成绩最高的学生的姓名;
(8)查询选修了所有课程的学生的学号、姓名、性别和所在系;
3
5.使用集合查询,完成下面要求的查询
(1)查询是数据系或者是信息系学生的姓名、性别、年龄和所在系; (2)查询信息系年龄大于18岁的学生的学号、姓名、性别; (3)查询既选了C01号课程又选了C04号课程的学生的学号; (4)查询既不姓张也不姓王的学生的学号、姓名和所在系;
四实验报告 4.1实验环境: Win 7
SQL Server 2008
4.2实验内容与完成情况:
--1.创建表;(1)写出创建上面的学生信息表的SQL语句; CREATETABLEStudent(
Snochar(7)Primarykey, Snamechar(20)notnull, Ssexchar(2), Sagesmallint, Sdeptchar(20) );
--(2)写出创建上面的课程信息表的SQL语句; CREATETABLECourse(
Cnochar(10)Primarykey, Cnamechar(20)notnull, Ccreditint, Semsterint, Periodint );
--(3)写出创建上面的选课信息表的SQL语句; CREATETABLESC( Snochar(7), Cnochar(10), Gradeint, XKLBchar(4),
Primarykey(Sno,Cno),
Foreignkey(Sno)referencesStudent(Sno), Foreignkey(Cno)referencesCourse(Cno) );
4
--2.修改表(1)修改学生信息表,给性别列添加只能取“男”或“女”的约束;p/87
AltertableStudentaddcheck(Ssexin('男','女')); --(2)修改课程信息表,要求课程名不能取相同的名字; AltertableCourseaddunique(Cname);
--(3)修改学生选课信息表,将成绩列的数据类型改为微整数类型; AltertableSCAltercolumnGradesmallint;
--3.插入、修改和删除数据
--(1)写出向上面表中插入数据的SQL语句;
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9512101','李勇','男',19,'计算机系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9512102','刘晨','男',20,'计算机系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9512103','王敏','女',20,'计算机系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9521101','张立','男',22,'信息系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9521102','吴宾','女',21,'信息系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9521103','张海','男',20,'信息系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9531101','钱小平','女',18,'数学系');
InsertintoStudent(Sno,Sname,Ssex,Sage,Sdept)Values('9531102','王大力','男',19,'数学系'); --Course数据
InsertintoCourse(Cno,Cname,Ccredit,Semster)Values('C01
5