SQL Server题库

一 选择题
2、下列哪个标识符不是SQL SERVER 2005的常规标识符(A )。
A、3b B、#xuesheng C、##xuesheng D、2abc
3、下列哪个函数不属于聚合函数( D )。8888888888
A、count() B、avg() C、min() D、str()
4、下列各运算符中(A )不属于逻辑运算符。8888888
A、& B、not C、and D、or
5、下列哪条语句能够从学生表中查询出姓名的第二个字是“敏”的学生的信息( B )。88888
A、select * from 学生表 where 姓名=’敏%’
B、select * from 学生表 where 姓名 like ’敏%’
C、select * from 学生表 where 姓名 like ’%敏%’ 
D、select * from 学生表 where 姓名 like ’%敏’
6、聚合函数不可以用在下列哪个语句中( D )。
A、SELECT子句 B、HAVING 子句 C、WHERE 子句 D、子查询
7、下列哪些选项在T-SQL语言中使用时不用括在单引号中( D )。88888
A、单个字符 B、字符串 C、通配符 D、数字
9、下列哪个命令必须在单个批命令中执行。( D )
A、CREATE DATABASE B、CREATE TABLE C、CREATE INDEX D、CREATE VIEW
10、下列有关关键字的说法中,不正确的是( B )。
A、主关键字能惟一标识表中的每一行 B、每个表中一定存在外关键字
C、侯选关键字中的任一个都可以充当主关键字 D、关键字的值不能重复,也不能为NULL
11、根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项:(B
A、只存在一对多的实体关系,以图形方式来表示。
B、以二维表格结构来保存数据,在关系表中不允许有重复行存在。
C、能体现一对多、多对多的关系,但不能体现一对一的关系。
D、关系模型数据库是数据库发展的最初阶段。
12、在“连接”组中有两种连接认证方式,其中在(B
)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
A、Windows身份验证 B、SQL Server 身份验证
C、以超级用户身份登录时 D、其他方式登录时
13、视图是一种常用的数据对象,可以简化数据库操作,当使用多个数据表来建立视图时,不允许在该语句中包括(B
)等关键字。
A、ORDER BY,COMPUTE
B、ORDER BY,COMPUTE,COMPUTR BY
C、ORDER BY,COMPUTE BY,GROUP BY
D、GROUP BY,COMPUTE BY
15、 利用查询分析器,能(A )。
A、直接执行SQL语句 B、提交SQL语句给服务器执行
C、作为企业管理器使用 D、作为服务管理器使用
16、 事务日志文件的默认扩展名是( C)。888888
A、MDF B、NDF C、LDF D、DBF
17、 通过使用文件组,可以( A )。
A、提高存取数据的效率。 B、提高数据库备份与恢复的效率
C、简化数据库的维护 D、ABC都可以。
18、 SQL Server的主数据库是( A)。8888888
A、MASTER B、TEMPDB C、MODEL D、MSDB
19、 数据库的容量,( D)。8888888
A、只能指定固定的大小。 B、最小为10M
C、最大100M。 D、可以设置为自动增长
20、 日期时间型数据类型(datetime)的长度是(C )。
A、2 B、4 C、8 D、16
21、表在数据库中是一个非常重要的数据对象,它是用来(C
)各种数据内容的。88888
A、显示 B、查询 C、存放 D、检索
22、为数据表创建索引的目的是(A__),可以在创建表时用( A_)来创建唯一索引。88888
⑴ A、提高查询的检索性能 B、创建唯一索引
C、创建主键 D、归类
⑵ A、设置主键约束,设置唯一约束 B、Create table,Create index
C、设置主键约束,Create index D、以上都可以
23、 在T-SQL语法中,用来插入和更新数据的命令是(A_)。888888
A、INSERT,UPDATE B、UPDATE,INSERT
C、DELETE,UPDATE D、CREATE,INSERT INTO
24、 主键约束用来强制数据的(B )完整性。
A、域 B、实体 C、参照 D、ABC都可以
25、 在SQL Server服务器上,存储过程是一组预先定义并(B__)的T-SQL语句。
A、保存 B、编译 C、解释 D、编写
26、 替代触发器(instead of)是在触发触发器的修改操作( D )执行。
A、执行后 B、停止执行时 C、同时 D、之前
27、 聚合函数的返回值是(A )。
A、一个标量值 B、一组值 C、表达式 D、表
28、一个仓库可以存放多种产品,一种产品只能存放于一个仓库中。仓库与产品之间的联系类型是 8888888888
A、一对一的联系 B、多对一的联系
C、一对多的联系 D、多对多的联系 答案:(C )
31、以下那中情况不是连接陷阱产生原因(A)
A、把多对多的联系转换为一对一的联系
B、把多对多的联系转换为一对多的联系
C、把原本的联系现在用实体表示
D、把原本的联系通过实体联系到一起
32、不属于传统数据模型的是(D)88888888888
A、层次数据模型 B、网状数据模型
C、关系数据模型 D、面向对象数据模型
34、在SQL Server中,不是对象的是(B)
A、用户 B、数据 C、表 D、数据类型
35、以下论述不正确的是(D)
A、distribution数据库是系统数据库
B、企业管理器与查询分析器都是客户端工具
C、SQL Server 2005可以安装到windows、windows XP、windows NT系统上。
D、SQL Server 支持的SQL命令集称为T_SQL,它是完全符合ANSII SQL92标准的。
36、以下正确的论述是(C)
A、在建立数据库的时候,SQL Server 是可以创建操作系统文件及其目录路径。
B、数据库中有一些sys开头的系统表,用来纪录SQL Server组件、对象所需要的数据,
这些系统表全部存放在系统数据库中。
C、SYS开头的系统表中的数据用户不能直接修改,但可以通过系统存储过程、系统函数
进行改动、添加。
D、12AM是中午,12PM是午夜。
37、声明了变量:declare @i int,@c char(4),现在为@i赋值10,为@c赋值’abcd’,
正确的语句是(C)
A、set @i=10,@c=‘abcd’ B、set i=10 , set @c=‘abcd’
C、select @i=10,@c=‘abcd’ D、select @i=10, select @c=‘abcd’
38、有如下代码,当代码中_[关键字]_分别为break continue return时,最后的print @n输
出的值为(A)
declare @n int
set @n=3
while @n>0
begin
set @n=@n-1
if @n=1 [关键字]
end
print @n
A、1,0,不输出 B、1,1,1
C、0,0,0 D、0,1,2
40、关于SQL Server 安装命名实例时,不正确的描述是(B)
A、最多只能用16个字符
B、实例的名称是区分大小写
C、第一个字符只能使用文字、@、_和#符号。
D、实例的名称不能使用Default或MSSQLServer这两个名字。
42、(C)是长期存储在计算机内的有组织,可共享的数据集合. 888888
A、数据库管理系统 B、数据库系统
C、数据库 D、文件组织
43.数据库系统不仅包括数据库本身,还要包括相应的硬件,软件和(D).
A、数据库管理系统 B、数据库应用系统
C、相关的计算机系统 D、各类相关人员
44.在文件系统阶段,数据(B)
A、无独立性 B、独立性差
C、具有物理独立性 D、具有逻辑独立性
45.数据库系统阶段,数据(D)
A、具有物理独立性,没有逻辑独立性 B、具有物理独立性和逻辑独立性
C、独立性差 D、具有高度的物理独立性和一定程度的逻辑独立性
46.(B)属于信息世界的模型,是现实世界到机器世界的一个中间层次.
A、数据模型 B、概念模型
C、E-R图 C、关系模型
47.数据库系统软件包括DBMS和(D)
A、数据库 B、高级语言
C、OS D、数据库应用系统和开发工具
48.在SQL语言中授权的操作是通过(C)语句实现的。888888
A、CREATE B、REVOKE
C、GRANT D、INSERT
49.数据库中只存放视图的(C)
A、操作 B、对应的数据 C、定义 D、限制
50.概念结构设计阶段得到的结果是(B)
A、数据字典描述的数据需求 B、E-R图表示的概念模型
C、某个DBMS所支持的数据模型 D、包括存储结构和存取方法的物理结构
52、现有关系:学生(学号,姓名,课程号,系号,系名,成绩),为消除数据冗余,
至少需要分解为(C )
A 1个表 B 2个表
C 3个表 D 4个表
53、已知职工和职工亲属两个关系,当职工调出时,应该从职工关系中删除该职工的元组,同时在职工亲属关系中删除对应的亲属元组,在SQL语言中,定义这个完整性约束的短语是(D )
A ON DELETE ALL B ON DELETE RESTRICT
C ON DELETE SET NULL D ON DELETE CASCADE
54、DBMS中的检查点机制用于(B )
A 检查事务的故障 B 减少故障恢复的时间
C 检查数据库一致性状态 D 检查数据库的完整性
55.有两个关系R和S,分别包含15个和10个元组,则在R∪S,R-S,R∩S中不可能出现的元组 数目情况是(B )
A 15,5,10 B 18,7,7
C 21,11,4 D 25,15,0
56.授予用户Jean可以查询帐户表的权限,使用的SQL语句是( A )
A GRANT SELECT ON 帐户 TO Jean
B GRANT SELECT TO Jean ON 帐户
C GRANT SELECT TO帐户 ON Jean
D GRANT SELECT ON Jean TO 帐户
58.如下不能正确执行的语句是(D)
A、select * from table_name where 1>2
B、truncate table table_name
C、delete from table_name where null=null
D、alter table table_name add column idd int

62 .你是一个保险公司的数据库开发人员,这家保险公司有一个用于保单或保单所有者的多层的应用。保单所有者信息存储在一个名为Owners的表中,下面的语句用于建立这个表,
当保单所有者的信息输入时,若不包括所有者的出生年月,数据库要产生一个错误信息。你要设计一个方法来校验出生日期数据是否填写,没有的情况下要显示错误信息。
你将怎么做?
A、在BirthDate 字段上加上CHECK约束。
B、建立一个规则,并将这个规则绑定在BirthDate字段上。
C、改变Owners表使BirthDate字段不能为空。
D、在Owners表上建立一个触发器校验BirthDate字段。
答案 D
65.你是一个集装箱制造公司的数据库开发人员,公司制造的集装箱有不同的尺寸和形状,存储的集装箱信息的表有Size、Container、Shape。
一般来说,集装箱的尺寸周期性的改变,数据库的用户需要知道集装箱的容量,容量是基于Shape、size表中的数据计算得到的。你要隐藏计算的细节,使用一个SELECT查询可以方便的得到,你将怎么做?
A、建立一个用户定义的函数,使用ContainerID作为参数,返回集装箱的容量。
B、建立一个程序,使用ContainerID作为参数,返回集装箱的容量。
C、在Container表中加入名为volume的一列,当一个新集装箱加入表中时,建立一个触发器计算和存储这列的值。
D、在Container表中加入一个计算过的列计算集装箱的容量。
答案: A、
68 .你是一个保险公司的数据库开发人员,公司的保单信息存储在SQL Server 2005数据库中,你使用以下脚本建立了一个名为Policy的表:
CREATE TABLE Policy
(
PolicyNumber int NOT NULL DEFAULT (0),
InsuredLastName char (30) NOT NULL,
InsuredFirstName char (20) NOT NULL,
InsuredBirthDate datetime NOT NULL,
PolicyDate datetime NOT NULL,
FaceAmount money NOT NULL,
CONSTRAINT PK_Policy PRIMARY KEY (PolicyNumber)
)
每次公司销售出一份保单,Policy表中就增加一条记录,并赋予其一个新的保单号,你将怎么做?
A、建立一个INSTEAD OF INSERT触发器来产生一个新的保单号,并将这个保单号插入数据表中。
B、建立一个INSTEAD OF UPDATE触发器来产生一个新的保单号,并将这个保单号插入数据表中。
C、建立一个AFTER UPDATE触发器来产生一个新的保单号,并将这个保单号插入数据表中。
D、用AFTER UPDATE触发器替代DEFAULT约束条件产生一个新的保单号,并将这个保单号插入数据表中。
答案: A、
81.你是一名数据库咨询顾问, 目前你被一家本地狗饲养场雇用来开发数据库.这个数据库将被使用来存储关于饲养者的狗的信息.你使用下面的脚本创建了一个名为Dogs的表:
CREATE TABLE[dbo].[Dogs]
(
[DogID] [int] NOT NULL,
[BreedID] [int] NOT NULL,
[DateofBirth] [datetime] NOT NULL,
[WeightAtBirth] [decimal] (5, 2) NOT NULL,
[NumberOfSiblings] [int] NULL,
[MotherID] [int] NOT NULL,
[FatherID] [int] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Dogs] WITH NOCHECK ADD
CONSTRAINT [PK_Dogs]PRIMARY KEY CLUSTERED
(
[DogID]
) ON [PRIMARY]
GO
你必须确保每条狗的MotherID和FatherID列都有有效的值.你想在保证最小化磁盘I/O的条件下执行这个规则.你该做什么
©
A、 在Dogs表上创建一个AFTER INSERT触发器, 使其回滚MotherID或FatherID列事务无效
B、 在MotherID和FatherID列上创建一个表级CHECK约束
C、 创建两个FOREIGN KEY约束: 一个在MotherID列, 一个在FatherID列; 指定每个约束引用DogID列
D、 创建一个规则并把它和MotherID列绑定, 把同样规则和FatherID列绑定
84.你是某销售组织的数据库开发人员, 你的数据库有一个名为Sales表, 此表包括了来自销售人员的销售订单概要信息.销售经理要求你创建一个销售额排在前20位的销售人员报表, 你该使用哪个查询来完成这个任务(D)
A、 SELECT TOP 20 PERCENT LastName, FirstName, SUM (OrderAmount) AS ytd
FROM sales
GROUP BY LastName, FirstName
ORDER BY 3 DESC
B、 SELECT LastName, FirstName, COUNT() AS sales
FROM sales
GROUP BY LastName, FirstName
HAVING COUNT (
) > 20
ORDER BY 3 DESC
C、 SELECT TOP 20 LastName, FirstName, MAX(OrderAmount) AS ytd
FROM sales
GROUP BY LastName, FirstName
ORDER BY 3 DESC
D、 SELECT TOP 20 LastName, FirstName, SUM (OrderAmount) AS ytd
FROM sales
GROUP BY LastName, FirstName
ORDER BY 3 DESC
87. 触发器可以创建在  A  中。
A 表  B 视图  C 数据库  D 查询
88. Create Procedure 是用来创建  B  。 8888888888
A 程序   B 过程   C 触发器   D 函数
89. 以下触发器是当对[表1]进行  D   操作时触发。
 Create Trigger abc on 表1
For insert , update , delete
As ……
A 只是修改  B 只是插入  C 只是删除  D 修改、插入、删除
90. 要删除一个名为A1的过程,用命令:  C   Procedure A1 。
A Delete B Alter C Drop D Execute
91. 触发器可引用视图或临时表,并产生两个特殊的表    和  A  。
A Deleted ,Inserted B Delete,Insert C View,Table D View1,table1
92. 执行带参数的过程,正确的方法为 B    。
A 过程名(参数) B 过程名 参数  C 过程名=参数  D A,B,C三种都可以
94. 当删除  D 时,与它关联的触发器也同时被删除。
A 视图  B 临时表  C 过程   D 表
95.数据库设计中的概念结构设计的主要工具是(B )。
A、数据模型 B、E—R模型 C、新奥尔良模型 D、概念模型
96.数据库设计中的逻辑结构设计的任务是把( D )阶段产生的概念数据库模式变换为逻辑结构的数据库模式。
A、需求分析 B、物理设计 C、逻辑结构设计 D、概念结构设计
97.一个规范化的关系至少应当满足( C )的要求。
A、一范式 B、二范式 C、三范式 D、四范式
98.( A )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。
A、DBMS B、DB C、DBS D、DBA
99.( C )数据库是被长期存放在计算机内的、有组织的、统一管理的相关数据的集合。88888888888
A、DATA B、INFORMATION C、DB D、DBS
100. 数据库应用系统是由数据库、数据库管理系统(及其开发工具)、应用系统、( D )和用户构成。88888888888
A、DBMS B、DB C、DBS D、DBA
二.判断题:(每题2分)
3、(y)在SQL SERVER中,替代触发器的执行是在数据的插入、更新或删除之前执行的。
4、 ( n)因为通过视图可以插入、修改或删除数据,因此视图也是一个虚实表,SQL SERVER将它保存在syscommens系统表中。
5、(y)当登录到WINDOWS的用户与SQL Server联接时,用户不用提供SQL Server帐号,这种认证模式就是WINDOWS认证机制。
7、(y)通配符“”表示某单个字符。
8、(n)域完整性又称为引用完整性。
10(y)一个表上只能建立一个聚集索引。
11、 SQL SERVER 中,使用SET语句一次可以给多个变量赋值,使用SELECT语句一次只能给一个变量赋值。( n)
13、 在SQL SERVER 2005中,空值(NULL)意味着没有输入,它的存在通常表明值未知或未定义。(y)
14、 SQL语言是一种用于存取和查询数据,更新并管理关系数据库系统的数据库查询和编程语言。(y)
15、 SQL SERVER 2005中,一个物理磁盘只能存放一个数据库,一个数据库也只能存放在一个物理磁盘上。(y)
17、 SQL Server中关键字是用来惟一标识表中每一行的属性或属性组合。 (y)
18、 SERVER 中,数据库是用来存放表和索引的逻辑实体。 (y)
20 批处理是包含一个或多个T-SQL语句的组,它将一次性地发送到SQL SERVER中执行。( y )
21 自定义函数在对任何表的查询中都可以使用 。 (y)
23 由于触发器是特殊类型的存储过程,因此它可以在程序中被调用执行。 (n)
25 存储过程的输出结果可以传递给一个变量。 (y)
28 视图有与表相同的功能,在视图上也可以创建触发器。 (n)
35、在CREATE INDEX语句中,使用CLUSTERED来建立簇索引。( √)
37、恢复数据,可以在查询分析器中使用这样的命令:
BACKUP DATABASE database_name FROM backup (× )
41、在SQL SERVER中,触发器的执行是在数据的插入、更新或删除之前执行的。(×)
42、在 Transact-SQL 语句的WHERE子句中,完全可以用IN子查询来代替OR逻辑表达式。(×)
43、通配符“
”表示某单个字符。(√)
55 为了能够成功的安装和运行Microsoft SQL Server 2005,必须安装Internet Explror 5.0。( n )
58 在创建表时,不能指定将表放在某个文件上,只能指定将表放在某个文件组上。如果希望将某个表放在特定的文件上,那么必须通过创建文件组来实现。(y )
59 DELETE语句只是删除表中的数据,表本身依然存在。( n)
60 索引是建立在行的上面。( y)
61索引越多越好。(n )
62视图本身没有数据,因为视图是一个虚拟的表。(y)
63 存储过程是存储在服务器上的一组预编译的Transcat-SQL语句。( y )
65 安装Microsoft SQL Server 2005 企业版对操作系统的最低要求可以是Microsoft Windows Professional。( y )
67认证模式是在安装SQL Server过程中选择的。系统安装之后,可以重新修改SQL Server系统的认证模式。( n)
68用户定义的数据类型正在被某个表的定义引用时,这些数据类型不能被删除。(y )
69使用子查询时,必须使用括号把子查询括起来,以便区分外查询和子查询。( n)
70视图本身没有数据,因为视图是一个虚拟的表。( y )
71建触发器的时候可以不是表的所有者或数据库的所有者。( y )
三、简答题
1、简述文件系统与数据库系统的区别与联系。
文件系统和数据库系统之间的区别。(1)文件系统用文件将数据长期保存在外存上,数据库系统用数据库统一存储数据;(2)文件系统中的程序和数据有一定的联系,数据库系统中的程序和数据分离;(3)文件系统用操作系统中的存取方法对数据进行管理,数据库系统用DBMS统一管理和控制数据;(4)文件系统实现以文件为单位的数据共享,数据库系统实现以记录和字段为单位的数据共享。
文件系统和数据库系统之间的联系:(1)均为数据组织的管理技术;(2)均由数据管理软件管理数据,程序与数据之间用存取方法进行转换;(3)数据库系统是在文件系统的基础上发展而来的。
2、简述集成服务体系结构的特点。

3、数据控制语言的作用是什么?
是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、DENY、REVOKE等语句,在默认状态下,只有sysadmin、dbcreator、db_owner或db_securityadmin等角色的成员才有权利执行数据控制语言。
4、数据文件和日志文件的作用是什么?
日志文件用来记录数据库的更新操作,数据文件用来存储数据
5、数据库对象所有者与架构分离,对表的建立有何影响?

6、何为聚集索引?有什么特点?
聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。
聚集索引的特点:
1)聚集索引对于那些经常要搜索范围值得列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理上相邻;
2)对表中数据进行排序时,通常是按照某个字段来排序,可以在该字段上创建聚集索引,避免每次查询该列时都进行排序,节约成本。
3)先创建聚集索引,再创建非聚集索引。这样在创建聚集索引后就无需重新生成非聚集索引了。
4)聚集索引不适合用于频繁更改的列,因为这将导致整行移动。
7、简述视图的优点。
简单性,安全性,逻辑数据独立性。
8、简述数据透视表及其作用。
数据透视表是交互式报表,可快速合并和比较大量数据。您可旋转其行和列以看到源数据的不同汇总,而且可显示感兴趣区域的明细数据。
9、什么是数据库的完整性?
数据库完整性(Database Integrity)是指数据库中数据的正确性和相容性。
10、什么是1NF?
第一范式(1NF): 无重复的列,不存在某列包含其他列的内容。
11、简述数据库管理系统的主要功能。
(1)数据定义功能
(2)数据操纵功能
(3)数据库的运行控制功能
(4)数据库的维护功能
(5)数据字典的功能
12、简述企业管理器主要功能。
□启动和停止服务器 □注册服务器 □配置本地和远程服务器 □配置并管理多个服务器的安装 □管理数据库用户(用户、系统管理员和操作员) □管理系统管理员(sa)的密码 □建立和计划作业 □建立警告并配置SQLServer □建立和管理数据库 □建立和管理数据库对象:表、索引、视图、存储过程、触发器等 □管理其他SQL Server服务
13、T-SQL的数据类型有哪几类?
1.二进制
2.精确数字
3.货币
4.近似数字
5.字符
6.日期时间
7.用户自定义
14、为什么要进行数据库的分离和附加操作?
在你需要把数据库拷到U盘或者保存到其他地方时候就必须分离 不然无法移动的 附加的情况则是你需要用到你的数据库系统里没有的数据库时你就需要附加你需要的数据库
15、如何一次向表中添加多条记录?
直接通过insert语句多次插入即可。
16、何为非聚集索引?有什么特点?
非聚集索引是一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。
非聚集索引的特点:
1)不适合返回大型结果集的查询
2)适合返回精确匹配的查询的搜索条件(where子句)中经常使用的列。
17、简述存储器与触发器的异同。
触发器是一种特殊类型的存储过程,通常用于实现强制业务规则和数据完整性。存储过程是通过存储过程名称被调用执行,而触发器是通过事情触发而由系统自动执行的。
18、简述用查询结果创建新表的方法。
select * into newtable from oldtable where 条件
20、什么是3NF?
3NF,即第三范式是要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

