SQL数据库应用开发--作业单

更新时间:2024-03-08 17:33:01 阅读量: 综合文库 文档下载

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

数据库应用开发项目任务作业单(1)

一、思路拓展:

1、 什么是数据库管理系统?有哪些方面的功能?

2、 SQL Server Management Studio环境主要包括哪些工具? 3、 如何启动、暂停和停止SQL Server 2008服务?

二、深入细节:

1、SQL Server 2008主要版本包括(ABD )。

A、企业版 B、标准版 C、数据中心版 D、测试版 2、SQL Server 2008的两种身份验证模式是( AB )。

A、Windows身份验证 B、SQL Server身份验证 C、密码验证 D、用户登录 3、(C )是长期存储在计算机内有结构的大量的共享数据的集合。

A、数据库管理系统 B、数据 C、数据库 D、数据库系统 4、在下列各项中,( D)不属于SQL Server服务器组件。

A、数据库引擎 B、分析服务 C、报表服务 D、邮件服务

数据库应用开发项目任务作业单(2)

一、思路拓展:

1、 观察model数据库对新建的数据库有何影响? 2、 SQL Server中数据库的名称是否可以为中文?

3、 配臵数据库的选项、管理数据库是否是程序员的工作? 4、 SQL Server 2008创建数据库有哪些方法? 5、 扩展数据库有哪几种方法? 6、 收缩数据库有哪几种方法?

7、 分离和附加数据库有何用途?如何分离和附加数据库? 8、 什么情况下需要分离数据库?

9、 如何重命名数据库?如何更改数据库的所用者? 10、 数据库备份分为哪3种类型?

11、 配臵数据库的选项、管理数据库是否是程序员的工作?

在工作中可能会是程序员来做这些工作,但是也有一些公司或者单位有专门的数据库或者网络管理员,他们都可能做这些工作。 12、 数据库是否可以没有表?

SQL Server数据库在创建的时候,就创建了一些系统表来保存数据中的信息,因此它一开始就存在数据库表,但是可以不创建用户表。 13、 系统视图用来做什么?请尽量仔细阐述。

系统视图主要用来存储本数据库相关的信息,具体如下:

Sysobjects视图:存储本数据库所有对象,例如表,约束、存储过程、视图等的信息,

可以在该表中查询对象信息。

Sysfiles视图:存储本数据库物理文件及位臵,不能更改或者更新。 Sysfilegroups视图:存储本数据库所有的文件组。 Sysindexs视图:存储数据库的索引和表的信息。

Sysuser视图:存储数据库中每个windows用户、windows组、server用户或角色;还

有一些其他的系统表,牵涉到更多的内容。

14、 已经在SQL Server中为Windows 2008用户创建了一个新的登录账户。希望该组的

成员能够使用SQL Server。那么你还需要完成其他哪些额外的安全设臵任务?

答: 首先,必须把Windows 2008用户组添加到希望用户访问的数据库中,之后,将权限授予希望用户访问的数据库对象。 15、 用SQL语句创建满足如下要求的数据库:

(1) 数据库名称为Library;

(2) 主文件组有两个数据文件。

第一个数据文件:逻辑名为LibraryData1,文件名为“c:\\cyj\\LibraryData_1.mdf”,文件初始大小为50MB,文件的最大大小不受限制,文件的增长率为20%。

第二个数据文件:逻辑名为LibraryData2,文件名为“c:\\cyj\\LibraryData_2.ndf”,文件初始大小为50MB,文件的最大大小不受限制,

文件的增长率为10MB。

(3) 日志只有一个数据文件,逻辑名为LibraryLog,文件名为“c:\\cyj\\LibraryLog.ldf”,文件初始大小为10MB,文件的最大大小为50MB,文件的增长率为10MB;

答:

CREATE DATABASE Library ON PRIMARY

( NAME = LibraryData1,

FILENAME = 'c:\\cyj\\LibraryData_1.mdf', SIZE = 50MB, MAXSIZE = UNLIMITED, FILEGROWTH = 20% ), ( NAME = LibraryData2,

FILENAME = 'c:\\cyj\\Library_2.ndf', SIZE = 50MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10)

LOG ON

