【数据库原理及应用教程(第4版|微课版)陈志泊】【第三章习题】

文章目录

  • 一、选择题
  • 二、填空题
  • 三、设计题
  • 四、简答题
  • Reference

一、选择题

1 2 3 4 5 6 7 8 9 10
B A C B C C B D A D
11 12 13 14 15 16 17 18 19 20
D

1、以下关于视图的描述中,不正确的是()

A) 视图是外模式
B) 使用视图可以加快查询语句的执行速度
C) 视图是虚表
D) 使用视图可以加快查询语句的编写

2、在SQL的SELECT语句中,能实现投影操作的是()

A) SELECT
B) FROM
C) WHERE
D) GROUP BY

3、SQL集数据查询、数据操纵、数据定义和数据控制功能于一体,语句ALTER TABLE实现下
列哪类功能()

A) 数据查询
B) 数据操纵
C) 数据定义
D) 数据控制

4、下列SQL语句中,()不是数据操纵语句

A) INSERT
B) CREATE
C) DELETE
D) UPDATE

5.SQL使用()语句为用户授予系统权限或对象权限。

A) SELECT
B) CREATE
C) GRANT
D) REVOKE

6、SQL中,下列涉及空值的操作,不正确的是()

A) AGE IS NULL
B) AGE IS NOT NULL
C) AGE=NULL
D) NOT (AGE IS NULL)

7、若用如下的SQL语句创建了一个表S:

CREATE TABLE S
(SNo CHAR (6) NOT NULL,
SName CHAR (8) NOT NULL,
SEX CHAR (2) ,
AGE INTEGER)

现向S表插入如下行时,哪一行可以被插入()

A) (‘991001’,‘李明芳’,女,‘23’)
B) (‘990746’,‘张为’,NULL,NULL)
C) (NULL,‘陈道一’,‘男’,32)
D) (‘992345’,NULL,‘女’,25)

8、假定学生关系是S(SNo,SName,Sex,Age),课程关系是C(CNo,CName,Teacher),学生选课关系是SC(SNo,CNo,Grade).要查找选修“数据库”课程的“男”学生姓名,将涉及的关系是()

A) S
B) SC,C
C) S,SC
D) S,C,SC

9、在SQL中,修改数据表结构应使用的命令是()

A) ALTER
B) CREATE
C) CHANGE
D) DELETE

10、已知学生、课程和成绩三个关系如下:学生(学号,姓名,性别,班级)、课程(课程名称,学时,性质)、成绩(课程名称,学号,分数)。若打印学生成绩单,包括学号、姓名、课程名称和分数,应该对这些关系进行()操作。

A) 并
B) 交
C) 差
D) 连接

11、当FROM子句中出现多个基本表或视图时,系统将执行()操作。
A)并
B)等值连接
C)自然连接
D)笛卡尔积

二、填空题

1.SQL是结构化查询语言(Structured Query Language)的缩写。

2.SQL的功能包括数据查询、数据定义、数据操纵数据控制四个部分。

3.SQL支持数据库的三级模式结构,其中外模式对应于视图和部分基本表基本表,模式对应于基本表,内模式对应于存储文件。

4.在SQL Server 2008 R2中,数据库是由数据库文件和事务日志文件组成的。

5.在SQL Server中可以定义NOT NULL约束、UNIQUE约束、PRIMARY KEY约束、FOREIGN KEY约束CHECK约束五种类型的完整性约束。

6.按照索引记录的存放位置,索引可分为聚集索引非聚集索引

7.数据表之间的联系是通过表的字段值来体现的,这种字段称为与连接字段

8.相关子查询的执行次数是由父查询表的行数决定的。

9.视图是虚表,其数据不进行存储,只在数据库中存储其定义

10.在数据库中,权限可分为系统权限对象权限

11.在SQL中,关系模式称为基本表,子模式称为视图

12.设有学生关系表S(No,Name,Sex,Age),其中,No为学号,Name为姓名,Sex为性决定的,Age为年龄。根据以下问题,写出对应的SQL语句。

