2023年实验二:交互式sql.pdf
《2023年实验二:交互式sql.pdf》由会员分享,可在线阅读,更多相关《2023年实验二:交互式sql.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-最新资料推荐-1/25 实验二:交互式 sql 交互式 SQL 语言 题目:实验二(1)交互式 SQL 语言 姓名 Vivian 日期 2005-1-1 实验内容及完成情况:(写出每一种类型的 SQL 测试用例)(一)数据定义 一、基本表操作 1.建立基本表 1)创建学生表 Student,由以下属性组成:学号 SNO(INT 型,主码),姓名 SNAME(CHAR 型,长度为 8,非空唯一),性别 SEX(CHAR 型,长度为 2),所在系 DEPTNO(INT 型)。CREATE TABLE Student(SNO INT PRIMARY KEY,SNAME CHAR(8)NOT NUL
2、L UNIQUE,SEX CHAR(2),DEPTNO INT);2)创建课程表 Course,由以下属性组成:课程号 CNO(INT 型),课程名 CNAME(CHAR 型,长度为 20,非空),授课教师编号 TNO(INT 型),学分 CREDIT(INT 型)。其中(CNO,TNO)为主码。CREATE TABLE Course(CNO INT,CNAME CHAR(20)NOT NULL,TNO INT,CREDIT INT,PRIMARY KEY(CNO,TNO);3)创建学生选课表 SC,由以下属性组成:学号 SNO,课程 CNO,成绩 GRADE。所有属性 均为 INT 型,其中
3、(SNO,CNO)为主码。CREATE TABLE SC(SNO INT,CNO INT,GRADE INT,PRIMARY KEY(SNO,CNO);4)创建教师表 Teacher,由以下属性组成:教师编号 TNO(INT 型,主码),教师姓名 TNAME(CHAR 型,长度为 8,非空),所在系 DEPTNO(INT 型)。CREATE TABLE Teacher(TNO INT PRIMARY KEY,TNAME CHAR(8)NOT NULL,DEPTNO INT);5)创建系表 Dept,由以下属性:系号 DEPTNO(INT 型,主码),系名 DNAME(CHAR 型,长度为 20
4、,非空)。CREATE TABLE Dept(DEPTNO INT PRIMARY KEY,DNAME CHAR(20)NOT NULL);2.修改基本表 1)在 Student 表中加入属性 AGE(INT 型)。ALTER TABLE Student ADD AGE INT;2)将 Student 表中的属性 SAGE 类型改为 SMALLINT 型。ALTER TABLE Student ALTER COLUMN SAGE SMALLINT;3.删除基本表 1)在所有操作结束后删除 STUDENT 表。DROP TABLE Student;2)在所有操作结束后删除 COURSE 表。DR
5、OP TABLE Course;3)在所有操作结束后删除 SC 表。DROP TABLE SC;4)在所有操作结束后删除 TEACHER 表。DROP TABLE Teacher;5)在所有操作结束后删除 DEPT 表。DROP TABLE Dept;二、索引操作 1.建立索引 1)在 Student 表上建立关于 SNO 的唯一索引。度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空所在系型创建系表由以下属性系号型主码系名型长度为非空修改基本表在表中加入属性型将表中的属结束后删除表在所有操作结束后删除表二索引操作建立索引在表上
6、建立关于的唯一索引最新资料推荐在表上建立关于-最新资料推荐-3/25 CREATE UNIQUE INDEX stusno ON Student(SNO);2)在 Course 表上建立关于 CNO 升序的唯一索引。CREATE UNIQUE INDEX coucno ON Course(CNO);2.删除索引 1)删除 Student 表上的索引 stusno。DROP INDEX stusno;2)删除 Course 表上的索引 coucno。DROP INDEX coucno;三、视图操作 1.建立视图 在插入数据的 Student 基本表上为计算机科学与技术系的学生记录建立一个视图 C
7、S_STUDENT。CREATE VIEW CS_STUDENT AS SELECT*FROM Student WHERE DEPTNO=(SELECT DEPTNO FROM Dept WHERE DNAME=计算机科学与技术)WITH CHECK OPTION;2.删除视图 在操作结束后删除视图 CS_STUDENT。DROP VIEW CS_STUDENT;(二)数据操作 一、更新操作 1.插入数据 1)向 STUDENT 表插入下列数据:1001,张天,男,10,20 1002,李兰,女,10,21 1003,陈铭,男,10,21 1004,刘茜,女,20,21 1005,马朝阳,男,
8、20,22 INSERT INTO Student VALUES(1001,张 天,男,10,20);INSERT INTO Student VALUES(1002,李 兰,女,10,21);INSERT INTO Student VALUES(1003,陈 铭,男,10,21);INSERT INTO Student VALUES(1004,刘 茜,女,20,21);INSERT INTO Student VALUES(1005,马朝阳,男,20,22);2)向 COURSE 度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空
9、所在系型创建系表由以下属性系号型主码系名型长度为非空修改基本表在表中加入属性型将表中的属结束后删除表在所有操作结束后删除表二索引操作建立索引在表上建立关于的唯一索引最新资料推荐在表上建立关于表插入下列数据:1,数据结构,101,4 2,数据库,102,4 3,离散数学,103,4 4,C 语言 程 序 设 计,101,2 INSERT INTO Course VALUES(1,数 据 结构,101,4);INSERT INTO Course VALUES(2,数据库,102,4);INSERT INTO Course VALUES(3,离散数学,103,4);INSERT INTO Cours
10、e VALUES(4,C 语言程序设计,101,2);3)向 SC 表插入下列数据:1001,1,80 1001,2,85 1001,3,78 1002,1,78 1002,2,82 1002,3,86 1003,1,92 1003,3,90 1004,1,87 1004,4,90 1005,1,85 1005,4,92 INSERT INTO SC VALUES(1001,1,80);INSERT INTO SC VALUES(1001,2,85);INSERT INTO SC VALUES(1001,3,78);INSERT INTO SC VALUES(1002,1,78);INSERT
11、 INTO SC VALUES(1002,2,82);INSERT INTO SC VALUES(1002,3,86);INSERT INTO SC VALUES(1003,1,92);INSERT INTO SC VALUES(1003,3,90);INSERT INTO SC VALUES(1004,1,87);INSERT INTO SC VALUES(1004,4,90);INSERT INTO SC VALUES(1005,1,85);INSERT INTO SC VALUES(1005,4,92);4)向 TEACHER 表插入下列数据:101,张星,10 102,李珊,10 10
12、3,赵天应,10 104,刘田,20 INSERT INTO Teacher VALUES(101,张 星,10);INSERT INTO Teacher VALUES(102,李 珊,10);INSERT INTO Teacher VALUES(103,赵天应,10);INSERT INTO Teacher VALUES(104,刘田,20);5)向 DEPT 表插入下列数据:度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空所在系型创建系表由以下属性系号型主码系名型长度为非空修改基本表在表中加入属性型将表中的属结束后删除表在
13、所有操作结束后删除表二索引操作建立索引在表上建立关于的唯一索引最新资料推荐在表上建立关于-最新资料推荐-5/25 10,计 算 机 科 学 与 技 术 20,信 息 INSERT INTO Dept VALUES(10,计 算 机 科 学 与 技 术);INSERT INTO Dept VALUES(20,信息);2.修改数据 将张星老师数据结构课的学生成绩全部加 2 分 UPDATE SC SET GRADE=GRADE+2 WHERE CNO IN(SELECT CNO FROM Course,Teacher WHERE Course.TNO=Teacher.TNO AND Teacher
14、.TNAME=张星);3.删除数据 删除马朝阳同学的所有选课记录 DELETE FROM SC WHERE SNO IN(SELECT SNO FROM Student WHERE SNAME=马朝阳);二、查询操作 1.单表查询 1)查询所有学生的信息。SELECT*FROM Student;结果:1001 张天 男 10 20 1002 李兰 女 10 21 1003 陈铭 男 10 21 1004 刘茜 女 20 21 1005 马朝阳 男 20 22 2)查询所有女生的姓名。SELECT SNAM E FROM Student WHERE SEX=女;结果:李兰 刘茜 3)查询成绩在
15、80 到 89 之间的所有学生选课记录,查询结果按成绩的降序排列。SELECT*FROM SC WHERE GRADE=80 AND GRADE=89 ORDER BY GRADE DESC;结果:1004 1 87 1002 3 86 1001 2 85 1005 1 85 1002 2 82 1001 1 80 4)查询各个系的学生人数。SELECT DEPTNO,count(SNO)FROM Student GROUP BY DEPTNO;度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空所在系型创建系表由以下属性系号型主
16、码系名型长度为非空修改基本表在表中加入属性型将表中的属结束后删除表在所有操作结束后删除表二索引操作建立索引在表上建立关于的唯一索引最新资料推荐在表上建立关于结果:10 3 20 2 2.连接查询 查询信息系年龄在 21 岁以下(含 21 岁)的女生姓名及其年龄。SELECT SNAME,AGE FROM Student,Dept WHERE Student.DEPTNO=Dept.DEPTNO AND Dept.DNAME=信息 AND AGE=21 AND SEX=女;结果:刘茜 21 3.嵌套查询 1)查询修课总学分在 10 学分以下的学生姓名。SELECT SNAME FROM Stud
17、ent WHERE SNO IN(SELECT SNO FROM SC,Course WHERE SC.CNO=Course.CNO GROUP BY SNO HAVING SUM(CREDIT)10);结果:陈铭 刘茜 马朝阳 2)查询各门课程取得最高成绩的学生姓名及其成绩。SELECT CNO,SNAME,GRADE FROM Student,SC SCX WHERE Student.SNO=SCX.SNO AND SCX.GRADE IN(SELECT MAX(GRADE)FROM SC SCY WHERE SCX.CNO=SCY.CNO GROUP BY CNO);结果:2 张天 85
18、 3 陈铭 92 1 陈铭 90 4 马朝阳 92 3)查询选修了 1001 学生选修的全部课程的学生学号。SELECT SNO FROM Student WHERE NOT EXISTS(SELECT*FROM SC SCX WHERE SCX.SNO=1001 AND NOT EXISTS(SELECT*FROM SC SCY WHERE SCY.SNO=Student.SNO AND SCY.cno=SCX.cno);结果:度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空所在系型创建系表由以下属性系号型主码系名型长度为非
19、空修改基本表在表中加入属性型将表中的属结束后删除表在所有操作结束后删除表二索引操作建立索引在表上建立关于的唯一索引最新资料推荐在表上建立关于-最新资料推荐-7/25 1001 1002 4)查询选修了张星老师开设的全部课程的学生姓名。SELECT SNAME FROM Student WHERE NOT EXISTS(SELECT*FROM Course WHERE TNO IN(SELECT TNO FROM Teacher WHERE TNAME=张星)AND NOT EXISTS(SELECT*FROM SC WHERE SC.SNO=Student.SNO AND SC.CNO=Cou
20、rse.CNO);结果:刘茜 马朝阳 出现的问题及解决方案:1.在创建基本表时是否可以缺省主码?可以。在定义基本表时可以定义主码也可以先不定义主码。2.对基本表进行修改,执行 ALTER TABLE Student MODIFY Sage SMALLINT 显示执行失败。当基本表中没有数据时,KingbaseES 允许对基本表的属性类型进行修改,如上述修改 可以写成 ALTER TABLE Student ALTER COLUMN SAGE SMALLINT,执行成功。但如果基本表中已经存有数据时,系统则会给出数据将丢失的警告,不允许进行属性类型的修改。3.在 SQL Server 中没有提供
21、删除属性列的语句,KingbaseES 则支持删除属性列。如果要在基本表 Student 上删除属性列 SNAME,可以执行 ALTER TABLE Student DROP SNAME。题目:度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空所在系型创建系表由以下属性系号型主码系名型长度为非空修改基本表在表中加入属性型将表中的属结束后删除表在所有操作结束后删除表二索引操作建立索引在表上建立关于的唯一索引最新资料推荐在表上建立关于 实验二(2)交互式 SQL 语言 姓名 Vivian 日期 2005-1-1 实验内容及完成情况:
22、(写出每一种类型的 SQL 测试用例)(一)数据定义 一、基本表操作 1.建立基本表 1)创建供应商表 S,由以下属性组成:供应商号 SNO(CHAR 型),供应商姓名 SNAME(CHAR 型),供应商状态 STATUS(CHAR 型),供应商所在城市 CITY(CHAR 型)。CREATE TABLE S(SNO CHAR(3),SNAME CHAR(10),STATUS CHAR(2),CITY CHAR(10);2)创建零件表 P,由以下属性组成:零件代码 PNO(CHAR 型),零件名 PNAME(CHAR 型),颜色 COLOR(CHAR 型),重量 WEIGHT(INT 型)。C
23、REATE TABLE P(PNO CHAR(3),PNAME CHAR(10),COLOR CHAR(4),WEIGHT INT);3)创建工程项目表 J,由以下属性组成:工程项目代码 JNO(CHAR 型),工程项目名 JNAME(CHAR 型),工程项目所在城市 CITY(CHAR 型)。CREATE TABLE J(JNO CHAR(3),JNAME CHAR(10),CITY CHAR(10);4)创建供应情况表 SPJ,由以下属性组成:供应商代码 SNO(CHAR 型),零件代码 PNO(CHAR 型),工程项目代码 JNO(CHAR 型),供应数量 QTY(INT 型)。CREA
24、TE TABLE SPJ(SNO CHAR(3),PNO CHAR(3),JNO CHAR(3),QTY INT);2.修改基本表 1)在 P 表中加入属性零件产地 CITY(CHAR 型)。ALTER TABLE P ADD CITY CHAR(10);2)将 P 表中的属性 度为所在系型创建课程表由以下属性组成课程号型课程名型长度为非空授课教师编号型学分型其中为主码创建学生选名型长度为非空所在系型创建系表由以下属性系号型主码系名型长度为非空修改基本表在表中加入属性型将表中的属结束后删除表在所有操作结束后删除表二索引操作建立索引在表上建立关于的唯一索引最新资料推荐在表上建立关于-最新资料推荐
25、-9/25 WEIGHT 类型改为 SMALLINT 型。ALTER TABLE P ALTER COLUMN WEIGHT SMALLINT;3)删除刚才在 P 表中加入的零件产地 CITY 属性。ALTER TABLE P DROP CITY;3.删除基本表 1)在所有操作结束后删除 S 表。DROP TABLE S;2)在所有操作结束后删除 P 表。DROP TABLE P;3)在所有操作结束后删除 J 表。DROP TABLE J;4)在所有操作结束后删除 SPJ 表。DROP TABLE SPJ;二、索引操作 1.建立索引 1)在 S 表上建立关于 SNO 的唯一索引。CREATE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 实验 交互式 sql
限制150内