( NAME = LibraryLog,

FILENAME = 'c:\\cyj\\LibraryLog.ldf',

SIZE = 10MB, MAXSIZE = 50MB, FILEGROWTH = 10MB )

16、 您现在有四个物理硬盘来存放一个很大的数据库,该数据库存放大量的销售

数据。数据库主要用于数据读取和统计,以便市场经理决定经营策略。为了提高数据的读取性能,数据库内的表进行了大量索引。如何生成数据库,使性能最佳?

答:可以创建用户自定义的文件组fgroup1,同时分别在三个硬盘上创建三个文件(Data1.ndf、Data2.ndf 和 Data3.ndf),并将这三个文件指派到文件组 fgroup1 中。然后,指定文件组 fgroup1 为默认的文件组。在创建表时,如果没有特别声明,都自动创建在默认的文件组,以后存放在表中的数据将自动分散在三个硬盘上。这样,以后对表中数据的查询也将分散到三个磁盘上,因而性能得以提高。另外,在第四个硬盘创建日志文件。

17、 SQL Server在故障(如掉电)或服务器关闭之后重启时对数据库的恢复有三个

阶段:分析阶段,重做阶段,取消阶段。参考本章讨论该问题时的附图,请举例说明为什么取消阶段会涉及到最后一个检查点以前的事务,而不是只涉及最后一个检查点以后的事务? 答:因为可能有一些事务在最后一个检查点到来之前就已经开始,但是到故障(如掉电)或 服务器关闭时该事务还没有结束,这些事务必须取消。

18、 你正在创建一个不经常修改的数据库,该数据库主要用于决策支持和只读查询。你

会为事务日志分配多大的数据库空间百分比? 答: 答案并不唯一。可以在10%到20%之间。不应该超过20%。由于该数据库的更改活动相当少,分配的空间百分比接近10%是合理的 19、 使用文件组有那些优点?

答:可以把表放在指定的硬盘上。能够独立地备份大型表。

二、深入细节:

1、SQL Server中有关数据库的信息都存储在( D )数据库的相应系统视图中。

A、Model B、Tempdb C、Msdb D、Master

2、SQL Server中有关数据库的信息都存储在master数据库的( )系统视图中。

A、sys.columns B、sys.objects C、sys.databases D、sys.filegroups 3、每当创建、修改或删除数据库时,都应该备份( )数据库。

A、Model B、Tempdb C、Msdb D、Master

4、定义数据库是一个指定数据库名称设臵数据库大小和位臵的过程;当创建新的数据库时,

它是( )数据库的副本。

A、Model B、Tempdb C、Msdb D、Master

5、在SQL Server 2008中,要想修改新建数据库的默认路径为,可以在( )对话框

中的数据库设臵中设定一个新的路径。

A、数据库属性 B、服务器属性 C、数据库任务 D、服务器任务 6、数据文件和日志文件的最小值为( )。

A、与Model数据库的对应文件大小 B、1MB C、3MB D、无限制 7、为主数据文件指定的大小,至少应与( )数据库的主文件大小相同。

A、Model B、Tempdb C、Msdb D、Master

8、你在SQL Server 2008创建了酒店管理系统的数据库HotelDB,并创建了表CustInfo。当下面的哪些数据库被删除的情况下,不能正确地执行“SELECT * FROM CustInfo?

A. Model B. Tempdb C. Msdb D. Master

10、SQL Server 2008的数据库包括主数据文件、辅助数据文件和( )。

A、索引文件 B、日志文件 C、备份文件 D、程序文件 11、以下选项中可以作为文件组成员的是( )。

A、索引文件 B、日志文件 C、备份文件 D、数据文件

12、以下选项中不属于SQL Server 2008在安装时创建的系统数据库的是( )。

A、master B、model C、msdb D、usedb 13、SQL Server 2008中,删除数据库使用( )。

A、REMOVE B、DELETE C、ALTER D、DROP 14、关于数据库文件和文件组的叙述中,( )是错误的。

A、一个文件或文件夹只能用于一个数据库 B、一个文件只能是一个文件组的成员

C、数据库的数据信息和日志信息不能包含在同一个文件或文件组中 D、日志文件可以是文件组的成员

