数据库重点语句附答案

更新时间:2023-11-07 05:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验素材

现教学数据库中有三个关系:

学生关系S(S#,SNAME,AGE,SEX) 学习关系SC(S#,C#,GRADE) 课程关系C(C#,CNAME,TEACHER) 1、三个表的结构是:

表1 学生关系表S 列名 S# SNAME AGE SEX SDEPT 说明 学号 姓名 年龄 性别 系别 数据类型 定长字符串,长度为10 变长字符串,长度为12 整数 定长字符串,长度为1 变长字符串,长度为20 约束说明 主键 非空 空值 非空,取值F或M 默认为information Create table S (

S# char(10) primary key, SNAME VARCHAR(12) NOT NULL, AGE INT,

SEX CHAR(1) NOT CHECK (SEX=’F’ OR SEX=’M’), SDEPT VARCHAR(20) DEFAULT ‘information’ )

表2 学习关系表SC 列名 S# C# 说明 学号 课程号 数据类型 定长字符串,长度为10 定长字符串,长度为8 整数 约束说明 外键,参照S的主键 外键,参照C的主键 空值 GRADE 成绩 主键为(S#,C#)

CREATE TABLE SC (

S# CHAR(10) FOREIGN KEY (S#) REFRENCES S (S#), C# CHAR(8) FOREIGN KEY (C#) REFRENCES C (C#), GRADE INT NULL,

CONSTRAINT PK PRIMARY KEY (S#,C#) )

表3 课程关系表C

列名 C# CNAME 说明 课程号 课程名 数据类型 定长字符串,长度为8 变长字符串,长度为20 定长字符串,长度为20 约束说明 主键 非空值 非空值 TEACHER 任课教师

2、三个表中的数据

表4 S表的数据 S# 60833D01 60833D02 50921p02 50911P07 90811P01 90811P02 90912P03

表5 C表的数据 C# C1 C2 C3 C4 表6 SC表的数据 S# 60833D01 60833D01 60833D01 60833D01 60833D02 50921p02 50921p02 50911P07 90811P01 90811P01

C# C1 C2 C3 C4 C2 C4 C1 C2 C1 C2 GRADE 89 91 96 74 78 76 89 88 88 Null CNAME Database Math C English TEACHER Liujun Zhanghong Liujun Lihua SNAME Wanghui Wangshan Zhangming Liyong Limin Wujiang Lijian AGE 18 17 19 20 18 19 18 SEX F M M F F F M SDEPT Information Information Communication Communication Computer Computer Computer

实验一 用企业管理器建立数据库和表

实验目的:

熟悉上机环境;掌握如何启动、停止服务管理器和企业管理器的方法;掌握如何用企业管理器定义数据库、表、约束,如何向表中添加、修改、输出记录,如何查看表的内容等操作。

实验内容:

1 启动服务管理器,观测服务管理器启动后的图标。 2 使用企业管理器,创建“教学”数据库。

3 使用企业管理器,在“教学”数据库中定义3个表S、C、SC这3个表的要求见表1、表2和表3。注意必须按表的要求定义各种约束。

4 使用企业管理器,向“教学”数据库的3个表中输入若干个记录。这3个表的内容见表4、表5和表6.

5 使用企业管理器,查看已创建的教学数据库和3个表的内容。 6 验证实体完整性和参照完整性。 7 停止企业管理器、服务管理器。

实验的操作步骤:

实验小结:

实验二 用SQL DDL创建数据库和表

实验目的:

熟悉查询分析器界面;掌握如何在查询分析器中,用DDL语言定义数据库、表、约束。 实验内容:

1)启动服务管理器。

2)使用查询分析器,用DDL建立“教学”数据库。

3)使用查询分析器,用DDL在“教学”数据库中定义3个表S、C和SC。表的要求见表1~3,必须按表的要求定义各种约束。 4)停止查询分析器、服务管理器。 实验的操作步骤:

实验五 数据库的多表内连接查询实验

实验目的:

继续熟练查询分析器的使用方法;理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、GROUP BY、HAVING、ORDERBY子句的用法,特别要求掌握内链接的使用及查看相应的结果。 实验内容:

在已建立“教学”数据库和3个表S、C、SC的基础上,用SELECT 语句完成下列查询(具体数据参照表3~6):

(1) 查询每个学生的学号、姓名、选修的课程名、成绩

Select SC.S#,SNAME,CNAME,GRADE FROM S,SC WHERE S.S#=SC.S#

(2) 查询选修了C2且成绩大于90分的学生的学号、姓名、成绩

Select SC.S#,SNAME, GRADE FROM S,SC WHERE S.S#=SC.S# AND C#=’C2’ AND GRADE>90

(3) 求各个课程号及相应的选课人数;

Select C#,COUNT(S#) FROM SC GROUP BY C#

(4) 检索选修课程名为MATHS的学生学号与姓名;

Select SC.S#,SNAME FROM S,C,SC WHERE S.S#=SC.S# AND C.C#=SC.C# AND CNAME=’MATHS’

(5) 检索至少选修LIU老师所授课程中一门课程的女学生姓名.

Select SNAME FROM S,C,SC WHERE S.S#=SC.S# AND C.C#=SC.C# AND TEACHER LIKE ‘LIU%’AND SEX=’F’

(6) 检索至少选修两门课程的学生学号.

Select S# FROM SC GROUP BY S# HAVING COUNT(C#)>=2

(7) 求选修C4课程的学生的平均年龄.

Select AVG(AGE) FROM SC,S WHERE S.S#=SC.S# AND C#=’C4’

(8) 求LIU老师所授课程的每门课程的学生平均成绩.