四、 操作题
1#
现有关系数据库如下:
数据库名:教师数据库
教师表(编号 char(6),姓名,性别,民族,职称,身份证号)
课程表(课号 char(6),名称)
任课表(ID,教师编号,课号,课时数)
用SQL语言实现下列功能的sql语句代码:

  1. 创建上述三表的建库、建表代码(14分);
    要求使用:主键(教师表.编号,课程表.课号)、外键(任课表.教师编号,任课表.课号)、默认(民族)、非空(民族,姓名)、唯一(身份证号)、检查(性别、课时数),自动编号(ID)
  2. 将下列课程信息添加到课程表的代码(6分)
    课号 课程名称
    100001 SQL Server数据库
    100002 数据结构
    100003 VB程序设计
    修改 课号为100003的课程名称:Visual Basic程序设计
    删除 课号为100003的课程信息
  3. 写出创建​​任课表视图​​的代码;(4分)
  4. 写出创建[某门课任课教师]内嵌表值函数以及检索的代码;(6分)
    检索:所有代’SQL Server数据库’这门课程的老师姓名;
  5. 写出创建[统计课时数]:输出最大课时数、最低课时数、平均课时的存储过程以及执行代码;(6分)
写出创建:计算某教师代课总课时,并将值返回的存储过程以及执行代码。(6分)