15、使用CREATE DATABASE语句时,( )不能用做文件大小的单位。

A、KB B、Byte C、MB D、TB

16、( )操作是把已经存在磁盘的数据文件恢复成数据库。

A、附加数据库 B、删除数据库 C、分离数据库 D、压缩数据库 17、通过数据库属性可以设臵数据库( )。

A、是否是只读 B、是否允许删除物理文件 C、允许创建表的数目 D、表中允许创建的数据行的最大数目 18、SQL Server数据库的主数据文件的扩展名为( )。

A、.sql B、.mdf C、.ldf D、.ndf 19、创建数据库时,需要指定( )属性。

A、数据库初始大小(size) B、数据库的存放位臵 C、数据库的物理名和逻辑名 D、数据库的访问权限 20、下面( )数据库不能进行分离操作。

A、AdventureWorks B、Test C、model D、pubs 21、( )情况下,可以收缩数据库。

A、master数据库损坏 B、内存空间不够

C、移动数据库之后 D、磁盘存储空间有限,文件中有大量的存储空间 22、扩展数据库包括( )。

A、添加一个文件 B、增加文件的大小 C、设臵数据库为自动增长 D、设臵文件为自动增长 23、下列关于master数据库的说法正确的是( )。

A、可以创建master数据库 B、可以附加master数据库 C、可以删除master数据库

D、如果master数据库不可用,则SQL Server无法启动 24、下面关于删除数据库文件描述正确的是( )。

A、数据文件中没有数据时,才可以从数据库中删除 B、数据文件中有数据时,也可以从数据库中删除 C、不能删除主数据文件和主日志文件

D、当日志文件不再包含任何活动的事务时,才可以从数据库中删除该日志文件 25、创建数据库时,不需要必须指定的数据库属性是( )。

A、数据库的初始大小(size) B、数据库的存放位臵 C、数据库文件的物理名和逻辑名 D、数据库的访问权限

数据库应用开发项目任务作业单(3)

一、思路拓展:

1、 制订表规划时应确定表的哪些特征? 2、 如何选用char和varchar数据类型? 3、 创建表有哪两种方法?

4、 PRIMARY KEY约束和UNIQUE约束有什么区别? 5、 在表之间创建外键关系有哪些方法?

6、 在数据库中创建的用户定义数据类型能够用在什么地方?如果想创建的用户自定义数据

类型用在所有库中,该怎么处理?

7、 如何查看表的属性?表的属性对话框中有四个选项卡,分别是什么? 8、 E-R图中钥匙符号的意义是什么? 9、 识读自动生成的表的脚本

二、深入细节:

(一)选择题

1、关于数据库的设计范式,以下说法错误的是( )。

A、数据库的设计范式有助于规范数据库的设计 B、数据库的设计范式有助于减少数据冗余

C、设计数据库时,一定要严格遵守设计范式,满足的级别越高,系统的性能就越好 2、通过( )可以唯一的标识表中的行。

A、CHECK约束 B、DEFAULT约束 C、PRIMARY KEY约束 D、FOREIGN KEY约束

3、在下列各项中,( )不是SQL Server数据库中表的类型。

A、系统表 B、临时表 C、文件分配表 D、标准表

4、如果列数据项差异很大,并且要支持多种语言,则应使用( )数据类型。

A、char B、varchar C、nchar D、nvarchan 5、在数据库中,系统视图sys.filegroups用来存放数据库的( )。

A、每个表、列的详细设臵 B、检查约束表达式 C、用到了那些数据类型 D、文件组信息 6、主键用来实施( )。

A、实体完整性约束 B、引用完整性约束 C、域完整性约束 D、自定义完整性约束 7、电话号码应当采用( )格式的数据类型来存储。

A、字符 B、整数 C、浮点数 D、bit

8、表A中的列B是标识列,属于自动增长数据类型,标识种子是2,标识增量是3,首先插入3行数据,软后删除一行数据,再向保重增加数据行时,标识值是( )。

A、5 B、8 C、11 D、2 9、要在SQL Server中创建一个员工信息表,其中员工薪水、医疗保险和养老保险分别采用