(9) Select SC.C#,AVG(GRADE) FROM C,SC WHERE C.C#=SC.C# AND

TEACHER=’LIU%’ GROUP BY C.C#

(10) 求information系选修课程超过2门课的学生的学号、姓名、平均

成绩,并按平均成绩降序排列

Select SC.S#,SNAME,AVG(GRADE) FROM S,SC WHERE S.S#=SC.S# AND SDEPT=’information’ GROUP BY SC.S# HAVING COUNT(C#)>2 ORDER BY AVG(GRADE) DESC

(11) 查询与Wanghui在同一个系学习的所有学生的学号和姓名

(12) Select S2.S#,S2.SNAME FROM S AS S1 ,S AS S2 WHERE

S1.SDEPT=S2.SDEPT AND S1.SNAME=’Wanghui’

实验七 数据库的非相关子查询实验

实验目的:

继续熟练查询分析器的使用方法;掌握非相关子查询的用法,理解他的执行过程;掌握多表连接查询和子查询写法中的相互转换。 实验内容:

在已建立“教学”数据库和3个表S、C、SC的基础上,用非相关子查询完成下列查询(具体数据参照表3~6):

(1) 查询每个学生的基本信息及其选课情况 (2) 检索选修课程名为MATH的学生学号与姓名;

SELECT S#,SNAME FROM S WHERE S# IN (SELECT S# FROM SC WHERE C# IN (SELECT C# FROM C WHERE CNAME=’MATH’))

(3) 求选修C4课程的学生的平均年龄.

SELECT AVG(GRADE) FROM S WHERE S# IN (SELECT S# FROM SC WHERE C# =’C4’)

(4) 查询与Wanghui在同一个系学习的所有学生的学号和姓名

SELECT S#,SNAME FROM S WHERE SDEPT=(SELECT SDEPT FROM S WHERE SNAME=’Wanghui’)

(5) 查询其他系中比计算机系某一学生年龄小的学生基本情况

SELECT * FROM S WHERE AGE < ANY (SELECT AGE FROM S WHERE SDEPT=’COMPUTER’) AND SDEPT!=’COMPUTER’

(6) 查询成绩大于80分的学生的学号、姓名

SELECT S#,SNAME FROM S WHERE S# IN (SELECT S# FROM SC WHERE GRADE>80)

(7) 查询选修了C4课程的学生学号、姓名。

(8) SELECT S#,SNAME FROM S WHERE S# IN (SELECT S# FROM SC WHERE

C#=’C4’)

(9) 求LIU老师所授课程的每门课程的学生平均成绩.

SELECT C#,AVG(GRADE) FROM SC WHERE C# IN (SELECT C# FROM C WHERE TEACHER LIKE ‘LIU%’)

(10) 查询选修了C2且成绩大于90分的学生的学号、姓名、成绩

(11) 查询选修了Liujun老师的课程并且成绩大于80分的学生学号、姓

名。

SELECT S#,SNAME FROM S WHERE S# IN (SELECT S# FROM SC WHERE GRADE>80 AND C# IN (SELECT C# FROM C WHERE TEACHER=’Liujun’))

实验八 数据库的相关子查询和组合查询实验

实验目的:

继续熟练查询分析器的使用方法;掌握相关子查询及组合查询的用法,理解他的执行过程。 实验内容:

在已建立“教学”数据库和3个表S、C、SC的基础上,用相关子查询或组合查询完成下列查询(具体数据参照表3~6): (1) 查询每个学生的基本信息及其选课情况 (2) 查询选修了C4课程的学生学号、姓名。 (3) 查询成绩大于80分的学生学号和姓名 (4) 查询没有选修C4课程的学生学号、姓名。 (5) 检索选修课程名为MATH的学生学号与姓名 (6) 查询选修了C1课程或C2课程的学生学号

(7) 查询既选修了C1课程又选修了C2课程的学生学号 实验的操作步骤及结果(注:答案及结果写在各题的下面):

实验小结

实验九 数据更新及视图操作

1.在S表中插入学号为60921P01,姓名为wangjuan,年龄17,性别为女,系别为information的学生记录。 Insert into S values

(‘60921P01’,’wangjuan’,17,’F’,’information’) 2.在SC表中插入学号为60921P01,课程代码为C1的记录。 Insert into SC (S#,C#) values (‘60921P01’,’C1’) 3.把姓名为wanghui的学生的所有成绩加2.

UPDATE S SET GRADE=GRADE+2 WHERE SNAME=’wanghui’ 4.删除学号为60921P01的选修记录。 DELETE FROM S WHERE S#=’60921P01’

5.建立一个视图名为Male23,列名为学号和姓名,包含所有年龄大于23岁的男学生的学号和姓名。

CREATE VIEW Male23 (学号,姓名) AS (SELECT S#,SNAME FROM S WHERE AGE>23)

6. 建立数学系选修了课程名为Math的学生的视图,视图名为:MathStudentView,该视图的列名为学号、姓名、成绩。 CREATE VIEW MathStudentView (学号,姓名,成绩) AS

(SELECT SC.S#,SNAME,GRADE FROM S,SC,C WHERE S.S#=SC.S# AND C.C#=SC.C# AND SDEPT=’数学系’AND CNAME=’MATH’)

7. 建立数学系学生选修了课程名为Math并且成绩大于90分的学生视图,视图名为:MathStudentView1。该视图的列名为学号、姓名、成绩。

CREATE VIEW MathStudentView1 AS

(SELECT * FROM MathStudentview WHERE 成绩>90)

本文来源:https://www.bwwdw.com/article/m172.html

Top