执行:计算“郭老师”的总课时。(6分)
7. 检索有一门或一门以上课程课时数大于90的所有教师的信息,包括编号、姓名。(4分)
8. 建一个规则,并将其绑定到教师表的职称列上,规定取值为(‘教授’,‘副教授’,‘讲师’, ‘助教’)之一。(4分)
答案:
1.
create database [教师数据库] --(2分)
use [教师数据库]
go
create table 教师表 --(6分)
([编号] char(6) primary key,
[姓名] nchar(4) not null,
[性别] nchar(1) check([性别] in (‘男’, ‘女’)),
[民族] nchar(8) default ‘汉族’ not null,
[职称] nchar(12),
[身份证号] char(18) unique
)
create table 课程表 --(2分)
([课号] char(6) primary key,
[名称] char(40) not null
)
create table 任课表 --(4分)
(ID IDENTITY(1, 1),
[教师编号] char(6) references 学生表(学号),
[课号] char(6) references 课程表(课号),
[课时数] integer check([课时数] between 0 and 200))
2.
insert 课程表 values(‘100001’, ‘SQL Server数据库’)
insert 课程表 values(‘100002’, ‘数据结构’)
insert 课程表 values(‘100003’, ‘VB程序设计’)
update 课程表 set 名称=‘Visual Basic程序设计’ where 课号=‘100003’
delete 课程表 where 课号=‘100003’
3.
create view [任课表视图] as
select 教师编号,姓名,课号, 课程名称,课时数 from 教师表,任课表
where 教师表.编号=任课表.教师编号
4.
create function [某门课任课教师](@课程名 varchar(15))
returns table as
return (select 课程名称, 课时数, 教师姓名=姓名 from 任课表视图
where 课程名=@课程名)
go
select * from [某门课任课教师](‘SQL Server数据库’)
5.
create procedure [统计课时数]
as
select 最大课时数=max(课时) ,最小课时数=min(课时),平均课时数=avg(课时) from 任课表
go
execute [统计课时]
6.
create procedure [统计课时]
@教师名 nchar(16),
as
begin
declare @总课时 int
select @总课时=sum (课时) from 任课表视图 where 姓名 = @教师名
end
go
execute [统计课时] ‘郭老师’