3个字段来存储,但该公司规定:任何一个员工的医疗保险和养老保险之和不能大于薪水的1/3.这一项规则可以采用( )来实现。

A、主键约束 B、外键约束 C、检查约束 D、默认约束

(二)填空题

10、在数据库中,空值用(null )来表示。(主键、primary key)约束可以指定列不接受空值。 11、字符串值Ture和False可以转换为以下bit值:Ture转换为( 1 ),False转换为(0 )。 12、若要创建用户数据类型,可以用(CREATE TYPE )语句。

13、若要更改列的属性,可在ALTER TABLE语句中使用( modify column )子句。

14、标识符列可以使用( IDENTITY )属性来实现。在选择列表中可使用( )关键字来引用标识符列。 15、CHECK约束通过对列的限制,来强制实现域的完整性。定义“学号”列时,要求通过CHECK约束限制列值必须由6位数字组成,则所用逻辑表达式为( 学号 like [0-9][0-9][0-9][0-9][0-9][0-9] )。

数据库应用开发项目任务作业单(4)

一、思路拓展:

1、 TRUNCATE TABLE语句在功能上与DELETE语句的什么情况相同?这两语句区别何在? 2、 Insert into、update、delete语句的使用格式都有哪些? 3、 数据到导入导出在什么情况下使用?(能解决什么问题?)

二、深入细节:

1、 现在ABC表中已经存储了数据,C列的数据存储了学生的民族信息,默认值应该为“汉

族”。可是在设计表时这个默认值的特征没有考虑,现在已经输入大量数据。对于少数民族的学生,民族信息已经输入。此时解决这个问题比较好的办法是( )。 A、 在该表中为该列添加NOT NULL约束

B、 使用“UPDATE ABC SET C=’汉族’ WHERE C IS NULL”进行更新数据 C、 使用“UPDATE ABC SET DEFAULT=’汉族’”进行更新数据 D、 手工输入所有的“汉族”

2、 表AB中有A和B两列,要把A列的平方根写到B列,正确的SQL语句为( )。

A、 UPDATE AB SET B=SQRT(A) B、 UPDATE AB SET A=A/2

C、 SELECT B FROM AB SET B=A.SQRT D、 SELECT A FROM AB SET B=A/2

3、 在执行INSERT语句时,当列满足( )条件时,数据库引擎一定能自动为该列提供值。

A、具有IDENTITY属性 B、指定有默认值 C、更新所有行 D、应用了CHECK约束 4、 若在UPDATE语句中未使用WHERE子句,则( )。

A、不会更新任何一行 B、只更新第1行 C、更新所有行 D、只更新最后一行

5、 若要基于随机选择n行来执行更新操作,则应在UPDATE语句中使用( )子句。

A、TOP B、FROM C、WHERE D、SET

数据库应用开发项目任务作业单(5)

一、思路拓展:

1、使用SELECT语句进行检索时,列列表的几种情况如何? 2、怎样使用DISTINCT?

3、怎样使用top n及top n percent? 4、如何替换列标题?

5、列列表中出现常量列时,返回结果如何?实用场合怎样? 6、怎样对查询返回结果进行条件限制? 7、列列表中表达式及函数的使用怎样?

8、怎样进行查询结果的排序?多排序关键字的理解。 9、in 与between 的等价使用?

10、模糊查询的实现:like、not like、null等的使用如何? 11、in 与between是否属于模糊查询? 12、compute与compute by的区别怎样?

13、compute by与order by的同步使用要求? 14、如何实现分组查询?

15、如何实现分组查询?where与having区别? 16、子查询如何实现?

17、怎样实现合并查询(或查询合并)?实现注意事项如何?

18、何为查询联接?什么是内连接、外连接(左、右、完全、交叉联接)?如何实现? 19、EXISTS()做条件时如何理解?

20、insert select from与select into from的区别?

二、深入细节:

已知: 学生表student(stuno char(8),classno char(8),stuname char(6));

选课表stucou(stuno char(8),couno char(3),state char(6));

课程表Course(couno char(3),couname char(20),willnum int,limitnum

int,credit tinyint,teacher char(6),kind char(10))。

请完成下列各题的查询指令的编写。