(1)向关系表S中增加一名新同学,该同学的学号是“990010”,姓名是“李国栋”,性别是“男”,年龄是19岁。

INSERT INTO S VALUES('990010','李国栋','男',19)

(2)向关系表中增加一名新同学,该同学的学号是“990011”,姓名是“王大友”

INSERT INTO S(No,Name) VALUES('990011', '王大友')

(3)从学生关系表S中,将学号为“990009”的同学的姓名改为“陈平”

UPDATE S SET Name='陈平' WHERE No='990009'

(4)从学生关系表S中,删除学号为“990008”的同学

DELETE FROM S WHERE No='990008'

(5)从学生关系表S中,删除所有姓氏为“陈”的同学

DELETE FROM S WHERE Name LIKE '陈%'

13.建立一个学生表 Student,它由学号SNo_____、姓名SName、性别SSex、年龄SAge、所在系 SDept五个属性组成,其中学号(假定其为字符型,长度为8个字符)属性不能为空。

CREATE
(SNo CHAR(8) ,NOT NULL,
SName CHAR (20) ,
SSex CHAR (2) ,
SAge INTEGER,
SDept CHAR (16) )

14.在“学生-选课-课程”数据库中的三个关系如下:S(SNo,SName,Sex,Age),SC(SNo,CNo,Grade),C(CNo,CName,Teacher)。
查找选修“数据库技术”这门课程的学生的学生名和成绩。使用连接查询的SQL语句是:

SELECT
FROM S, SC, C
WHERE CName='数据库技术'
AND S. SNo=SC. SNoAND
AND SC.CNo=C.CNo;

15.建立一个学生表 Student,它由学号SNo、姓名SName、性别SSex、年龄SAge、所在系SDept
五个属性组成,其中学号(假定其为字符型,长度为8个字符)属性不能为空。Student表建立完成后,若要在表中增加年级SGrade项(设字段类型为字符型,长度为10),其SQL命令为:

ALTER TABLE Student 
ADD 
SGrade CHAR(10)

三、设计题

1、设有以下两个数据表,各表中的结果及字段名如下:
图书(Book)包括书号(BNo)、类型(BType)、书名(BName)、作者(BAuth)、单价(BPrice)、出版社号(PNo);

出版社(Publish)包括出版社号(PNo)、出版社名称(PName)、所在城市(PCity)、电话(PTel);

用SQL实现下述功能:

1)在“高等教育出版社”出版、书名为“操作系统”的图书的作者名;

SELECT BAuth 
FROM Book,Pubish 
WHERE Book.PNo=Pubish.PNo 
AND BName='操作系统' AND PName='高等教育出版社'

2)查找为作者“张欣”出版全部“小说”类图书的出版社的电话;

SELECT PTel 
FROM Book,Pubish 
WHERE Book.PNo=Pubish.PNo 
AND BType='小说' AND BAuth='张欣'

3)查询“电子工业出版社”出版的“计算机”类图书的价格,同时输出出版社名称及图书类别;

SELECT BPrice,PName,Btype 
FROM Book,Pulish 
WHERE Book.PNo=Pubish.PNo 
AND PName='电子工业出版社' AND BType='计算机'

4)查找比“人民邮电出版社”出版的“高等数学”价格低的同名书的有关信息;

SELECT * 
FROM Book 
WHERE BName='高等数学'
AND BPrice< ANY(SELECT BPrice FROM Book,Pubish WHERE Book.PNo=Pubish.PNo    AND PName='人民邮电出版社' AND BName='高等数学')
AND PName<>'人民邮电出版社'

这里语法是不是错了?

5)查找书名中有“计算机”一词的图书的书名及作者;

SELECT BName,BAuth FROM Book WHERE BName LIKE '%计算机%'

6)在“图书”表中增加“出版时间”(BDate)项,其数据类型为日期型;

ALTER TABLE Book ADD BDate datetime

7)在“图书”表中以“作者”建立一个索引。

CREATE INDEX Name ON Book (BAuth)

2、假设有一个书店,书店的管理者要对书店的经营状况进行管理,需要建立一个数据库,其中包括两个表:

存书(书号,书名,出版社,版次,出版日期,作者,书价,进价,数量)
销售(日期,书号,数量,金额)

请用SQL实现书店管理者的下列要求:

1)建立存书表和销售表;

CREATE TABLE Book(
	BNo CHAR(10) PRIMARY KEY,
	BName	VARCHAR(50) NOT NULL,
	Publish	VARCHAR(50),
	Version	FLOAT,
	PDate	DATE,
	BAuth	VARCHAR(30),
	BPirce	NUMERIC(4,1),
	BInPrice	NUMERIC(4,1),
	BCount	INT
);

CREATE TABLE BookSell(
	BSID CHAR(20) PRIMARY KEY,
	BNO	CHAR(8) CONSTRAINT B_C FOREIGN KEY REFERENCES Book(BNo),
	SDate	DATE,
	SCount	INT,
	PDate	DATETIME,
	SMoney	SMALLMONEY
);

2)掌握书的库存情况,列出当前库存的所有书名、数量、余额(余额=进价×数量,即库存占用的资金);

SELECT BName,BCount,BInPrice*BCount AS TOTALCOUNT 
FROM Book

3)统计总销售额;

SELECT SUM(SCount*SMoney), SDate AS TOTALMONEY 
FROM BookSell 
GROUP BY SDate

4)列出每天的销售报表,包括书名、数量和合计金额(每一种书的销售总额);

SELECT BNo,BName,SDate,BCount,SCount*SMoney AS TOTALMONEY
FROM BookS,BookSell 
WHERE Book.BNo=BookSell.BNo

5)分析畅销书,即列出本期(从当前日期起,向前30天)销售数量大于100的书名、数量。

SELECT BName,SCount
 FROM Book,BookSell 
 WHERE BookStore.BNo=BookSell.BNo 
 AND SCount>100 AND SDate+30<(SELECT MAX(SDate) FROM BookSell)

四、简答题

1、简述SQL支持的三级逻辑结构。

SQL支持数据库的三级模式结构。
外模式对应于视图和部分基本表;
模式对应于基本表;
内模式对应于存储文件.

2、SQL有什么特点?

SQL具有简单、易学、综合、一体等鲜明的特点,主要有以下几个方面:

  • 1)SQL是类似于英语的自然语言,语法简单,且只有为数不多的几条命令,简洁易用;

  • 2)SQL是一种一体化的语言,它包括数据定义、数据查询、数据操纵和数据控制等方面的功能,可以完成数据库活动中的全部工作;

  • 3)SQL是一种非过程化的语言;

  • 4)SQL是一种面向集合的语言,每个命令的操作对象是一个或多个关系,结果也是一个关系;

  • 5)SQL既是自含式语言,又是嵌入式语言。自含式语言可以独立使用交互命令,适用于终端用户、应用程序员和DBA;嵌入式语言使其嵌入在高级语言中使用,供应用程序员开发应用程序。

3、解释本章所涉及的有关基本概念的定义:基本表、视图、索引、系统权限、对象权限、角色,并说明视图、索引、角色的作用

  • 基本表(Base Table):一个关系对应一个基本表;

  • 视图(View):视图是从一个或几个基本表导出的表,是一个虚表;

  • 索引:是一种可以加快检索的数据库结构,它包含从表或视图的一列或多列生成的键,以及映射到指定数据存储位置的指针;

  • 系统权限:是指被授权用户是否可以连接到数据库上及数据库中可以进行哪些系统操作;

  • 对象权限:是指用户对数据库中具体对象所拥有的权限,对象权限针对某个特定的模式对象执行操作的权利,只能针对模式来设置和管理;

  • 数据库角色:是被命名的一组与数据库操作有关的权限,角色是权限的集合。(百度百科)

  • 视图的作用:视图通常用来集中、简化和自定义每个用户对数据库的不同认识,可用作安全机制,可用于提供向后兼容接口来模拟曾经存在但其架构已更改的基础表,还可以在向SQL Server复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区;

  • 索引的作用:通过创建设计良好的索引,可以显著提高数据库查询和应用程序的性能。除提高检索速度外,索引还可以强制表中的行具有唯一性,从而确保数据的完整性;

  • 角色的作用:用于区分不同的数据库用户,通过不同的权限设置,可保证数据在数据库中,为便于对用户及权限进行管理,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。使用角色能够更加方便和高效地对权限进行管理。

