练习题
一、单项选择题
1.C 2.A 3.C 4.D 5.D 6.B 7.A 8.B 9.B 10.D 11.C 12.A 13.C 14.B 15.A 16.B 17.A 18.D 19.B 20.B 21.A; D 22.A 23.C 24.D 25.B 26.B 27.B 28.D 29.B 30.B
二、填空题
1.概念;数据 2.属性 3.码
4.一对一联系;一对多(或多对一)联系;多对多联系 5.候选码 6.候选码
7.关系名(属性1,属性2,…,属性n)
8.关系数据结构;关系操作集合;关系完整性约束 9.实体;参照;用户定义的;实体;参照 10.空值
11.需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;物理结构设计阶段;数据库实施阶段;数据库运行和维护阶段
12.准确了解并分析用户对系统的要求,尤其是用户的信息要求、处理要求、安全性与完整性要求,确定所要开发的应用系统的目标,产生用户和设计者都能接受的需求说明书,做为下一步数据库概念结构设计的依据。
13.将需求分析得到的用户需求抽象为信息结构即概念模型。
14.将概念结构进一步转化为某一DBMS支持的数据模型,并对其进行优化。
15.为逻辑数据模型选取一个最适合应用环境的物理结构,包括数据库在物理设备上的存储结构和存取方法。
三、指出以下各缩写的英文意思和中文意思
1. DB:Database
2. DBMS:Database Management System 3. RDBMS:
4. DBS:Database System
1
5. DBA:Database Administrator 6. NF:Normal Form
7. DDL:Data Definition Language
四、按题目要求回答问题
1.答:
公司编号公司名 地址 公司 1 聘用 N 职工 1 隶属 工资聘期职工编号 姓名 性别 N 仓库 仓库编号 仓库名 地址 2.答:
团编号 地区 住所 类别编号 类别名称 主管 代表团 比赛类别 1 成员 比赛时间 得分 1 属于 N 运动员 N N 参加 M 比赛项目 编号 姓名 年龄 性别 2
项目编号 项目名称 级别 3.答:
(1)关系R是2NF。
因为R的候选码为课程名,而课程名→教师名,教师名→教师地址,所以课程名→教师地址,即存在非主属性教师地址对候选码课程名的传递函数依赖,因此R不是3NF。
又因为不存在非主属性对候选码的部分函数依赖,所以R是2NF。
(2)关系R存在删除异常。当删除某门课程时会删除不该删除的教师的有关信息。 (3)分解为高一级范式如下:
R1 课程名 数据库 教师名 刘辉 程序设计基础 赵兰 软件工程 计算机基础 R2 教师名 刘辉 赵兰 陈信 教师地址 Add1 Add2 Add1 陈信 刘辉 分解后,若删除课程数据时,仅对关系R1操作,教师地址信息在关系R2中仍然保留,不会丢失教师的信息。
4.答:
(1)R不属于3NF,它是2NF。
(2)因为R的候选码为职工号和职工名,而:
职工号→单位号,单位号→单位名,所以职工号→单位名,即存在非主属性“单位名”对候选码“职工号”的传递函数依赖。因此不是3NF。
规范化后的关系子模式为如下所示的关系R1与R2。
R1
职工号 01 02 03 04 R2
单位号 D3
单位名 计算机 3
职工名 赵高 高军 董林 林梅 年龄 20 25 38 25 性别 男 男 男 女 单位号 D3 D1 D3 D3 D1 土木工程
5.答:
(1)关系Stock是1NF,分析如下:
关系Stock的码为(counter,goods),counter、goods为主属性,price为非主
属性。 存在的函数依赖有:(counter,goods)→price goods→price 因此可以看出,非主属性price不完全函数依赖于码,不符合2NF的定义。 得出结论:关系Stock是1NF (2)存在异常:
删除异常:例如,如果删除柜台2的元组,则丢失了货物名称Envelop及其价格1。 插入异常:例如,如果知道了商品Lamp的价格20,则不能马上将该商品插入到
Stock中,直到有一个柜台进了该货物才行。 (3)规范化:将以上关系分解为两个关系如下。
关系Counter-Goods 关系Goods-Price Counter Goods 1 1 2 3 3 Pen Ink Envelop Bag pen Goods Pen Ink Envelop Bag Price 55 4 1 40
第2章 SQL Server简介
练习题
一、单项选择题
1.B 2.C 3.D 4.B 5.C 6.D 7.C 8.C 9.B 10.A 11.B 12.B
二、简答题
1.答:
客户-服务器结构把整个任务划分为客户机上的任务和服务器上的任务。客户机上的
4
任务只要有:
建立和断开与服务器的连接。 提交数据访问请求。
等待服务通告、接受请求结果或错误。
处理数据库访问结果或错误、包括重发请求和终止请求。 提供应用程序的友好用户界面。 数据输入输出及验证。 服务器上的任务主要有:
为多用户管理一个独立的数据库。
管理和处理接收到的数据访问请求,包括管理请求队列、管理缓存、响应服务、
管理结果和通知服务完成。
管理用户帐号、控制数据库访问权限和其他安全性。 维护数据库,包括数据库备份和恢复。
保证数据库数据的完整或为客户提供完整性控制手段。
2.答:
(1)两层结构
在两层结构中,SQL Server 2000安装在一个中心服务器上,数据库存储在该服务器上,该服务器称为数据库服务器,可以被多台客户机访问。众多的客户机通过网络直接访问数据库服务器。客户机运行处理业务的程序和显示处理结果的程序。两层结构比较适合于用户量较少的情况,当用户量较大时,数据库服务器的性能会显著下降。
(2)三层结构
在三层结构中引入了一层应用服务器。客户机只运行向应用服务器发送请求和显示请求结果的程序,客户机没有处理业务的程序,应用服务器运行处理业务的程序,多个客户机可以同时访问应用服务器,应用服务器负责访问数据库服务器,并取回处理结果,将结果返回给客户机。三层结构适用于客户量较大的情况。
3.答:
SQL Server 2000的四个系统数据库是master、model、msdb和tempdb数据库。 (1)master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息,包括所有的登录帐户信息、系统配置信息、SQL Server的初始化信息和其它系统及用户数据库的相关信息。
(2)model数据库是所有用户数据库和tempdb数据库的模板数据库,它含有master数据库所有系统表的子集,这些系统表是每个用户定义数据库所需要的。
(3)msdb数据库是代理服务数据库,用于为调度警报、作业和记录操作员的信息提供存储空间。
(4)tempdb数据库用于为所有的临时表、临时存储过程提供存储空间,它还用于任何其它的临时存储要求,例如存储SQL Server生成的工作表。tempdb数据库是全局资源,所有连接到系统的用户的临时表和存储过程都存储在该数据库中。tempdb数据库在SQL Server每次启动时都重新创建,因此该数据库在系统启动时总是干净的,临时表和存储过程在连接断开时自动除去。
5
4.答:
SQL Server 2000包含的对象如:表、视图、存储过程、索引、触发器。
(1)表:在数据库中,所有的数据存放在表中,表由行(记录)和列(字段)组成,一个数据库可以包含多个表。
(2)视图:视图是由查询数据表产生的结果,是一种虚构的表。视图把表中的部分数据映射出来供用户使用,这样可以防止所有的用户直接对表进行操作而导致系统的性能和安全性的下降。
(3)存储过程:一个存储过程实际上是由一组SQL语句组成的完成特定功能的程序。存储过程在服务器端被编译后可以反复执行。
(4)索引:索引是对表中的一个或多个列的值进行排序的结构。可以利用索引提高对数据库表中的特定信息的访问速度。
(5)触发器:触发器由一组SQL语句组成,当对表或视图进行某种操作(添加、删除或修改)时,这组命令会在一定情况下自动执行。
三、上机练习题(略)
第3章 服务器与客户端配置
练习题 一、填空题
1.服务器组,服务器组
2.使用Windows身份验证,使用SQL Server身份验证 3.start 4.连接 5.通讯
6.命名管道,TCP/IP 7.Net-Library 8.DSN
二、选择题
1.C 2.C 3.A 4.B 5.C
三、判断题
1.A 2.B 3.B 4.A 5.A
四、问答题
1.答:
使用net start命令启动Windows的服务;使用net pause命令暂停Windows服务;
6
使用net continue命令继续被暂停的Windows服务;使用net stop命令停止Windows服务。
2.答:
在企业管理器中右键单击指定的服务器,在弹出菜单中选择“属性”,打开“SQL Server属性(配置)”对话框。
在“常规”选项卡中,选中“自动启动SQL Server”复选框,就可以实现在每次计算机启动时自动运行SQL Server。
3.答:
要在客户端访问远程的SQL Server服务器,必须在客户计算机和服务器计算机上安装一对匹配的SQL Server Net-Library以支持特定的网络协议。Net-Library是一种SQL Server通讯组件,它将SQL Server 客户端软件和数据库引擎与网络 API 隔离。SQL Server 客户端软件和数据库引擎向 Net-Library 发送常规网络请求,Net-Library 将请求转换为用户所选协议的特定网络命令。
Net-Library支持多种网络协议,包括命名管道、TCP/IP、多协议、NWLink IPX/SPX、AppleTalk、Banyan Vines和VIA等。在安装SQL Server时,命名管道和TCP/IP被默认启用。
4.答:
SQL Server 2000客户端配置完成后,在企业管理器中测试配置是否有效。方法很简单,只要新建一个SQL Server 注册,在注册的过程中,选择远端的服务器作为数据库服务器。如果能够注册成功,则说明客户端和服务器之间的通信是畅通的,客户端配置成功。此时在企业管理器中,可以查看和管理远端服务器。
五、上机练习题(略)
第4章 Transact-SQL语言基础
练习题 一、选择题
1.B;C 2.C;D;F;G;H 3.B 4.A;D 5.D
6.A 7.B;D 8.D 9.B 10.A;B;C
二、填空题
1.a.b.d.c
2.常规;分隔;双引号;方括号
3.在其中定义局部变量的批处理、存储过程或语句块的内部;任何程序; 4.@ ; @@
5.DECLARE @Myvar CHAR(5) ;SET @Myvar='Hello' 6.NULL
7
7.%e% aaa ;%e%aaa 8.FALSE;TRUE
9.math>0 AND math<100
10.行集函数;聚合函数;标量函数
11.SELECT STR(YEAR('11/25/2006'),4)+'年'+STR(MONTH('11/25/2006'),2)+'月'+STR(DAY('11/25/2006'),2)+'日'
12.CAST(GETDATE() AS char) 13.CONVERT(char,GETDATE(),105)
14.CONVERT函数的参数比CAST函数的参数多了一个“样式”,该参数用于指定以不同的格式显示日期和时间。
15.--(双连字符);/* ... */(正斜杠-星号对)
三、指出以下各缩写的英文意思和中文意思
1. Structured Query Language 结构化查询语言 2. Data Definition Language 数据定义语言 3. Data Manipulation Language 数据操纵语言 4. Data Control Language 数据控制语言
四、上机练习题
1.答:
(1)titles表:
表4-17 titles表
字段名称 字段类型 中文含义 (续表4-17) 字段名称 字段类型 中文含义 advance money(8) 预付款 royalty int(4) 版税 ytd_sales int(4) 当年销量 notes varchar(200) 评论 pubdate datetime(8) 出版日期 title_id tid(6) 图书标识 title varchar(80) 书名 type char(12) 图书分类 pub_id char(4) 出版社标识 price money(8) 价格 (2)authors表:
表4-18 authors表
字段名称 字段类型 中文含义 (续表4-18)
8
au_id id(11) 作者标识 au_lname varchar(40) 作者姓 au_fname varchar(20) 作者名 phone char(12) 电话 address varchar(40) 地址 字段名称 字段类型 中文含义 city varchar(20) 城市 state char(2) 州 zip char(5) 邮政编码 contract bit(1) 签约情况 (3)titleauthor表:
表4-19 titleauthor表
字段名称 字段类型 中文含义 au_id title_id tid(6) 图书标识 au_ord tinyint(1) 作者序号 royaltyper int(4) 作者对版税的分担情况 id(11) 作者标识 (4)publishers表:
表4-20 publishers表
字段名称 字段类型 中文含义 pub_id char(4) 出版社标识 pub_name varchar(40) 出版社名称 city varchar(20) 出版社所在城市 state char(2) 州 country varchar(30) 国家 (5)pub_info表:
表4-21 pub_info表
字段名称 字段类型 中文含义 pub_id char(4) 出版社标识 logo image(16) 出版社徽标 pr_info text(16) 出版社简介 (6)discounts表:
表4-22 discounts表
字段名称 字段类型 中文含义 discounttype varchar(40) 折扣类型 stor_id char(4) 书店标识 lowqty smallint(2) 最底数量 highqty smallint(2) 最高数量 discount decimal 5(4,2) 折扣 (7)sales表:
表4-23 sales表
字段名称 字段类型 中文含义 stor_id char(4) 书店标识 ord_num ord_date qty payterms title_id tid(6) 图书标识 varchar(20) datetime(8) smallint(2) varchar(12) 定单号 订购日期 数量 付款期限 (8)stores表:
表4-24 stores表
字段名称 stor_id stor_name stor_address 9 city state zip 字段类型 中文含义 char(4) 书店标识 varchar(40) 书店名称 varchar(40) 书店地址 varchar(20) 书店所在城市 char(2) 州 char(5) 邮政编码 (9)employee表:
表4-25 employee表
字段名称 字段类型 中文含义 (续表4-25)
字段名称 字段类型 中文含义 job_id smallint(2) 工作标识 job_lvl tinyint(1) 工作级别 pub_id char(4) 雇员所在出版社标识 hire_date datetime(8) 雇用日期 emp_id empid(9) 雇员标识 fname varchar(20) minit char(1) 雇 员 姓 名 lname varchar(30) (10)jobs表:
表4-26 jobs表
字段名称 字段类型 中文含义 job_id smallint(2) 工作标识 job_desc varchar(50) 工作名称 min_lvl tinyint(1) max_lvl tinyint(1) 工作级别范围 (11)roysched表:
表4-27 roysched表
字段名称 字段类型 中文含义 title_id tid(6) 书名标识 lorange int(4) 销量范围 hirange int(4) royalty int(4) 版税 以上各表包含的用户自定义数据类型有:empid;id;tid 2.答: 实现语句为:
use pubs
declare @A binary,@B binary set @A=100 set @B=200 print @A print @B
打印结果为:
0X64 0XC8
3.答:
10
DECLARE @i int,@sum int SET @i=1 SET @sum=0 WHILE @i<=1000 BEGIN
SET @sum=@sum+@i SET @i=@i+2 END
PRINT '1+3+5+7+……+999的值为:'+str(@sum)
第5章 数据库管理
练习题 一、选择题
1.B;A;C;B 2.B;A;C 3.A;C 4.C 5.B 6.D 7.A 8.A
二、填空题
1. 主数据库;次数据库;事务日志 2. 主数据库;次数据库;事务日志 3. 逻辑文件名;物理文件名 4. 未指定组的其他 5. 创建数据库的用户
6. 物理设备名称;逻辑设备名称 7. sp_addumpdevice;sp_dropdevice 8. 差异
9. WITH NORECOVERY;WITH RECOVERY 10. REPLACE
三、简答题
1.答:
事务日志文件用于存储数据库的更新情况等事务日志信息。例如,使用INSERT、UPDATE、DELETE等对数据库进行更改的操作都会记录在事务日志文件中,当数据库损坏时,可以使用事务日志文件恢复数据库。
2.答:
“文件自动增长”表示用户可以指定数据文件自动按下列选项所指定的大小增长。 按兆字节:指定数据文件增长所基于的兆字节数。
按百分比:指定希望数据文件自动增长所基于的百分比。 文件增长不受限制:指定数据文件增长不受限制。
11
将文件增长限制为(MB):指定数据文件可以增长到的大小(MB)。
“自动收缩”表示允许定期对数据库进行检查,当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25%。当文件大小没有超过其建立时的初始大小时,不会缩减文件,缩减后的文件也必须大于或等于其初始大小。
3.答:
“文件关闭”选项代表当数据库中无用户时,自动关闭该数据库,并将所占用的资源交还给操作系统。
4.答:
(1)完全数据库备份
完全数据库备份是备份数据库的所有表的数据及模式,以及对应的文件结构,包括对事务日志中的事务进行备份。它可以用作系统出现故障时恢复数据库的基础,也可用于在另外一台计算机上生成数据库的副本。
(2)差异数据库备份
差异数据库备份只记录自上次完全数据库备份后发生变化的数据。差异备份的数据量比完全备份的数据量小而且备份速度快,因此可以更经常地备份。
(3)事务日志备份
事务日志包含了自上次进行完全数据库备份、差异数据库备份或事务日志备份以来所完成的事务。可以使用事务日志备份将数据库恢复到特定的即时点或恢复到故障点。
(4)数据库文件和文件组备份
只备份特定的文件或文件组,常用于超大型数据库的备份。
四、上机练习题
1.答:
CREATE DATABASE mydb1 --数据库名称 ON PRIMARY
(NAME =f1, --主数据文件逻辑名称 FILENAME ='D:\\sql_data\\f1.mdf',
SIZE =2, --初始大小为2MB MAXSIZE =unlimited, --最大尺寸为无限大 FILEGROWTH =5%), --增长速度为5% (NAME=f2, --次数据文件逻辑名称 FILENAME='D:\\sql_data\\f2.ndf',
SIZE=3, -- 初始大小为3MB MAXSIZE=200, --最大尺寸200MB FILEGROWTH=2) -- 增长速度为2MB LOG ON
(NAME=lg1, --事务日志逻辑名文件 FILENAME='D:\\sql_log\\lg1.ldf', SIZE=1,
12
MAXSIZE=10, FILEGROWTH=1)
3.答: (1)
ALTER DATABASE mydb1 ADD FILE (NAME=f3,
FILENAME='D:\\sql_data\\ f3.ndf', SIZE=2, MAXSIZE=5, FILEGROWTH=1)
(2)
ALTER DATABASE mydb1 MODIFY FILE (NAME = f3,
SIZE = 3MB,MAXSIZE=10MB)
(3)
ALTER DATABASE mydb1 MODIFY NAME = mydb2
4.答:
exec sp_addumpdevice 'disk', 'mycopy2','d:\\mybackup2\\mydb2.bak'
5.答: (3)
BACKUP DATABASE mydb1 TO mycopy1
(4)
RESTORE DATABASE mydb3 FROM mycopy1 WITH MOVE 'f1'
TO 'd:\\sql_data\\mydb3-f1.mdf', MOVE 'f2'
TO 'd:\\sql_data\\mydb3-f2.mdf', MOVE 'f3'
TO 'd:\\sql_data\\mydb3-f3.mdf', MOVE 'lg1'
TO 'd:\\sql_log\\mydb3-lg1.lgf'
6.答:
DROP DATABASE mydb2,mydb3
第6章 表的管理
13
练习题
一、填空题
1.行;列
2.永久表;临时表;永久;永久;临时 3.CREATE TABLE
4.主键约束;惟一性约束;检查约束;默认约束;外部键约束 5.外部键 6.sp_bindrule
7.TRUNCATE TABLE
8.关系图窗格;网格窗格;SQL窗格;结果窗格 9.聚合函数 10.GROUP BY 11.COMPUTE
12.内连接;外连接;交叉连接 13.UNION 14.INTO
二、选择题
1.D 2.B;C;D 3.A 4.B 5.B 6.B 7.C 8.C 9.B 10.C 11.C
三、判断题
1.A 2.B 3.B 4.B 5.A 6.B 7.B 8.B 9.A 10.B 11.A 12.A
三、简答题
1.答:
表约束(Constraint)是SQL Server提供的一种强制实现数据完整性的机制,包括主键(PRIMARY KEY)约束、惟一性(UNIQUE)约束、检查(CHECK)约束、默认(DEFAULT)定义和外部键(FOREIGN KEY)约束。
2.答:
规则(Rules)是一种SQL Server对象,它用于执行一些与CHECK约束相同的功能。CHECK约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个CHECK约束。CHECK 约束作为CREATE TABLE语句的一部分进行指定,而规则以单独的对象创建,然后绑定到列上。
14
3.答
通常可以将连接查询分为内连接、外连接和交叉连接等。
内连接使用比较运算符(最常使用的是等号,即等值连接)根据每个表共有列的值匹配两个表中的行。只有每个表中都存在相匹配列值的记录才出现在结果集中。在内连接中,所有表是平等的,没有主次之分。
与内连接不同,参与外连接的表有主次之分。以主表的每一行数据去匹配从表中的数据列,符合连接条件的数据将直接返回到结果集中,对那些不符合连接条件的列,将被填上NULL值后再返回到结果集中。
在交叉连接查询中,两个表中的每两行都可能互相组合成为结果集中的一行。交叉连接并不常用,除非需要穷举两个表的所有可能的记录组合。
4.左向外连接以连接(JOIN)子句左侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在右表中没有匹配的数据,则结果集中右表的列值为NULL。可以使用*=符号定义左连接。在SQL Server 2000中,还可以使用LEFT OUTER JOIN或LEFT JOIN关键字定义左向外连接。
右向外连接以连接(JOIN)子句右侧的表为主表,主表中所有记录都将出现在结果集中。如果主表中的记录在左表中没有匹配的数据,则结果集中左表的列值为NULL。可以使用=*符号定义右连接。在SQL Server 2000中,还可以使用RIGHT OUTER JOIN或RIGHT JOIN关键字定义右向外连接。
完整外部连接包括连接表中的所有行,无论它们是否匹配。在SQL Server 2000中,还可以使用FULL OUTER JOIN或FULL JOIN关键字定义完整外部连接。
5.答
数据库的索引和书籍中的目录非常相似。有了索引,就可以快速地在书中找到需要的内容,而无需顺序浏览全书了。书中的目录是主要章节的列表,其中注明了包含各章节的页码。而数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的记录所在的存储位置。可以为表中的单个列建立索引,也可以为一组列建立索引。
索引提供指针以指向存储在表中指定列的数据值,然后根据指定的排序次序排列这些指针。数据库使用索引的方式与使用书的目录很相似:通过搜索索引找到特定的值,然后跟随指针到达包含该值的行。因为索引是有序排列的,所以会大大提高索引的效率。
用户可以利用索引快速访问数据库表中的特定信息。索引是对数据库表中一个或多个列的值进行排序的结构。
6.答
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
五、上机练习题
(一)表的定义及约束
2.答:
15
(1)
CREATE TABLE 职工基本信息 (职工编号 CHAR(5) PRIMARY KEY, 姓名 CHAR(10) NOT NULL, 性别 CHAR(2), 出生日期 DATETIME, 部门编号 CHAR(3))
(2)
CREATE TABLE 工资
(职工编号 CHAR(5) PRIMARY KEY, 基本工资 MONEY, 奖金 MONEY, 实发工资 MONEY)
(3)
CREATE TABLE 部门信息
(部门编号 CHAR(3) PRIMARY KEY, 部门名称 CHAR(20) NOT NULL, 部门简介 VARCHAR(50))
3.答:
ALTER TABLE 职工基本信息ADD 职称 CHAR(10)
4.答:
ALTER TABLE 职工基本信息 DROP COLUMN 职称
5.答:
ALTER TABLE 部门信息 ADD CONSTRAINT uk_dptname UNIQUE(部门名称)
6.答:
ALTER TABLE 职工基本信息 ADD CONSTRAINT chk_sex CHECK (性别 in ('男','女'))
7.答:
ALTER TABLE 工资 ADD CONSTRAINT chk_salary CHECK (基本工资>0)
8.答:
ALTER TABLE 工资 ADD CONSTRAINT dftsalary1 DEFAULT 0 FOR 基本工资 ALTER TABLE 工资 ADD CONSTRAINT dftsalary2 DEFAULT 0 FOR 奖金
9.答:
ALTER TABLE 职工基本信息 ADD CONSTRAINT dftsex DEFAULT '男' FOR 性别
10.答:
ALTER TABLE 职工基本信息 ADD CONSTRAINT fk_1 FOREIGN KEY (部门编号) REFERENCES 部门信息(部门编号) ALTER TABLE 工资 ADD CONSTRAINT fk_2 FOREIGN KEY (职工编号) REFERENCES 职工基本信息(职工编号)
11.答:
16
ALTER TABLE 职工基本信息 DROP CONSTRAINT fk_1 ALTER TABLE 工资 DROP CONSTRAINT fk_2
12.答:
CREATE RULE bonus_rule AS @range<=1000 GO
EXEC sp_bindrule 'bonus_rule' , '工资.奖金'
13.答:
EXEC sp_unbindrule '工资.奖金' DROP RULE bonus_rule
(二)表的更新
1.答:
INSERT INTO 职工基本信息 VALUES ('10001','王佳','女','1979/02/01','001') INSERT INTO 职工基本信息 VALUES ('20001','张欣','男','1965/05/10','002') INSERT INTO 职工基本信息 VALUES ('20003','李勇','男','1976/08/01','002') INSERT INTO 职工基本信息 VALUES ('10002','刘军','男','1973/07/01','001')
2.答:
INSERT INTO 工资(职工编号,基本工资,奖金) VALUES ('10001',2000,2200) INSERT INTO 工资(职工编号,基本工资,奖金) VALUES ('10002',2500,3000)
3.答:
INSERT INTO 工资(职工编号,基本工资,奖金) SELECT 职工编号,基本工资,奖金 FROM 临时工资信息
4.答:
CREATE TABLE 部门平均年龄 (部门编号 CHAR(15), 平均年龄 SMALLINT)
5.答:
INSERT INTO 部门平均年龄
SELECT 部门名称,AVG(year(getdate())-YEAR(出生日期)) FROM 职工基本信息 GROUP BY 部门编号
6.答:
UPDATE 工资 SET 奖金=奖金*1.1 FROM 职工基本信息
WHERE 职工基本信息.职工编号=工资.职工编号 AND 职工基本信息.部门编号='001'
7.答:
UPDATE 工资 SET 实发工资=基本工资+奖金
8.答:
DELETE FROM 工资 WHERE 职工编号='10001'
17
9.答:
DELETE 工资 FROM 职工基本信息
WHERE 职工基本信息.职工编号=工资.职工编号 AND 职工基本信息.部门名称='001'
(三)表的查询
1.答:
SELECT * FROM authors
2.答:
SELECT title,price,pubdate FROM titles
3.答:
SELECT title_id,title,price*0.8 as NewPrice FROM titles
4.答:
SELECT DISTINCT type FROM titles
5.答:
SELECT au_lname,au_fname,phone FROM authors WHERE state='CA'
6.答:
SELECT title FROM titles WHERE type='business' AND price<10
7.答:
SELECT * FROM titles WHERE price BETWEEN 10 AND 20
8.答:
SELECT * FROM titles WHERE price NOT BETWEEN 10 AND 20
9.答:
SELECT * FROM authors WHERE city IN('Oakland','Covelo','Palo Alto')
10.答:
SELECT * FROM authors WHERE au_fname LIKE('____') ORDER BY au_lname
11.答:
SELECT * FROM authors WHERE au_lname LIKE 'S%' AND au_fname LIKE '%e%'
12.答:
SELECT * FROM authors WHERE au_lname LIKE '[A-K]%'
13.答:
SELECT MAX(price),MIN(price),SUM(price),AVG(price) FROM titles
14.答:
SELECT COUNT(DISTINCT(type)) FROM titles
15.答:
SELECT COUNT(*) FROM authors WHERE state='CA'
16.答:
SELECT state AS 州名,COUNT(au_id) AS 人数 FROM authors GROUP BY state
17.答:
SELECT type AS 图书分类, AVG(price) AS 平均价格 FROM titles GROUP BY type
18
18. 答:
SELECT title AS 书名,type AS 类型,price AS 单价 FROM titles ORDER BY type COMPUTE AVG(price) BY type
19.答:
SELECT au_lname,au_fname,title_id FROM authors,titleauthor
WHERE authors.au_id=titleauthor.au_id
20.答:
SELECT au_lname,au_fname,title_id FROM authors INNER JOIN titleauthor ON authors.au_id=titleauthor.au_id
21.答:
SELECT au_lname,au_fname,title_id FROM authors, titleauthor
WHERE authors.au_id *= titleauthor.au_id
或:
SELECT au_lname,au_fname,title_id
FROM authors left join titleauthor ON authors.au_id = titleauthor.au_id
22.答:
SELECT au_lname,au_fname,title FROM authors,titles,titleauthor WHERE authors.au_id=titleauthor.au_id AND titleauthor.title_id=titles.title_id
23.答:
SELECT au_lname,au_fname,title
FROM authors inner join titleauthor ON authors.au_id=titleauthor.au_id INNER JOIN titles ON titleauthor.title_id=titles.title_id
24.答:
SELECT au_lname,au_fname,title,price,pub_name
FROM authors INNER JOIN titleauthor ON authors.au_id=titleauthor.au_id INNER JOIN titles ON titleauthor.title_id=titles.title_id INNER JOIN publishers ON titles.pub_id=publishers.pub_id
25.答:
SELECT pub_name,titles.* FROM titles,publishers
WHERE titles.pub_id=publishers.pub_id AND state='CA'
26.答:
SELECT au_lname,au_fname,title,pub_name,authors.city
FROM authors INNER JOIN titleauthor ON authors.au_id=titleauthor.au_id
19
INNER JOIN titles on titleauthor.title_id=titles.title_id INNER JOIN publishers on titles.pub_id=publishers.pub_id WHERE authors.city=publishers.city
27.答:
SELECT title FROM titles
WHERE price<(SELECT price FROM titles WHERE title_id='PS2091')
28.答:
SELECT au_id,au_lname,au_fname FROM authors
WHERE EXISTS ( SELECT * FROM titleauthor WHERE authors.au_id=titleauthor.au_id) ORDER by au_id DESC
29.答:
SELECT au_lname,au_fname,city FROM authors
WHERE city= (SELECT city FROM authors WHERE au_id='213-46-8915') AND au_id<>'213-46-8915'
30.答:
SELECT authors.city FROM authors UNION
SELECT publishers.city FROM publishers ORDER BY 1
(四)索引
1.答:
CREATE UNIQUE CLUSTERED INDEX name_ind
ON au(au_lname,au_fname)
2.(略) 3.答:
DROP INDEX au.name_ind
(五)视图
1.答:
CREATE VIEW view1(姓,名,书名,电话,地址) AS
SELECT authors.au_lname , authors.au_fname, titles.title , authors.phone , authors.address FROM authors, titles,titleauthor
20
WHERE authors.au_id = titleauthor.au_id
AND titleauthor.title_id = titles.title_id AND authors.state = 'CA'
2.答:
SELECT * FROM view1
3.答:
SELECT * FROM view1
WHERE 姓 LIKE 'M%' OR 名 LIKE 'M%'
4.答:
ALTER VIEW view1(姓,名,书名) AS
SELECT authors.au_lname , authors.au_fname, titles.title FROM authors, titles,titleauthor WHERE authors.au_id = titleauthor.au_id
AND titleauthor.title_id = titles.title_id
5.答:
DROP VIEW view1
第7章 存储过程和触发器管理
练习题
一、填空题
1.服务器;客户
2.系统存储过程;用户存储过程;临时存储过程;远程存储过程;扩展存储过程 3.局部临时存储过程;全局临时存储过程 4.#;##
5.输入参数;输出参数 6.RETURN
7.ALTER PROCEDURE 8.事件;命令调用
7.INSTEAD OF触发器;AFTER触发器 8.原子性;一致性;隔离性;持久性 9.显式事务;隐式事务
10.ROLLBACK TRANSACTION
二、选择题
1.B 2.B 3.D 4.C 5.B
21
6.B 7.C
三、判断题
1.A 2.B 3.A 4.A 5.B
四、问答题
1.答
使用SQL Server中的存储过程而不使用存储在客户计算机本地的Transact-SQL程序的优势有:
(1)允许模块化程序设计
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
(2)允许更快执行
如果某操作需要大量Transact-SQL代码或需重复执行,存储过程将比Transact-SQL批代码的执行要快。将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。每次运行Transact-SQL语句时,都要从客户端重复发送,并且在SQL Server每次执行这些语句时,都要对其进行编译和优化。
(3)减少网络流量 例如,一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
(4)可作为安全机制使用
例如,即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
2.答
触发器是一种特殊类型的存储过程,它在指定表中的数据发生变化时自动执行。触发器与普通存储过程的不同之处在于:触发器的执行是由事件触发的,而普通存储过程是由命令调用执行的。
3.答
触发器的主要优点如下:
触发器是自动执行的,不需要管理员手动维护数据库的数据完整性。
触发器可以对数据库中的相关表进行级联更改。例如,可以在表“院系”中定义
触发器,当用户删除表“院系”中的记录时,触发器将删除表“学生”中对应院系的记录。
触发器可以限制向表中插入无效的数据,这一点与CHECK约束的功能相似。但
在CHECK约束中不能使用到其他表中的字段,而在触发器中则没有此限制。例如,可以在表“学生”中定义触发器,限制插入的记录其“院系编号”字段值必须在表“院系”中存在对应的记录。
五、上机练习题
22
(一)存储过程
1.答:
USE pubs GO
IF EXISTS (SELECT name FROM sysobjects WHERE name ='avg_price' AND type = 'P') DROP PROCEDURE avg_price GO
CREATE PROC avg_price @avgprice FLOAT OUTPUT AS
SELECT @avgprice=AVG(price) FROM titles WHERE PRICE IS NOT NULL
2.答:
DECLARE @avgprice FLOAT EXEC avg_price @avgprice OUTPUT PRINT @avgprice
3.答:
USE pubs GO
IF EXISTS (SELECT name FROM sysobjects WHERE name ='max_price' AND type = 'P') DROP PROCEDURE max_price GO
CREATE PROC max_price @type char(12), @maxprice FLOAT OUTPUT AS
SELECT @maxprice=MAX(price) FROM titles WHERE type=@type
4.答:
DECLARE @maxprice FLOAT,@type CHAR(12) EXEC max_price 'mod_cook', @maxprice OUTPUT PRINT @maxprice
5.答:
DROP PROCEDURE avg_price,max_price
(二)触发器
1.答:
(1)创建触发器语句
USE 学生信息
IF EXISTS(SELECT name FROM sysobjects WHERE name = 'TRG1' AND type = 'TR')
23
DROP TRIGGER TRG1 GO
CREATE TRIGGER TRG1 ON 专业 FOR INSERT AS
SELECT * FROM inserted
(2)测试语句
INSERT INTO 专业 VALUES('111','新专业名称','001')
(3)测试结果
在“网格”选项卡上显示:
在“消息”选项卡上显示:
(所影响的行数为 1 行)
2.答:
(1)创建触发器语句
USE 学生信息
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'TRG2' AND type = 'TR') DROP TRIGGER TRG2 GO
CREATE TRIGGER TRG2 ON 专业 FOR DELETE AS
RAISERROR ('不允许删除专业表中的记录',16,1) SELECT * FROM deleted
ROLLBACK TRANSACTION --回滚事务
(2)测试语句
DELETE FROM 专业 WHERE 专业编号='111'
(3)测试结果
在“消息”选项卡上显示:
服务器: 消息 50000,级别 16,状态 1,过程 TRG2,行 4 不允许删除专业表中的记录
(所影响的行数为 1 行)
在“网格”选项卡上显示:
24
3.答:
(1)创建触发器语句
USE 学生信息
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'TRG3' AND type = 'TR') DROP TRIGGER TRG3 GO
CREATE TRIGGER TRG3 ON 专业 FOR UPDATE AS
IF UPDATE(专业名称) BEGIN
RAISERROR('不能修改专业名称',15,1) ROLLBACK TRANSACTION END
(2)测试语句
UPDATE 专业 SET 专业名称='新专业名称B' WHERE 专业编号='111'
(3)测试结果
在“消息”选项卡上显示:
服务器: 消息 50000,级别 15,状态 1,过程 TRG3,行 6 不能修改专业名称
4.答:
(1)创建触发器语句
USE 学生信息
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'TRG4' AND type = 'TR') DROP TRIGGER TRG4 GO
CREATE TRIGGER TRG4 ON 学生基本信息 FOR UPDATE AS
IF UPDATE(学号) OR UPDATE (姓名) BEGIN
RAISERROR('注意,不允许修改学号或姓名',15,1) ROLLBACK TRANSACTION END
(2)测试语句
① UPDATE 学生基本信息 SET 学号='990020211' WHERE 学号='990020210' ② UPDATE 学生基本信息 SET 姓名='张三' WHERE 学号='990020210'
(3)测试结果
25
服务器: 消息 50000,级别 15,状态 1,过程 TRG4,行 7 注意,不允许修改学号或姓名
5.答:
(1)创建视图语句
USE 学生信息 GO
CREATE VIEW view1 AS
SELECT 学号,姓名,性别,出生日期 FROM 学生基本信息
WHERE 班级='道桥9902' AND 专业编号='002'
(2)创建触发器语句
USE 学生信息
IF EXISTS (SELECT name FROM sysobjects WHERE name = 'TRG5' AND type = 'TR') DROP TRIGGER TRG5 GO
CREATE TRIGGER TRG5 ON view1
INSTEAD OF INSERT AS DECLARE
@学号 nchar(9), @姓名 nchar(5), @性别 nchar(1), @班级 nchar(7), @出生日期 datetime, @专业编号 nchar(3)
SET @学号=(SELECT 学号 FROM INSERTED) SET @姓名=(SELECT 姓名 FROM INSERTED) SET @性别=(SELECT 性别 FROM INSERTED)
SET @出生日期=(SELECT 出生日期 FROM INSERTED) SET @班级='道桥9902' SET @专业编号='002' INSERT 学生基本信息
VALUES (@学号,@姓名,@性别,@班级,@出生日期,@专业编号)
(3)测试语句
USE 学生信息
INSERT view1 VALUES('0509','李兰','女','1981-03-14')
(4)检查结果 打开“学生基本信息”表,观察其学号为“0509”的记录内容,可以看出,虽然在INSERT
26
语句中没有指定班级和专业编号,但在该记录上已经自动添加了班级和专业编号,说明INSERT OF触发器TRG5在执行INSERT语句时被触发执行了。
6.答:
DROP TRIGGER TRG1,TRG2,TRG3,TRG4,TRG5
第8章 游标管理
练习题
一、填空题
1.Transact-SQL 游标;应用编程接口(API)服务器游标;客户端游标 2.静态游标;动态游标;只进游标;键集驱动游标 3.OPEN 4.SCROLL 5.FETCH
6.@@FETCH_STATUS 7.CLOSE
8.DEALLOCATE
二、选择题
1.A 2.C 3.C 4.D 5.D 6.B
三、判断题
1.B 2.A 3.B 4.B 5.A
四、问答题
1.答
用数据库语言来描述,游标是映射结果集并在结果集内的单个行上建立一个位置的实体。有了游标,用户就可以访问结果集中的任意一行数据了。在将游标放置到某行之后,可以在该行或从该位置开始的行块上执行操作。最常见的操作是提取(检索)当前行或行块。
游标有以下主要的功能:
允许定位在结果集的特定行。
从结果集的当前位置检索一行或多行。
支持对结果集中当前位置的行进行数据修改。
如果其他用户需要对显示在结果集中的数据库数据进行修改,游标可以提供不同
级别的可见性支持。 提供脚本、存储过程和触发器中使用的访问结果集中的数据的Transact-SQL语句。
27
2.答
SQL Server支持4种API服务器游标类型,它们是静态游标、动态游标、只进游标和键集驱动游标。
(1)静态游标:静态游标的完整结果集在游标打开时建立在tempdb数据库中,它总是按照游标打开时的原样显示结果集。静态游标打开以后,数据库中任何影响结果集的变化都不会体现在游标中。也就是说,在静态游标中不显示UPDATE、INSERT或者DELETE操作对数据的影响,除非关闭游标并重新打开。静态游标始终是只读的。
(2)动态游标:当滚动动态游标时,动态游标反映结果集中所做的所有更改。结果集中的行数据值、顺序和成员在每次提取时都会改变。所有用户做的全部UPDATE、INSERT和DELETE语句均通过游标可见。
(3)只进游标:只进游标不支持滚动,它只支持游标从头到尾顺序提取。行只在从数据库中提取出来后才能检索。对所有影响结果集中行的INSERT、UPDATE和DELETE语句,其效果在这些行从游标中提取时是可见的。但是,因为游标不能向后滚动,所以在行提取后对行所做的更改对游标是不可见的。
(4)键集驱动游标:键集驱动游标由一套被称为键集的唯一标识符(键)控制。键由以唯一方式在结果集中标识行的列构成。键集是游标打开时来自所有适合SELECT语句的行中的一系列键值。键集驱动游标的键集在游标打开时建立在tempdb中。
对非键集列中的数据值所做的更改,在用户滚动游标时是可见的。在游标外对数据库所做的插入在游标内是不可见的,除非关闭并重新打开游标。使用API函数,如ODBC SQLSetPos函数,通过游标所做的插入在游标的末尾可见。如果试图提取一个在打开游标后被删除的行,则@@FETCH_STATUS将返回一个“行缺少”状态。
3.答
首先声明一个游标,然后打开游标,从游标中读取数据,使用游标函数;游标使用完成后,关闭游标;如果不再继续使用,则删除游标。
五、上机练习题
1.答:
USE pubs
DECLARE MyCursor1 SCROLL CURSOR
FOR SELECT * FROM authors where state='CA' OPEN Mycursor1
FETCH FIRST FROM Mycursor1 FETCH LAST FROM Mycursor1
2.答: (1)
USE pubs
DECLARE MyCursor2 CURSOR STATIC FOR
28
SELECT au_lname FROM authors OPEN MyCursor2 SELECT @@CURSOR_ROWS
(2)
USE pubs
DECLARE MyCursor3 CURSOR KEYSET FOR SELECT * FROM authors OPEN MyCursor3 SELECT @@CURSOR_ROWS
(3)
USE pubs
DECLARE MyCursor4 CURSOR DYNAMIC FOR SELECT * FROM authors OPEN MyCursor4 SELECT @@CURSOR_ROWS
3.答:
USE pubs
DECLARE MyCursor5 SCROLL CURSOR
FOR SELECT title,type FROM titles WHERE type='business' OPEN MyCursor5
FETCH NEXT FROM MyCursor5 WHILE @@FETCH_STATUS = 0 FETCH NEXT FROM MyCursor5 CLOSE MyCursor5 DEALLOCATE MyCursor5
第9章 数据的导入和导出
练习题
一、填空题
1.数据转换服务
2.DTS连接;DTS 任务;DTS 转换;工作流约束
二、选择题
1.C 2.D
三、判断题
1.A 2.A 3.A
29
四、上机练习题(略)
第10章 SQL Server安全管理
练习题
一、填空题
1.SQL Server登录;数据库用户;权限;角色 2.Windows 身份验证模式;混合模式 3.Sa;BUILTIN\\Administrators 4.dbo;guest 5.dbo
6.sp_grantdbaccess 7.sp_revokedbaccess 8.Public
9.对象权限;语句权限;暗示性权限 10.sp_addrole;sp_droprole
二、选择题
1.D 2.C 3.D 4.C 5.A 6.A 7.B 8.C
三、判断题
1.B 2.A 3.A 4.A 5. B
四、问答题
1.答
SQL Server 2000的安全管理模型中包括SQL Server登录、数据库用户、权限和角色4个主要方面,具体如下:
(1)SQL Server登录:要想连接到SQL Server服务器实例,必须拥有相应的登录账户和密码。身份认证系统验证用户是否拥有有效的登录账户和密码,从而决定是否允许该用户连接到指定的SQL Server服务器实例。
(2)数据库用户:通过身份认证后,用户可以连接到SQL Server服务器实例。但是,这并不意味着该用户可以访问到指定服务器上的所有数据库。在每个SQL Server数据库中,都存在一组SQL Server用户账户。登录账户要访问指定数据库,就要将自身映射到数据库的一个用户账户上,从而获得访问数据库的权限。一个登录账户可以对应多个用户账户。
(3)权限:权限规定了用户在指定数据库中所能进行的操作。
(4)角色:类似于Windows的用户组,角色可以对用户进行分组管理。可以对角色
30
赋予数据库访问权限,此权限将应用于角色中的每一个用户。
2.答
SQL Server提供以下两种身份验证模式: Windows 身份验证模式
当用户通过Windows NT 4.0、Windows 2000或Windows 2003用户账户进行连接时,SQL Server通过回叫Windows系统以获得信息,重新验证账户名和密码。
SQL Server通过使用网络用户的安全特性控制登录访问,以实现与Windows的登录安全集成。用户的网络安全特性在网络登录时建立,并通过Windows域控制器进行验证。当网络用户尝试连接时,SQL Server使用基于Windows的功能确定经过验证的网络用户名。SQL Server于是验证此人是否是如其所说的那个人,然后只基于网络用户名允许或拒绝登录访问,而不要求单独的登录名和密码。
混合模式(Windows身份验证和SQL Server身份验证)
SQL Server可以设置SQL Server登录账户。用户登录时,SQL Server将对用户名和密码进行验证。如果SQL Server未设置登录账户或密码不正确,则身份验证将失败,而且用户将收到错误信息。
应用程序开发人员和数据库用户也许更喜欢“SQL Server身份验证”模式,因为他们可以通过对登录账户和密码的管理实现权限控制。
SQL Server 2000的登录过程如下图所示。
用户连接请求 身份验证模式? Windows身份验证模式 混合模式 否 使用SQL Server账户连接吗? 是 否 有效的NT账户吗? 是 SQL Server拒绝连接 否 是有效账户吗? 是 SQL Server接受用户连接 五、上机练习题
(一)使用企业管理器管理安全帐户
31
1~5.(略) 6.找到SQL Server默认的登录帐号sa、BUILTIN\\Administrators,观察并记录其登录类型、默认数据库及所属的服务器角色。
(1)sa:
登录类型 标准 默认数据库 master 服务器角色 System Administrators (2)BUILTIN\\Administrators: 登录类型 Windows组 默认数据库 master 服务器角色 System Administrators 7.(略)
(二)使用Transact-SQL命令管理登录帐户
1.答:
窗口标题栏的内容
查询—ky.master.KY\\Administrator—无标题1 其中:
查询—查询窗口 ky—服务器名称
master—当前数据库(默认数据库) KY\\Administrator—登录名 无标题1—查询文件名
从工具栏的数据库下拉列表中可以看到“学生信息”数据库。因为当前是以Windows系统管理员身份连接SQL Server的,因此具有所有权限。
2.答:
(1)sp_addlogin 'log1','111'
sp_addlogin 'log2','222' (2)以log1帐户的身份登录后,从工具栏的数据库下拉列表中不能看到“学生信息”数据库。因为还没有将登录帐户log1指定为“学生信息”数据库的用户。
(3)以log1帐户的身份登录后,从工具栏的数据库下拉列表中能看到SQL Server的系统数据库和示例数据库。因为在这些数据库中含有guest用户帐户。
3.答:
(1)exec sp_grantdbaccess 'log1'
exec sp_grantdbaccess 'log2' (2)以log1帐户的身份登录后,从工具栏的数据库下拉列表中可以看到“学生信息”数据库。因为已经通过sp_grantdbaccess将log1指定为“学生信息”数据库的用户。
4.答:
执行结果为:
服务器: 消息 229,级别 14,状态 5,行 1
32
拒绝了对对象 '学生基本信息'(数据库 '学生信息',所有者 'dbo')的 SELECT 权限。
因为还没有为“学生信息”数据库用户log1授予任何权限。 (三)使用Transact-SQL命令管理数据库用户的权限
1.答:
GRANT select, insert, update ON 学生基本信息 TO log1 WITH GRANT OPTION
2.答:
GRANT select ON 学生基本信息 TO log2
3.答:
DENY delete ON 学生基本信息 TO log1
4.答:
DENY update(专业编号) ON 专业 TO log1
5.答:
DENY ALL ON 系 TO log1
6.答:
GRANT create table TO log2 DENY create view TO log2
7.答:
(1)创建表测试语句:
create table Mytable (a int primary key, b char(5))
(2)创建视图测试语句:
create view Myview
as select 学号,姓名 from 学生基本信息
提示信息:
服务器: 消息 262,级别 14,状态 1,过程 Myview,行 2 在数据库 '学生信息' 中拒绝了 CREATE VIEW 权限。
8.答:
REVOKE ALL FROM LOG2
9.答:
REVOKE SELECT ON 学生基本信息 FROM log1 CASCADE
10.答:
33
REVOKE GRANT OPTION FOR ALL ON 学生基本信息 FROM log1 CASCADE REVOKE ALL ON 学生基本信息 FROM log1
11.答:
USE 学生信息
EXEC sp_addrole myrole
EXEC sp_addrolemember myrole,log1 EXEC sp_addrolemember myrole,log2 GRANT select ON 专业 TO myrole
第11章 SQL Server代理服务11.5 练习题
一、填空题
1.执行作业;监视SQL Server;激发警报 2.start
3.系统账户;本账户
4.使用Windows身份验证;使用SQL Server身份验证 5.电子邮件;寻呼机;net send
6.SQL Server事件警报;SQL Server性能条件警报
二、选择题
1.D 2.C 3.B 4.A 56.A
三、判断题
1.B 2.A 3.B 4.A
四、问答题
略
五、上机练习题(略)
34
.D
因篇幅问题不能全部显示,请点此查看更多更全内容