1、 将一个学生的新记录(stuno:`99102136`;classno;`99000001`;Stuname:`张三`),插入

到student表中。

2、 删除学号为99102137的学生记录。

3、 删除学号为99102138的学生的所有选课记录。 4、 将学生99102139的班级号改为00000002。

5、 将所有选修001号课程的学生的选课状态改为“选中”。 6、 删除student表。

7、 删除student表的Stusname索引。

8、 向student表增加“入学时间”列,其数据类型为日期型。 9、 将course表中学分字段(credit)的数据类型改为整型。 10、 删除学生表student中学号取唯一值的约束。 11、 查询全体学生的学号与姓名。 12、 查询全体学生的记录。

13、 检索ST数据库的course表的课程代码、课程名称,并要求显示报名人数与限选人数

之比。

14、 检索课程表中的信息,要求给出的检索结果为: 15、 在课程表中检索“网络原理”课程的主讲教师。 16、 在课程表中检索报名人数没超过40人的课程。 17、 检索课程表(course)中教师未定的课程。 18、 查询课程表中各门课程的信息,要求查询结果按教,同名教师按照课程编号升序排序。 19、 师姓名降序排序查询学分(credit)在1~3分之间的课程信息。

20、 查询学号为99102136的学生所选的001号课选程的课状态(状态:选中和报名)。 21、 查询课程号为001、003、015的课程信息。

22、 查询报名人数在10~50人之间的课程信息,要求查询结果按照报名人数降序排序。 23、 查询报名人数不在10~50人之间的课程信息。 24、 查询学号 为99102140的学生信息。 25、 查询学生表中姓“张”的同学的信息。 26、 查询第2个字为“宝”的学生信息。 27、 查询课程名称为VB_6.0”的课程代码。 28、 查询所有不姓李的学生信息。

29、 从学生表(student)中查询班级编码,要求消除值相同的行。 30、 查询学生总人数。

31、 查询选修了课程的学生人数。

32、 计算course表各门课程中最少报名人数的总人数。

33、 统计course表中各门课程中最少报名人数,最多报名人数和平均报名人数。 34、 按课程分类(kind)分类统计平均报名人数。 35、 查询“电子技术”类课程的平均报名人数。

36、 查询平均报名人数不超过502 的课程分类(kind)和这些课程分类的平均报名人数。 37、 查询每个学生的信息及选修课程的情况。 38、 将37用自然连接完成。

39、 查询课程类相同但系部编码不同的课程信息(同一类课程有多个系部开设)。 40、 查询学号为99102136的学生选修的课程学分在3分以上的课程情况。 41、 查询信息工程系开设的选修课的情况。 42、 查询信息工程系所有班级的编号及名称。

43、 查询“99级计算机”班的学生选修课程的情况(classname为“99级计算机”)。 44、 查询选修了徐凤老师所承受的课程的学生情况。 45、 查询与“张三”在同一个班级的学生。 46、 查询没有进行选课的学生记录。 47、 查询选修001号课程的学生信息。

48、 查询选修全部课程的学生信息。

49、 查询其他系中比编号(departno)为“01”的系所开的课程中某一课程学生报名人数

(willnum)少的课程情况。

50、 查询其他系中比编号(depqrtno)为“01”的系所有开的课程的学生报名人数(willnum)

都少的课程情况。

深入细节参考答案:

1、 将一个学生的新记录(stuno:`99102136`;classno;`99000001`;Stuname:`张三`),插入

到student表中。 INSERT

INTO student

VALUES(`99102136`,`99000001`,`张三`); 2、 删除学号为99102137的学生记录。

DELETE

FROM student

WHERE stuno=`99102137`;

3、 删除学号为99102138的学生的所有选课记录。

DELETE

FROM stucou

WHERE stuno=`99102138`;

4、 将学生99102139的班级号改为00000002。

UPDATE student

SET couno=`00000002` WHERE stuno=`99102139`;

5、 将所有选修001号课程的学生的选课状态改为“选中”。

UPDATE stucou SET state=`选中` WHERE couno=`001`; 6、 删除student表。

DROP TABLE student

7、 删除student表的Stusname索引。

DROP INDEX Stusname;

8、 向student表增加“入学时间”列,其数据类型为日期型。