select 编号, 姓名 from 教师表
where编号 in (select distinct 教师编号 from 任课表 where课时数>=90)
8.
create rule zhicheng _rule
as @zhicheng in (‘教授’,‘副教授’,‘讲师’, ‘助教’)
go
sp_bindrule zhicheng_rule, ‘教师表.职称’
2#
有一个[学生课程]数据库,数据库中包括三个表:
学生表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记为: Student(Sno,Sname,Ssex,Sage,Sdept) ,Sno 为关键字。
课程表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。
成绩表SG由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记为: SG(Sno,Cno,Grade) (SNO, CNO)为关键字。
用SQL语言实现下列功能:
1.建立学生表Student,其中学号属性不能为空,并且其值是唯一的。
2.向Student表增加“入学时间(Scome)”列,其数据类型为日期型。
3.查询选修了3号课程的学生的学号及其成绩,查询结果按分数的降序排列。
4.查询学习1号课程的学生最高分数、平均成绩。
5.查询与“李洋”在同一个系学习的学生。
6.将计算机系全体学生的成绩置零。
7.删除学号为05019的学生记录。
8.删除计算机系所有学生的成绩记录。
答案:
1.
create table student
(Sno char(5) primary key,
Sname char(20),
Ssex char(2),
Sage int,
Sdept char(15)
)
2.
select distinct sno
from sg
where grade < 60
3.
update student
set sage=22
where sno=‘05001’
4.
select avg(grade)
from sg
where cno=‘1’
5.
create procedure getdetailbyname
@name nvarchar(10)
as
if (select count(*) from student where sname = @name) > 0
select * from student where sname = @name
else
print ‘不存在姓名为 ’ + @name + ’ 的学生资料’
6.
select sname,ssex,sage
from sdudent
where sdept=’计算机系’and sname like ‘赵 %’ and ssex =‘女’
7.
create view [学生成绩表视图] as
select sno, sname, cno, cname, grade from sg, sdudent
where sC、sno=sdudent.sno
8.
insert into student
values (‘05020’, ‘丁莉’, ‘女’, 17, ‘计算机系’)
3#
假定使用的“图书”、“读者”、“借阅”和ZGJ K库的定义如下:
图书(总编号C(6),分类号C(8),书名C<16),作者C(6),出版单位C<16),单价N(7,2))
读者(借书证号C(4),单位C,姓名C(6),性别C<2),职称C<6),地址C(16))
借阅(借书证号C(4),总编号C(6),借书日期D())
ZGJK(职工号C(6),姓名C(6),性别C(2),出生日期D<),职称C(6),基本工资N(7,2))

  1. 查 询 出“图书”数据库中高等教育出版社出版的单价不低于20元的所有各类的图书。
  2. 按 单 价升序显示“图书”库中清华大学版的所有图书。
  3. 分 组 统计出“借阅”库中每一种借书证号所借图书的册数。
  4. 联 接 查询“借阅”、“读者”和“图书”三个库,得到每一本所借图书的读者的借书证号、姓
    名、单位和书名。
  5. 显 示 出ZGJK 库中基本工资在300至500元之间的所有职工记录。
  6. 在 ZG JK 库上按职工号建立一个单索引文件zgh.id x,并自动成为主索引。
  7. 使 ZG JK 库上的结构化复合索引文件中的标记为“职称”的索引成为主控索引。
  8. selectd istinct书名,作者,单价;
    from 图书;
    where出版单位=“高等教育”AND单价>=20.0 0
  9. select} ;
    from 图 书;
    where出版单位=“清华大学”;
    orderb y单价
  10. select借书证号,count(} );
    from 借 阅;
    group by借书证号
  11. select x.借书证号,Y.姓名,Y.单位,z.书名;
    from 借 阅x,读者Y,图书z;
    where x. 借书证号=Y.借书证号and x.总编号=z.总编号
  12. usez gjk
    List for 基本工资>=300.anD、基本工资<= 500
  13. usez gjk
    index o n职工号toz gh
  14. usez gjk
    set order t ot ag职称
    4#
    在名称为商品库的数据库中包含有商品表1和商品表2,它们的定义分别为:
    商 品表 1(商品代号char(8),分类名char(8),单价float,数量int)
    商 品表 2(商品代号char(8),产地char(6),品牌char(6))
    在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义分别为:
    学生 ( 学 生号char(7),姓名char(6),性别。har(2),出生日期datetime,
    专 业 ch ar (1 0 ), 年级int)
    课程 ( 课 程号char<4),课程名char(10),课程学分int)
    选课 ( 学 生号char(7),课程号。har(4),成绩int)
  15. 从 商 品库中查询出所有商品的不同品牌。
  16. 从 教 学库中查询出学生号为@s1的学生和学生号为@s2的学生所选修的共同课程的
    课程号。
  17. 从 教 学库中查询出每个专业的学生人数,并按人数多少降序排列。
    4.从商品库中查询出每类(即分类名相同)商品的最高单价。
    5.从商品库中查询出同一类商品多于一种的所有分类名
  18. select distinct品牌
    fro m 商 品 表 2
  19. s electx .学生号,Y.学生号,Y.课程号
    fro m 选 课 x, 选课Y
    wh er e x . 学 生号=@s1a ndy .学生号=@s2
    and x .课 程 号 = Y. 课 程 号
  20. select专业,count(,)as专业人数
    from 学 生
    group by 专 业
    order by 专 业人数desc
  21. select分类名,max(单价)as最高单价
    fro m 商 品 表 1
    group by 分 类 名
  22. selectd istinct分类名
    fro m 商 品 表 1
    group by分 类 名 havingc ount( } ) > 1

