数据库实验二交互式sql实验报告

上传人:第*** 文档编号:55333070 上传时间:2018-09-27 格式:DOC 页数:32 大小:3.09MB
返回 下载 相关 举报
数据库实验二交互式sql实验报告_第1页
第1页 / 共32页
数据库实验二交互式sql实验报告_第2页
第2页 / 共32页
数据库实验二交互式sql实验报告_第3页
第3页 / 共32页
数据库实验二交互式sql实验报告_第4页
第4页 / 共32页
数据库实验二交互式sql实验报告_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数据库实验二交互式sql实验报告》由会员分享,可在线阅读,更多相关《数据库实验二交互式sql实验报告(32页珍藏版)》请在金锄头文库上搜索。

1、数据库原理课程实验报告数据库原理课程实验报告 1. 实验题目:实验二 交互式 SQL 2.2.实验目的实验目的 1熟悉数据库的交互式 SQL 工具。 2 熟悉通过 SQL 对数据库进行操作。 3 完成例题的上机练习。 3 3 实验平台实验平台 3.13.1 操作系统:操作系统: Windows 2000 或者 Windows XP 注:使用 Professional 版的操作系统建议安装数据库管理系统的教学版, Server 版的操作系统建议安装数据库管理系统的企业版。 3.23.2 数据库管理系统:数据库管理系统: SQL Server 2000 数据库管理系统 4 实验内容及要求实验内容及

2、要求 1. 在 SQL Server 2000 数据库管理系统中建立一个数据库,进行实验所要求的各种操作, 所有的 SQL 操作均在此建立的新库里进行。 2. 根据以下要求认真填写实验报告,记录所有的实验用例。 4.1 数据定义数据定义 1 熟悉基本表的创建、修改及删除。 2 熟悉索引的创建和删除。 3 熟悉视图的创建和删除。 4.2 数据操作数据操作 1 完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询) 。 2 完成各类更新操作(插入数据,修改数据,删除数据) 。 4.3 视图的操作视图的操作 视图的定义(创建和删除) ,查询,更新(注意更新的条件) 。 5. 实验内容与完成情况:

3、 定义基本表: 例 5建立一个“学生”表 Student。 CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); 例6建立一个“课程”表 Course。 CREATE TABLE Course (Cno CHAR(4) PRIMARY KEY, Cname CHAR(40), Cpno CHAR(4), Ccredit SMALLINT, FOREIGN KEY (Cpno) REFERENCES Course(Cn

4、o) ); 例 7建立一个学生选课表 SC。 CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) ); 修改基本表: 例8向 Student 表增加“入学时间”列, 其数据类型为日期型。 ALTER TABLE Student ADD S_entrance DATETIME; 例 9将年龄的数据类型由字符型(假 设原来的

5、数据类型是字符型)改为整数。 ALTER TABLE Student ALTER COLUMN Sage INT; 例10增加课程名称必须取唯一 值的约束条件。 ALTER TABLE Course ADD UNIQUE(Cname); 删除基本表: 例 11删除 Student 表。 DROP TABLE Student CASCADE; 例 12若表上建有视图,选择 RESTRICT 时表不能删除;CASCADE 时可以删除表, 视图也自动被删除。 CREATE VIEW IS_Studdent AS SELECT Sno,Sname,Sage FROM Student WHERE Sde

6、pt= IS; DROP TABLE Student RESTRICT; -ERROR:cannot drop table Student because other objects depend on it DROP TABLE Student CASCADE; -NOTICE:drop cascades to view IS_Student SELECT * FROM IS_Studdent; -ERROR:relation “IS_Studdent“ does not exit 建立索引: 例 13CREATE CLUSTER INDEX Stusname ON Student(Snam

7、e); 删除索引: 例 14为学生-课程数据库中的 Student,Course,SC 三个表建立索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 例 15 删除 Student 表的 Stusname 索引。 DROP INDEX Stusname; 单表查 询 例 1查询全体学生的姓名和年龄。 SELECET Sno,Sname FORM Student; 例3