ALTER TABLE student ADD stucome DATE;

9、 将course表中学分字段(credit)的数据类型改为整型。

ALTER TABLE course MODIFY credit int;

10、 删除学生表student中学号取唯一值的约束。

ALTER TABLE student DROP UNIQUE(stuno); 11、 查询全体学生的学号与姓名。

SELECT stuno,stuname FROM student

12、 查询全体学生的记录。

SELECT * FROM student; 等价于:

SELECT stuno,stuname,classno FROM student;

13、 检索ST数据库的course表的课程代码、课程名称,并要求显示报名人数与限选人数

之比。

SELECT *,willnum/limitnum FROM course; 14、 检索课程表中的信息,要求给出的检索结果为:

SELECT couname 课程名称,`课程编码为:`课程编码,Couno as 课程编码 FROM course;

15、 在课程表中检索“网络原理”课程的主讲教师。

SELECT teacher as主讲教师 FROM course

WHERE couname=`网络原理`;

16、 在课程表中检索报名人数没超过40人的课程。

SELECT couno,couname,willnum FROM course

WHERE willnum<=40;

17、 检索课程表(course)中教师未定的课程。

SELECT couno,couname FROM course

WHERE teacher IS NULL;

18、 查询课程表中各门课程的信息,要求查询结果按教师姓名降序排序,同名教师按照课

程编号升序排序。

SELECT couno,couname,teacher FROM course

ORDER BY teacher DESC,couno;

19、 查询学分(credit)在1~3分之间的课程信息。

SELECT couno,couname,credit FROM course

WHREE credit>=1 and credit<=3;

20、 查询学号为99102136的学生所选的001号课选程的课状态(状态:选中和报名)。

SELECT stuno,state FROM stucou WHREE stuno=`99102136`and couno=`001`; 21、 查询课程号为001、003、015的课程信息。

SELECT * FROM course WHREE couno IN(`001`,`003`,`015`); 等价于:

SELECT * FROM course WHREE couno=`001` OR couno=`003` OR couno=`015`;

22、 查询报名人数在10~50人之间的课程信息,要求查询结果按照报名人数降序排序。

SELECT couno,couname,willnum as报名人数 FROM course

WHREE willnum BETWEEN 10 AND 50 ORDER BY 报名人数 DESC; 23、 查询报名人数不在10~50人之间的课程信息。

SELECT couno,couname,willnum as 报名人数 FROM course WHREE willnum NOT BETWEEN 10 AND 50; 24、 查询学号 为99102140的学生信息。

SELECT * FROM student WHERE stuno LIKE `99102140`; 等价于:

SELECT * FROM student WHERE stuno=`99102140`; 25、 查询学生表中姓“张”的同学的信息。

SELECT * FROM student WHERE stuname LIKE `张%`; 26、 查询第2个字为“宝”的学生信息。

SELECT * FROM student WHERE stuname LIKE `_ _宝%`; 27、 查询课程名称为VB_6.0”的课程代码。

SELECT couno FROM course WHERE couname LIDE `VB\\_6.0`ESCAPE`\\`; 28、 查询所有不姓李的学生信息。

SELECT stuno,stuname FROM student WHERE stuname NOT LIKE`李%`; 29、 从学生表(student)中查询班级编码,要求消除值相同的行。

SELECT DISTINCT classno FROM student;

如果没有DISTINCT短语,则结果中含有取值重复的行。 SELECT classno FROM student; 等价于:

SELECT ALL xlassno FROM student; 30、 查询学生总人数。

SELECT COUNT(*)FROM student; 31、 查询选修了课程的学生人数。

SELECT COUNT(DISTINCT stuno)FROM stucou;

32、 计算xourse表各门课程中最少报名人数的总人数。

SELECT SUM(limitnum) AS限选总人数 FROM course;

33、 统计course表中各门课程中最少报名人数,最多报名人数和平均报名人数。

SELECT MIN(willnum) 最少报名人数,MAX(willnum) AS 最多报名人数,AVG(willnum) 平均报名人数 FROM course;

34、 按课程分类(kind)分类统计平均报名人数。