5#
假定使用的”图书“、”读者“、‘1借阅“和ZGJK库的定义如下:
图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(16),单价N(7,2))
读者(借书证号C(4),单位C(10),姓名C(6),性别C(2),职称C(6),地址C(16))
借阅(借书证号C(4),总编号C(6),借书日期D())
ZGJK (职工号C(6),姓名C(6),性别C(2),出生日期D(),职称C(6),基本工资N(7,2)

  1. 查 询 出“图书”数据库中作者姓“李”的所有图书。
  2. 按 分 类号升序显示“图书”库中各种图书的分类号、书名和作者。
  3. 查 询 出“图书”库中书名含有“数据库”字串的所有图书。
  4. 联 接 查询“借阅”库和“读者”库,得到每一借阅读者的借书证号、姓名和单位。
  5. 显 示 出ZGJK 库中职称为教授或副教授,并且在1945年(含该年)以后出生的所有职
    工记录。
  6. 向 Z GJK库中第五条记录之后插人一条新记录。
  7. 在 ZG JK库上打开独立型复合索引文件FHSY,并使该文件中第一个索引标记成为主
    控索引。
    l. select二;
    fro m图书;
    wher。作者=”李“
  8. select distinct分类号,书名,作者;
    fro m图书;
    order by分类号
  9. select
    from图书;
    where书名like“%数据库%“
  10. select distinct x.借书证号,姓名,单位;
    from借阅x,读者Y+
    where x.借书证号=Y.借书证号
  11. use zgjk
    list for教授$职称.anD、出生日期>= {1945/01/01}
  12. use zgjk
    go 5
    insert
  13. use zgjk
    set index to fhsy. cdx order 1 of fhsy
    6#
    在名称为商品库的数据库中包含有商品表1和商品表2,它们的定义分别为:
    商品 表 1 (鱼鱼些呈char(8),分类名char(8),单价float,数量int)
    商品 表 2 <鱼鱼些呈char(8),产地char(6),品牌char<6))
    在名称为教学库的数据库中包含有学生、课程和选课三个表,它们的定义分别为:
    学生 ( 堂生 呈char(7),姓名char(6) , 性别char(2),出生日期datetime,
    专业 char (10 ), 年 级int)
    课程 ( 遇矍 呈char(4),课程名char(10),课程学分int)
    选课 ( 堂生 呈char(7),途鱼呈char(4),成绩int)
  14. 从 教 学库中查询出每个学生选课的门数。
  15. 从 教 学库中查询出所有已被学生选修的课程。
  16. 从 教 学库中查询出每个专业每种性别的学生人数,并按专业排序。
    4.从商品库中查询出单价大于等于元、或者数量大于等于15的所有商品。
    5.从教学库中查询出至少有两名学生所选修的全部课程。

select * from 课 程
where 课 程 号 in (select课程号
from 选 课
group by课 程 号 having count(,)>=2
)
1725

  1. s elect学生,学生号,count(二)as选课门数
    from学生,选课
    where学生.学生号”选课.学生号
    group by学生.学生号
  2. select
    from课程
    where exists<select
    from选课
    where课程.课程号今选课.课程号
    )
  3. select专业,性别,count(,)as人数
    from 学 生
    group by专业,性别
    order by专 业
  4. select
    from 商 品 表 1
    where 单 价 > = o r数量>=15
  5. selec td istinctx .
    from课程x,选课Y,选课:
    where y.课程号二z.课程号and y.学生号<}z.学生号
    and x .课 程 号 = Y. 课 程 号
    或 :
    select }
    from 课 程
    where 课 程 号 in (select课程号
    from 选 课
    group by课 程 号 havingc ount(,)>=2
    )号