8、 查询全体学生的详细记录。 SELECT * FROM Student;或 SELECT Sno,Sname,Ssex,Sage,Sdept FROM Student; 例4 查全体学生的姓名及其出生年 份。 SELECT Sname,2004-Sage FROM Student; 例6 查询选修了课程的学生学号。 SELECT Sno FROM SC; 或者 SELECT ALL Sno FROM SC; 例7 查询计算机科学系全体学生的 名单。 SELECT Sname FROM Student WHERE Sdept=CS; 例8 查询所有年龄在20岁以下的学生姓名及其年龄。 SELEC

9、T Sname,Sage FROM Student WHERE Sage 3; 连接查询: 例33 查询每个学生及其选修课程的情况。 SELECT Student.*,SC.* FROM Student,SC WHERE Student.Sno = SC.Sno; 例34 对例33用自然连接完成。 SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student,SC WHERE Student.Sno = SC.Sno; 例35查询每一门课的间接先修课 (即先修课的先修课) 。 SELECT FIRST.Cno,SECOND.Cp

10、no FROM Course FIRST,Course SECOND WHERE FIRST.Cpno = SECOND.Cno; 例36SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade FROM Student LEFT OUT JOIN SC ON (Student.Sno=SC.Sno); 例37查询选修2号课程且成绩在90分以上的所有学生。 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno = SC.Sno AND SC.Cno= 2 AND SC.Grade 9

11、0; 例38查询每个学生的学号、姓名、选修的课程名及成绩。 SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,Course WHERE Student.Sno = SC.Sno and SC.Cno = Course.Cno; 嵌套查询: 例39 查询与“刘晨”在同一个系学习的学生。 此查询要求可以分步来完成 确定“刘晨”所在系名 SELECT Sdept FROM Student WHERE Sname= 刘晨; 查找所有在 IS 系学习的学 生。 SELECT Sno,Sname,Sdept FROM Student WHERE Sd

12、ept= CS; 例40查询选修了课程名为“信息系统”的学生学号和姓名。 SELECT Sno,Sname FROM Student WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM Course WHERE Cname=信息系统 ) ); 例41找出每个学生超过他选修课 程平均成绩的课程号。 SELECT Sno, Cno FROM SC x WHERE Grade =(SELECT AVG(Grade) FROM SC y WHERE y.Sno=x.Sno); 例42 查询其他系中比计算机科学某一学生年龄小的学生

13、姓 名和年龄。 SELECT Sname,Sage FROM Student WHERE Sage CS ; 例43 查询其他系中比计算机科学系所有学生年龄都小 的学生姓名及年龄。 方法一:用 ALL 谓词 SELECT Sname,Sage FROM Student WHERE Sage CS ; 方法二:用聚集函数 SELECT Sname,Sage FROM Student WHERE Sage CS; 例44查询所有选修了1号课程的学生姓名。 用嵌套查询: SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sn

14、o=Student.Sno AND Cno= 1); 用连接运算: SELECT Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno= 1; 例45 查询没有选修1号课程 的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno = Student.Sno AND Cno=1); 例46 查询选修了全部课程的学生姓名。 SELECT Sname FROM Student WHERE NOT EXISTS (SELECT * FROM

15、 Course WHERE NOT EXISTS (SELECT * FROM SC WHERE Sno= Student.Sno AND Cno= Course.Cno ); 例47查询至少选修了学生200215122选修的全部课程的学 生号码。 SELECT DISTINCT Sno FROM SC SCX WHERE NOT EXISTS (SELECT * FROM SC SCY WHERE SCY.Sno = 200215122 AND NOT EXISTS (SELECT * FROM SC SCZ WHERE SCZ.Sno=SCX.Sno AND SCZ.Cno=SCY.Cno

16、); 集合查询: 例48 查询计算机科学系的学生及年龄不大于19岁的学生。 方法一: SELECT * FROM Student WHERE Sdept= CS UNION SELECT * FROM Student WHERE Sage19; 插入数据: 例1 将一个新 学生元组(学号: 200215128; 姓名:陈冬;性别:男;所在系:IS;年龄:18岁)插入到 Student 表中。 INSERT INTO Student (Sno,Sname,Ssex,Sdept,Sage) VALUES (200215128,陈冬,男,IS,18); 例2 将学生张成民的信息插入 到 Student 表中。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号