SELECT kind as课程分类,AVG(willnum)AS平均报名人数 FROM course GROUP BY kind;

35、 查询“电子技术”类课程的平均报名人数。

SELECT kind as 课程分类,AVG(willnum)AS平均报名人数 FROM course GROUP BY kind

HAVING kind=`电子技术`; 或

SELECT kind as 课程分类,AVG(willnum)AS平均报名人数 FROM course

HAVING kind=`电子技术` GROUP BY kind;

36、 查询平均报名人数不超过502 的课程分类(kind)和这些课程分类的平均报名人数。

SELECT kind as 课程分类,AVG(willnum)AS平均报名人数 FROM course GROUP BY kind

HAVING AVG(willnum)>50;

37、 查询每个学生的信息及选修课程的情况。

SELECT student.*,student* FROM student,stucou

WHERE student,stuno=stucou.stuno; 38、 将37用自然连接完成。

SELECT studenr,stuno,stuname,classno,couno,state FROM student,stucou

WHERE student.stuno=stucou.stuno;

39、 查询课程类相同但系部编码不同的课程信息(同一类课程有多个系部开设)。

SELECT DISTINCT t1.vouno,t1.couname,t1.kind,t1.departno FROM course t1,course t2

WHERE t1.kind=t2.kind AND t1.departno<>t2.departno;

40、 查询学号为99102136的学生选修的课程学分在3分以上的课程情况。

SELECT course.* FROM course,stucou

WHERE course.couno=stucou.couno AND

stucou.stuno=`99102136`AND course.crdit>3; 41、 查询信息工程系开设的选修课的情况。

SELECT couno,couname,kind,credit,teacher FROM course co,department d

WHERE co.departno=d.departno AND departname LIKE`信息工程系`; 42、 查询信息工程系所有班级的编号及名称。

SELECT classname

FROM class c,department de

WHERE c.departno=de.departno AND departname`信息工程系`;

43、 查询“99级计算机”班的学生选修课程的情况(classname为“99级计算机”)。

SELECT student.stuno,course.* FROM class,student,course,stucou

WHERE class.classno=student.classno AND Course.couno=stucou.couno AND Student.stuno=stucou.stuno AND Classname=`99级计算机`;

44、 查询选修了徐凤老师所承受的课程的学生情况。

SELECT stuno,stuname FROM student WHERE sruno IN

(SELECT stuno FROM stucou WHERE couno IN

(SELECT couno FROM course WHERE teacher=`徐凤`));

45、 查询与“张三”在同一个班级的学生。

SELECT s1.stuno,s1.stuname FROM student s1,student s2

WHERE s1.classno=s2.classno AND

S2.stuname=`张三`;

思考:若将代码改为: SELECT s1.stuno,s1.stuname FROM student s1,student s2

WHERE s1.classno=s2.classno AND S1.stuname=`张三`; 会有什么结果。

46、 查询没有进行选课的学生记录。

SELECT stuno,stuname FROM student WHERE sruno NOT IN

(SELECT DISTINCT stuno FROM stucou);

47、 查询选修001号课程的学生信息。

SELECT stuno,stuname FROM student WHERE EXISTS

(SELECT * FROM stucou WHERE stuno=stucou.stuno AND couno=`001`);

48、 查询选修全部课程的学生信息。

SELECT stuno,stuname FROM student WHERE NOT EXISTS

(SELECT * FROM stucou WHERE couno=course.couno AND stuno=student.stuno));

49、 查询其他系中比编号(departno)为“01”的系所开的课程中某一课程学生报名人数

(willnum)少的课程情况。

SELECT * FROM course WHERE willnum<

ANY(SELECT willnum FROM course WHERE departno=`01` AND departno<>`01`); 本查询也可以用集函数实现。

SELECT * FROM course WHERE willnum<

(SELECT MAX(willnum) FROM course WHERE departno=`01` AND departno<>`01`); 50、 查询其他系中比编号(depqrtno)为“01”的系所有开的课程的学生报名人数(willnum)

都少的课程情况。

SELECT * FROM course WHERE willnum<

ALL(SELECT willnum FROM course WHERE departno=`01`AND departno<>`01`);

/*注意最后的这个条件是父查询块中的条件*/ 也可用集函数来实现。