4、在对数据库进行操作的过程中,设置视图机制有什么优点?它与数据表有什么区别?

  • 设置视图机制优点:视图通常用来集中、简化和自定义每个用户对数据库的不同认识,可用作安全机制,可用于提供向后兼容接口来模拟曾经存在但其架构已更改的基础表,还可以在向SQL Server复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区。

  • 区别:视图是一个虚拟表,其内容由查询定义,视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。视图中的行和列数据来自定义视图的查询所引用的基本表,并且在引用视图时动态生成。

5、设有如下四个基本表S,C,SC,T,结构如图3-20所示

【数据库原理及应用教程(第4版|微课版)陈志泊】【第三章习题】_第1张图片
【数据库原理及应用教程(第4版|微课版)陈志泊】【第三章习题】_第2张图片
【数据库原理及应用教程(第4版|微课版)陈志泊】【第三章习题】_第3张图片
【数据库原理及应用教程(第4版|微课版)陈志泊】【第三章习题】_第4张图片
1)用SQL的DDL语言创建S表,S#为主码,SN不能为空;

CREATE TABLE S(
	S# CHAR(8) PRIMARY KEY,
	SN CHAR(8) NOT NULL,
	AGE INT,
	DEPT VARCHAR(20)
);

2)创建计算机系学生的视图,该视图的属性列由学号、姓名、课程号和任课教师号组成;

CREATE VIEW computer_student(S#,SN,C#,T#) AS 
SELECT S.S#,SN,SC.C#,T# FROM S,SC,T 
WHERE S.S#=SC.S# AND SC.C#=T.C# AND DEPT='计算机'

3)检索计算机系年龄在20岁以上的学生学号;

SELECT S# FROM S WHERE AGE>20 AND DEPT='计算机'

4)检索姓王的教师所讲课程的课程号及课程名称;

SELECT C.C#,CN FROM C,T WHERE C.C#=T.C# AND TN LIKE '王%'

5)检索张三同学所学课程的成绩,列出SN、C#和GR;

SELECT SN,C#,GR FROM S,SC WHERE S.S#=SC.S# AND SN='张三'

6)检索选修总收入超过1000元的教师所讲课程的学生姓名、课程号和成绩;

SELECT SN,T.C#,GR FROM T,SC,S 
WHERE T.C#=SC.C# AND S.S#=SC.S# AND (SAL+COMM)>1000

7)检索没有选修C1课程且选修课程数为两门的学生的姓名和平均成绩,并按平均成绩降序排列;

SELECT S.S#,SN,AVG(GR) AS AVGSCORE FROM S,SC 
WHERE S.S#=SC.S# AND C#<>'C1'
GROUP BY S.S#,SN HAVING COUNT(*)=2 ORDER BY AVG(GR) DESC

8)检索选修和张三同学所选课程中任意一门相同的学生姓名、课程名;

SELECT SN,CN FROM S,SC,C 
WHERE S.S#=SC.S# AND C.C#=SC.C# AND C# 
IN (SELECT C# FROM S,SC 
WHERE S.S#=SC.S# AND SN='张三') AND SN<>'张三'

9)S1同学选修了C3,将此信息插入SC表中;

INSERT INTO SC(S#,C#) VALUES ('S1', 'C3')

10)删除S表中没有选修任何课程的学生记录;

DELETE FROM S WHERE S# NOT IN (SELECT DISTINCT S# FROM SC)

PS:仅供参考,因个人能力有限,如有错误,请不吝赐教~

Reference

数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题/文代码天地

数据库原理及应用教程(第4版|微课版)陈志泊1、2章/文人邮教育

数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题/文CSDN@陈九礼

你可能感兴趣的:(#,数据库原理,数据库,sql,sqlserver)