SELECT * FROM course WHERE willnum<

(SELECT MIN(willnum) FROM course WHERE departno=`01` AND departno<>`01`);

数据库应用开发项目任务作业单(6)

一、思路拓展:

1、 索引的主要作用是什么? 2、 索引使用的利与弊怎样?

3、 聚集索引与非聚集索引的主要区别是什么? 4、 视图的主要用途是什么?

5、 视图和表有什么共同点,有什么不同点? 二、深入细节:

1、( )总是对数据进行排序。

A、聚集索引 B、非聚集索引 C、组合索引 D、唯一索引 2、关于视图的说明,错误的是( )。

A、可以简化和定制不同用户对数据库的不同要求

B、视图可以使用户关心感兴趣的某些特定数据和所负责的特定任务 C、视图可以让不同的用户以不同的方式看到不同或者相同的数据集 D、视图不能用于连接多表

数据库应用开发项目任务作业单(7)

一、思路拓展:

1、 Transcact-SQL语句由哪些主要部分组成? 2、 existsz( )如何使用?

3、 全局变量与局部变量的区别是什么?使用场合如何? 4、 在WHILE循环中BREAK和CONTINUE的作用有什么不同? 5、 每种函数该如何使用? 6、 CASE函数有哪两种形式?

二、深入细节:

(一)填空题

1、在批处理中,当前批语句由上一个( )命令后输入的所有语句组成。

2、对象的完全限定名称由( )、( )、( )和( )4个部分组成。

3、在字符串中,可以使用( )来表示嵌入的单引号。 4、局部变量的作用域是其被声明时所在的( )。

5、当调用标量值用户定义函数时,必须至少提供由( )和( )两部分组成的名称。

(二)选择题

1、在基于SQL-92标准的语法中,引入了关键字( )来测试是否存在空值。

A、NULL B、NOT NULL C、IS D、IS NULL

2、设@n是使用DECLARE语句声明的一个局部变量,能对该变量赋值的语句是( )。

A、LET @n=123 B、SET @n=123 C、@n=123 D、@n:=123 3、在下列关于GOTO的叙述中,错误的是( )。

A、GOTO可位于标签之前或之后 B、GOTO只能位于标签之前 C、GOTO可跳转到其前后其后的标签 D、GOTO可嵌套使用 4、下列( )语句可以用来从WHILE语句中退出。

A、CLOSE B、BREAK C、EXIT D、以上都是 E、以上都不是 5、要将一组语句执行10次,下列( )结构可以用来完成此任务。

A、IF-ELSE B、WHILE C、CASE D、以上都是 6、给变量赋值时,如果数据来源于表中的某列,应采用( )方式。

A、SELECT B、PRINT C、SET D、以上都是

7、在SQL Server 2008D 查询编辑器中运行下面的语句,得到的结果是( )。

CREATE TABLE numbers(N1 int,N2 numeric(5,0),N3 numeric(4,2)) GO

INSERT numbers values(1.5,1.5,1.5) SELECT * FROM numbers

A、返回2.2和1.50的记录集

B、返回1.5,1.5和1.5的记录集

C、CREATE TABLE命令不会执行,因为无法将列N2的精度设臵为0 D、返回1.2和1.50的记录集

数据库应用开发项目任务作业单(8)

一、思路拓展:

1、 使用游标有哪些步骤?

2、 MS SQL Server事务的运行模式有哪些? 3、 编写有效事务的原则是什么?

二、深入细节:

(一)填空题

1、使用@@CURSOR_ROWS函数可以在上次打开的游标中获取符合条件的( )。 2、在FETCH语句中,NEXT表示( ),PRIOR表示( )。

3、一个逻辑作业单元要成为一个事务,必须有( )、( )、( )和( )4个属性。

(二)选择题

1、在数据库操作过程中事物处理是一个操作序列,必须具有地特性有:原子性、隔离性、持久型和( )

A.继承性 B.一致性 C.封装性 D.共享性 2、数据经过处理之后又一种状态变为另一种状态,将( )

A.不会破坏事务的原子性 B.破坏事务的原子性 C.可能破坏事务的原子性 D.不能确定

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

Top