《数据库技术( SQLServer2000)》试题库 判断题:(10*2分) 1()安装 SQL Server2000的最低硬件要求只能保证 SQL Server2000的运行,并不能保证 在实际运行环境中,能够满足多用户频繁地,高效地访问数据库服务器。 2()安装 SQL Server2000时,系统会自动建立四个系统数据库: master, model, tempdb, msdb和一个用户数据库示例pubs 3(X)在 SQL Server2000中,所有数据库对象中的数据,都是以表的形式存放,包括索引 和视图。 4(X)对于 SQL Server2000中的每个表来说,最多能建立254个聚簇索引。 5()如果表中的数据发生变化,那从相应视图中查询出的数据也就随之改变 6(X)在 SQL Server2000中,所有的视图都是可以更新的 7(X)一个基本表中可能有不止一个时间戳字段 8()表中的每一列只能与一个默认绑定。 9(X)如果在建表时设置某一列为 primary key,那该列中可以输入重复 10(X)数据类型中, datetime类型和 smalldatetime类型没有任何区别。 l1() SQL Server数据库是关系数据库,它将所有数据存放在二维表中。 2(X) SQL Server数据库中,主键是为了实现实体的完整性,主键字段中可以出现重复值 13(X) SQL Server服务只有2种状态:启动和停止。 14() SQL Server使用文件映射数据库,所有数据和对象都存放在文件中。 15(X)一个 SQL Server数据库只能有一个主数据文件和一个日志文件。 16(X) SQL Server中一个文件可以被多个数据库共用 17(X)一个表只能有一个聚集索引和一个非聚集索引。 18(X)可以对任何字段建立唯一索引 19X)索引只能是升序的 20() SQL Server中只保存视图的定义 21()表与表之间的关联性通过主键和外键实现。 22()每个表有且仅有一个主键、主键的值必须唯一、且不能为空 23(X)不可能在同一台计算机上安装多个 SQL Server实例。 24()在 SQL Server中可导入其它类型的数据库 25(Ⅹ)要想将一个 SQL Server数据库移植到另一台装有企业管理器的计算机上进行管理 只须直接将数据库文件拷贝过去即可 26(X)数据库、表、视图、索引、存储过程、触发器等都是数据库对象 27()数据库可以以2个或多个文件的形式存储在磁盘中 8()页和扩展盘区(有时译为“范围”)是 SQL Server2000对数据库对象进行空间分配 的数据结构 29(X)若一个文件的扩展名是mdf,则可判断其为主文件,反之亦然 30()使用 UPDATE语句既可以一次修改一行数据也可以一次修改多行数据。 31() HAVING只能与 GROUP一同使用,表示只返回满足条件的分组 32()coun(字段)和 count(*)是有区别的 33(X)在主键上只能建立聚簇索引 34()向表中插入字符串时,如果实际长度大于字段的定义长度,则系统将报告错误信息
《数据库技术(SQL Server 2000)》试题库 一、 判断题: (10*2 分) 1 ( ) 安装SQL Server 2000 的最低硬件要求只能保证SQL Server 2000的运行, 并不能保证 在实际运行环境中, 能够满足多用户频繁地, 高效地访问数据库服务器。 2 ( ) 安装 SQL Server 2000 时, 系统会自动建立四个系统数据库: master, model, tempdb, msdb 和一个用户数据库示例 pubs。 3 ( X ) 在 SQL Server 2000 中, 所有数据库对象中的数据, 都是以表的形式存放, 包括索引 和视图。 4 ( X ) 对于 SQL Server 2000 中的每个表来说, 最多能建立 254 个聚簇索引。 5 ( ) 如果表中的数据发生变化, 那从相应视图中查询出的数据也就随之改变。 6 ( X ) 在 SQL Server 2000 中, 所有的视图都是可以更新的。 7 ( X) 一个基本表中可能有不止一个时间戳字段。 8 ( ) 表中的每一列只能与一个默认绑定。 9 ( X ) 如果在建表时设置某一列为 primary key, 那该列中可以输入重复。 10(X ) 数据类型中, datetime 类型和 smalldatetime 类型没有任何区别。 11( ) SQL Server 数据库是关系数据库,它将所有数据存放在二维表中。 12(X ) SQL Server 数据库中,主键是为了实现实体的完整性,主键字段中可以出现重复值。 13(X ) SQL Server 服务只有 2 种状态:启动和停止。 14( ) SQL Server 使用文件映射数据库,所有数据和对象都存放在文件中。 15(X )一个 SQL Server 数据库只能有一个主数据文件和一个日志文件。 16(X ) SQL Server 中一个文件可以被多个数据库共用。 17(X )一个表只能有一个聚集索引和一个非聚集索引。 18(X )可以对任何字段建立唯一索引。 19(X )索引只能是升序的。 20( ) SQL Server 中只保存视图的定义。 21()表与表之间的关联性通过主键和外键实现。 22()每个表有且仅有一个主键、主键的值必须唯一、且不能为空。 23(X)不可能在同一台计算机上安装多个 SQL Server 实例。 24()在 SQL Server 中可导入其它类型的数据库。 25(X)要想将一个 SQL Server 数据库移植到另一台装有企业管理器的计算机上进行管理, 只须直接将数据库文件拷贝过去即可。 26(X)数据库、表、视图、索引、存储过程、触发器等都是数据库对象。 27()数据库可以以 2 个或多个文件的形式存储在磁盘中。 28()页和扩展盘区(有时译为“范围”)是 SQL Server 2000 对数据库对象进行空间分配 的数据结构。 29(X)若一个文件的扩展名是 mdf,则可判断其为主文件,反之亦然。 30()使用 UPDATE 语句既可以一次修改一行数据也可以一次修改多行数据。 31()HAVING 只能与 GROUP 一同使用,表示只返回满足条件的分组。 32()count(字段)和 count(*)是有区别的。 33(X)在主键上只能建立聚簇索引。 34()向表中插入字符串时,如果实际长度大于字段的定义长度,则系统将报告错误信息
且不向表中插入该记录。 35(X) SQL Server支持用户定义的数据类型,它是一种新的数据类型 36()位运算符的两个操作数不能同时是二进制字符串数据类型分类中的某种数据类型 37(X)当一个表被删除时,该表的所有触发器不会同时被删除。 38()一个表可以有多个 insert触发器,但只有最后创建的触发器才会发生作用。 39()一个触发器只能用于一个表 40(X)因存储过程可通过 return返回状态值,故可作为表达式使用 41(X)与创建视图类似,创建触发器时,其AS后只可接一条SQL语句 二.根据要求用TSQL语句编程(70分) 1、建立一个数据库“学生信息”数据库,主数据文件逻辑名为 student,保存在d: sl mdf 中,初始大小为2MB,文件增长率为15%:次数据文件逻辑名为 student2,保存在 d:is2ndf中,且属于文件组Gl;日志文件逻辑名为 studentlog,保存在d: \slog. Idf中。 2、现有如下4张表,属于“学生信息”数据库。请写出创建“学生表”的语句,要求学号 为主键,姓名非空,其余信息根据实际情况决定。 学生表 学号姓名出生日期年龄地区号系号入学成绩 2003001葛文卿1981-6-10 455 2003002郑秀莉1982-10-1 2003003刘成锴19841-29 428 2003004李涛1982-2-28 Ⅹ1 2003005沈香娜|1982-12-4 X4 2003006李涛 983-1-2 X3 2003001肖一竹1981-7-23 400 成绩表 系部表 地区表 学号课程名成绩 计算机 地区号地区名 2003001高等数学98 电子学 CI 海陵 X3 2003002数据库70 机电 高港 2003002高等数学85 C3 2003001C++语言99 兴化 2003004数据结构82 C5 C6 泰兴
且不向表中插入该记录。 35(X) SQL Server 支持用户定义的数据类型,它是一种新的数据类型。 36()位运算符的两个操作数不能同时是二进制字符串数据类型分类中的某种数据类型。 37(X)当一个表被删除时,该表的所有触发器不会同时被删除。 38()一个表可以有多个 insert 触发器,但只有最后创建的触发器才会发生作用。 39()一个触发器只能用于一个表。 40(X)因存储过程可通过 return 返回状态值,故可作为表达式使用。 41(X)与创建视图类似,创建触发器时,其 AS 后只可接一条 SQL 语句。 二. 根据要求用 T-SQL 语句编程(70 分) (一) 1、 建立一个数据库“学生信息”数据库,主数据文件逻辑名为 student,保存在 d:\s1.mdf 中,初始大小为 2MB,文件增长率为 15%;次数据文件逻辑名为 student2,保存在 d:\s2.ndf 中,且属于文件组 G1;日志文件逻辑名为 studentlog,保存在 d:\slog.ldf 中。 2、 现有如下 4 张表,属于“学生信息”数据库。请写出创建“学生表”的语句,要求学号 为主键,姓名非空,其余信息根据实际情况决定。 学生表 学号 姓名 出生日期 年龄 地区号 系号 入学成绩 2003001 葛文卿 1981-6-10 C1 X1 455 2003002 郑秀莉 1982-10-1 C2 X2 390 2003003 刘成锴 1984-1-29 C3 X1 428 2003004 李涛 1982-2-28 C4 X1 440 2003005 沈香娜 1982-12-4 C3 X4 395 2003006 李涛 1983-1-2 C2 X3 395 2003001 肖一竹 1981-7-23 C3 X4 400 地区表 地区号 地区名 C1 海陵 C2 高港 C3 靖江 C4 兴化 C5 姜堰 C6 泰兴 系部表 系号 系名 X1 计算机 X2 电子学 X3 医学 X4 机电 成绩表 学号 课程名 成绩 2003001 高等数学 98 2003002 数据库 70 2003002 高等数学 85 2003001 C++语言 99 2003004 数据结构 82
3、将学生表中的第一条记录插入到刚建的学生表中。 4、通过计算用 update给每个学生填好年龄。 5、给学生表增加备注字段(类型为text)。 6、查询1983年1月1日前出生且入学成绩在400分以上的学生姓名、年龄。 7、查询所有姓“刘”的学生学号、姓名。 8、要求显示课程个数 9、查询出生的学生人数在3个以上的出生年份。 10、查询每个学生的姓名、所在院系名、来源地区名。 ll、创建视图,用于保存与李涛来源于同一地区的学生姓名 12、查询与郑秀莉学同一门课的学生姓名、课程名。要求结果中不包括郑秀莉本人。 13、根据现有数据生成一个新表“部分地区学生”,要求包括海陵区所有学生的全部信息 14、将高港区的所有学生添加进“部分地区学生”中。 15、创建一个新表:高等数学成绩名次表,用于保存“高等数学”课程的各个学生成绩及名 次。要求字段为:姓名、学号、成绩、名次。 16、等待10秒钟后显示100以内能被7整除的数 17、存储过程 (二)三个表的结构和数据分别如下,存放于名叫“客户管理”的数据库中 表1:客户信息表 姓名 家庭住址 身份证号码 郑秀莉 1000200007青年路10号3221314 沈香娜 10002000古路10号322217 李涛 100003湖北路10号|322228 表2客户消费表 银行卡号 消费时间 消费金额 购买物件 1000200030005200303.10 10.00 10002000300012003.5.10 1800.35 冰箱 100020003000520030512 10002000300022003.05.18 2600.00 表3:客户帐户信息表 银行卡号 最新更改时间「剩余资金 10002000300012003.5.10 7938.00 000200030002|200305.18 120.00 10002000300052003.05.12 36.56 1、写出创建名为“客户管理”的数据库的 Transact--SQL语句 2、写出创建表1的 Transact-SQL语句 3、写出创建表2的 Transact-SQL语句 4、写出创建表3的 Transact-SQL语句 5、查询李涛的个人信息 6、查询所有客户的消费信息 7、查询’郑秀莉”的卡上还剩余多少钱 8、查询‘李涛的消费记录
3、将学生表中的第一条记录插入到刚建的学生表中。 4、通过计算用 update 给每个学生填好年龄。 5、给学生表增加备注字段(类型为 text)。 6、查询 1983 年 1 月 1 日前出生且入学成绩在 400 分以上的学生姓名、年龄。 7、查询所有姓“刘”的学生学号、姓名。 8、要求显示课程个数。 9、查询出生的学生人数在 3 个以上的出生年份。 10、查询每个学生的姓名、所在院系名、来源地区名。 11、创建视图,用于保存与李涛来源于同一地区的学生姓名。 12、查询与郑秀莉学同一门课的学生姓名、课程名。要求结果中不包括郑秀莉本人。 13、根据现有数据生成一个新表“部分地区学生”,要求包括海陵区所有学生的全部信息。 14、将高港区的所有学生添加进“部分地区学生”中。 15、创建一个新表:高等数学成绩名次表,用于保存“高等数学”课程的各个学生成绩及名 次。要求字段为:姓名、学号、成绩、名次。 16、等待 10 秒钟后显示 100 以内能被7整除的数。 17、存储过程 (二)三个表的结构和数据分别如下, 存放于名叫 “客户管理” 的数据库中. 表 1: 客户信息表 姓名 银行卡号 家庭住址 身份证号码 郑秀莉 1000200030001 青年路 10 号 322222222222131314 沈香娜 1000200030002 古川路 10 号 322222222222131587 李 涛 1000200030005 湖北路 10 号 322222222222131869 表 2: 客户消费表 银行卡号 消费时间 消费金额 购买物件 1000200030005 2003.03.10 10.00 茶杯 1000200030001 2003.5.10 1800.35 冰箱 1000200030005 2003.05.12 100.00 衣物 1000200030002 2003.05.18 2600.00 彩电 表 3: 客户帐户信息表: 银行卡号 最新更改时间 剩余资金 1000200030001 2003.5.10 7938.00 1000200030002 2003.05.18 120.00 1000200030005 2003.05.12 36.56 1、写出创建名为“客户管理”的数据库的 Transact-SQL 语句. 2、写出创建表 1 的 Transact-SQL 语句 3、写出创建表 2 的 Transact-SQL 语句 4、写出创建表 3 的 Transact-SQL 语句 5、查询’李涛’的个人信息 6、查询所有客户的消费信息 7、查询’ 郑秀莉’ 的卡上还剩余多少钱 8、查询 ‘李涛’的消费记录
9、统计‘郑秀莉”花在购物上的总共金钱数 10、统计‘李涛在五月份总共花在购物上的金钱数 ll、到目前为止消费金额最多的人的姓名 (三) 1、建立一个数据库“学生管理”数据库,主数据文件逻辑名为 student,保存在d:sl.mdf 中,初始大小为MB:次数据文件逻辑名为 student2,保存在d:ls2ndf中:日志文件 逻辑名为 studentlog,保存在d: \slog. ldf中。 2、现有如下4张表,属于“学生管理”数据库(以下各题均以此为基础)。请写出创建 “班主任表”的语句,要求编号为主键,姓名非空 班级表 班主任表 编号班级名称所属系部斑主任编号 编号 姓名 BI 01信息 K KI 高学仁 B2 01电子 KI 02机电 李四 B4 00国际贸易 K2 B5 02计算机 K 学生表 学号 姓名出生日期年龄班级号 系部表 编号|系名 2003001 葛文卿 1981-6-10 BI 子系 2003002 郑秀莉 1982-10-1 B2 机电系 外贸系 2003003 刘成锴 1984-1-29 B3 2003004 李涛 1982-228 B4 2003005 沈香娜1982-12-4 2003006 李涛 1983-1-2 B4 2003001 肖一竹 1981-7-23 BI 3、将班主任表中的第一条记录插入到刚建的表中 4、通过计算用 update给每个学生填好年龄。 5、给学生表增加图象字段(类型为 Image) 6、查询1982年10月1日后出生的学生姓名、年龄
9、统计 ‘郑秀莉’ 花在购物上的总共金钱数. 10、统计 ‘李涛’在五月份总共花在购物上的金钱数. 11、到目前为止消费金额最多的人的姓名. (三) 1、 建立一个数据库“学生管理”数据库,主数据文件逻辑名为 student,保存在 d:\s1.mdf 中,初始大小为 1MB;次数据文件逻辑名为 student2,保存在 d:\s2.ndf 中;日志文件 逻辑名为 studentlog,保存在 d:\slog.ldf 中。 2、 现有如下 4 张表,属于“学生管理”数据库(以下各题均以此为基础)。请写出创建 “班主任表”的语句,要求编号为主键,姓名非空。 学生表 学号 姓名 出生日期 年龄 班级号 2003001 葛文卿 1981-6-10 B1 2003002 郑秀莉 1982-10-1 B2 2003003 刘成锴 1984-1-29 B3 2003004 李涛 1982-2-28 B4 2003005 沈香娜 1982-12-4 B5 2003006 李涛 1983-1-2 B4 2003001 肖一竹 1981-7-23 B1 3、将班主任表中的第一条记录插入到刚建的表中。 4、通过计算用 update 给每个学生填好年龄。 5、给学生表增加图象字段(类型为 image)。 6、查询 1982 年 10 月 1 日后出生的学生姓名、年龄。 班级表 编号 班级名称 所属系部 班主任编号 B1 01 信息 X1 K1 B2 01 电子 X1 K1 B3 02 机电 X2 K3 B4 00 国际贸易 X3 K2 B5 02 计算机 X1 K1 系部表 编号 系名 X1 电子系 X2 机电系 X3 外贸系 班主任表 编号 姓名 K1 高学仁 K1 张灵灵 K3 李四
查询所有姓“肖”的学生学号、姓名 8、查询每个班级的学生人数。要求至少显示班级名称、人数。 9、查询每个学生的姓名和他的班主任姓名。 10、查询至少包含2个学生的系部名称 ll、创建视图“电子班学生”,用于保存01电子班所有学生信息 12、使用 select语句生成一个新表“国际贸易00”,表中包含该班所有学生全部信息。 13、查询与李涛在同一个班级的学生姓名 14、查询与李涛在同一个系部的学生姓名。要求结果中不显示李涛本人 15、等待10秒钟后显示100以内能被12整除的数。 16、删除学生表中姓名为“刘成锴”的记录 17、按班级号统计各班的平均年龄。 三、问答题(10分,共2小题 1、说出关系型表中主键的特点和作用。 特点:主键可以唯一地表示表中的不同记录,每个表有且仅有一个主键、主键的值必须 唯一、且不能为空。主键的作用是为了实施实体的完整性。 2、说出自然连接和等值连接的特点。 等值连接:连接条件中使用=运算符。自然连接:在等值连接中去掉重复的字段 3、说出视图的特点和作用、 with check option的作用。 视图本身并不保存数据,可节省空间,只有运行时才占用空间来暂时存放结果。它是保 存在数据库中的 SELECT查询, SELECT语句的结果集构成视图所返回的虚拟表。故又与查询 不完全相同 视图常用来将用户与基本表隔离开来以保护基本表,即将用户常用的数据以视图的形式 提供给用户,用户只能访问视图。 WITH CHECK OPTION表示在对视图进行数据操作( insert、 update)时必须满足子查询中 的条件表达式 4、说出主文件、次文件、日志文件的作用及个数要求 主文件包含数据库的起点信息(指向数据库的其余文件),并用于存储数据。每个数据库 都有一个主要数据文件。默认扩展名为mdf。次文件含有不能置于主要数据文件中的所有 数据。有些数据库可能足够大,故需要多个次要数据文件,或使用位于不同磁盘驱动器上的 次文件将数据扩展到多个磁盘。默认扩展名为ndf。日志文件包含用于恢复数据库的日志 信息。每个数据库都必须至少有一个日志文件。默认扩展名为ldf 5、聚簇索引和非聚簇索引的区别。 聚簇索引:可以保证表中记录的物理存储次序与索引表中的顺序(即逻辑顺序)相同。在 SαL数据库中,每个表只能有1个聚簇索引。随着表中数据的改变,聚簇索引会自动更新 非聚簇索引:表中记录的物理存储次序与索引表中的顺序(即逻辑顺序)一般不相同。每个 表可以有249个非聚簇索引。随着表中数据的改变,但非聚簇索引需人工更新。 6、说说数据类型char和 varchar的异同
7、查询所有姓“肖”的学生学号、姓名。 8、查询每个班级的学生人数。要求至少显示班级名称、人数。 9、查询每个学生的姓名和他的班主任姓名。 10、查询至少包含 2 个学生的系部名称。 11、创建视图“电子班学生”,用于保存 01 电子班所有学生信息。 12、使用 select 语句生成一个新表“国际贸易 00”,表中包含该班所有学生全部信息。 13、查询与李涛在同一个班级的学生姓名。 14、查询与李涛在同一个系部的学生姓名。要求结果中不显示李涛本人。 15、等待 10 秒钟后显示 100 以内能被 12 整除的数。 16、删除学生表中姓名为“刘成锴”的记录。 17、按班级号统计各班的平均年龄。 三、问答题(10 分,共 2 小题) 1、 说出关系型表中主键的特点和作用。 特点:主键可以唯一地表示表中的不同记录,每个表有且仅有一个主键、主键的值必须 唯一、且不能为空。主键的作用是为了实施实体的完整性。 2、 说出自然连接和等值连接的特点。 等值连接:连接条件中使用=运算符。自然连接:在等值连接中去掉重复的字段 3、 说出视图的特点和作用、with check option 的作用。 视图本身并不保存数据,可节省空间,只有运行时才占用空间来暂时存放结果。它是保 存在数据库中的 SELECT 查询,SELECT 语句的结果集构成视图所返回的虚拟表。故又与查询 不完全相同。 视图常用来将用户与基本表隔离开来以保护基本表,即将用户常用的数据以视图的形式 提供给用户,用户只能访问视图。 WITH CHECK OPTION 表示在对视图进行数据操作(insert、update)时必须满足子查询中 的条件表达式。 4、 说出主文件、次文件、日志文件的作用及个数要求。 主文件 包含数据库的起点信息(指向数据库的其余文件),并用于存储数据。每个数据库 都有一个主要数据文件。默认扩展名为 mdf。次文件 含有不能置于主要数据文件中的所有 数据。有些数据库可能足够大,故需要多个次要数据文件,或使用位于不同磁盘驱动器上的 次文件将数据扩展到多个磁盘。默认扩展名为 ndf。日志文件 包含用于恢复数据库的日志 信息。每个数据库都必须至少有一个日志文件。默认扩展名为 ldf。 5、 聚簇索引和非聚簇索引的区别。 聚簇索引:可以保证表中记录的物理存储次序与索引表中的顺序(即逻辑顺序)相同。在 SQL 数据库中,每个表只能有 1 个聚簇索引。随着表中数据的改变,聚簇索引会自动更新。 非聚簇索引:表中记录的物理存储次序与索引表中的顺序(即逻辑顺序)一般不相同。每个 表可以有 249 个非聚簇索引。随着表中数据的改变,但非聚簇索引需人工更新。 6、 说说数据类型 char 和 varchar 的异同
对char,若实际长度不足,则以空格填充到尾部。 varchar需要额外的存储开销,但能够删 除字段尾部的空格。 7、将SQL语句组织成事务有何优点? 事务是并发控制的基本单位。事务是一个逻辑工作单元,它必须完整地执行,或者全都 不执行,它是一个不可分割的工作单位。事务处理是保证数据库一致性状态的重要方法。 8、说出触发器的主要作用 能够实现数据的完整性和数据的一致性 增强约束:它能实现比 check约束更为复杂的约束 跟踪、监督数据库:它能检测到数据库内的所有操作。 9、使用存储过程(而不使用TSQL程序)的原因是什么? 模块化编程:可反复被调用。 快速执行:第一次执行时进行分析优化并驻留内存,以后直接执行。 减少网络通信量:只要一条调用语句就可执行存储在服务器上的存储过程 安全机制:可只能执行而不让修改。 二.根据要求用TSQL语句编程题答案 1、 create database学生信息 on(name=‘ student‘, filename=‘d: \sl. mdf‘,size=2, filegrowth=15%), filegroup gl(name=’ student2‘, filename=‘d:ls2ndf‘) filename=: slog. Idf) 2、 create table学生表(学号char(7) primary key,姓名char(8) not null,出生 日期 datetime,年龄 tinyint,地区号char(2),系号char(2),入学成绩int) 3、 insert into学生表(学号,姓名,出生日期,地区号,系号,入学成绩) values('2003001’,”葛文卿',1981-6-10’,’c1’,’x1’,455) 4、 update学生表set年龄=2003-year(出生日期) 5、 alter table学生表 add备注tex 6、 select姓名,年龄 from学生表 where出生日期400 7、 select学号,姓名from学生表 where姓名like刘% 8、 select count( distinct课程名)from成绩表 9、 select count(*)from学生表 group by year(出生日期) having count(*)>3
对 char,若实际长度不足,则以空格填充到尾部。varchar 需要额外的存储开销,但能够删 除字段尾部的空格。 7、将SQL语句组织成事务有何优点? 事务是并发控制的基本单位。事务是一个逻辑工作单元,它必须完整地执行,或者全都 不执行,它是一个不可分割的工作单位。事务处理是保证数据库一致性状态的重要方法。 8、说出触发器的主要作用。 能够实现数据的完整性和数据的一致性 增强约束:它能实现比 check 约束更为复杂的约束。 跟踪、监督数据库:它能检测到数据库内的所有操作。 9、使用存储过程(而不使用 T-SQL 程序)的原因是什么? 模块化编程:可反复被调用。 快速执行:第一次执行时进行分析优化并驻留内存,以后直接执行。 减少网络通信量:只要一条调用语句就可执行存储在服务器上的存储过程。 安全机制:可只能执行而不让修改。 二. 根据要求用 T-SQL 语句编程题答案 (一) 1、 create database 学生信息 on(name=‘student‘,filename=‘d:\s1.mdf‘,size=2,filegrowth=15%) , filegroup g1 (name=’student2‘,filename=‘d:\s2.ndf‘) log on(name=’ studentlog ‘,filename='d:\slog.ldf') 2、create table 学生表( 学号 char(7) primary key, 姓名 char(8) not null,出生 日期 datetime,年龄 tinyint,地区号 char(2),系号 char(2),入学成绩 int) 3、insert into 学生表(学号,姓名,出生日期,地区号,系号,入学成绩) values('2003001','葛文卿','1981-6-10','c1','x1',455) 4、update 学生表 set 年龄=2003-year(出生日期) 5、alter table 学生表 add 备注 text 6、select 姓名, 年龄 from 学生表 where 出生日期400 7、select 学号,姓名 from 学生表 where 姓名 like ‘刘%’ 8、select count(distinct 课程名) from 成绩表 9、select count(*) from 学生表 group by year(出生日期) having count(*)>3
10、 select姓名,系名,地区名from学生表,系部表,地区表 here学生表.系号=系部表.系号and学生表.地区号=地区表.地区号 create view 视图题as select姓名from学生表 where地区号in( select地区号from学生表 re姓名=′李涛’) lect姓名,课程名from学生表,成绩表 where学生表.学号=成绩表.学号 and课程名=( select课程名from学生表,成绩表 where学生表.学号=成绩表 学号and姓名=’郑秀莉’) and姓名!=郑秀莉〃 13、 select姓名,学号,成绩, identity(int,1,1)as名次 INTO高等数学成绩名次表from学生表,成绩表 where学生表.学号=成绩表.学号AND课程名=‘高等数学 group by成绩DESC set @x=l waitfor delay '0 while @x=100 if@x%9=0 print set x=@x+1 15、 create proc查找学生 aname char((8) if a is null print‘姓名未输入 else if exists(select*from学生表 where姓名= @name) print‘已找到 else print‘未找到
10、select 姓名,系名,地区名 from 学生表,系部表,地区表 where 学生表.系号=系部表.系号 and 学生表.地区号=地区表.地区号 11、create view 视图题 as select 姓名 from 学生表 where 地区号 in (select 地区号 from 学生表 where 姓名=’李涛’) 12、select 姓名,课程名 from 学生表,成绩表 where 学生表.学号=成绩表.学号 and 课程名= (select 课程名 from 学生表,成绩表 where 学生表.学号=成绩表. 学号 and 姓名=’ 郑秀莉’) and 姓名!=’ 郑秀莉’ 13、select 姓名,学号,成绩,identity(int,1,1) as 名次 INTO 高等数学成绩名次表 from 学生表,成绩表 where 学生表.学号=成绩表.学号 AND 课程名=‘高等数学‘ group by 成绩 DESC 14、declare @x set @x=1 waitfor delay ‘00:00:08’ while @x<=100 begin if @x%9==0 print @x set @x=@x+1 end 15、create proc 查找学生 @name char(8) as if @name is null print ‘姓名未输入’ else if exists(select * from 学生表 where 姓名=@name) print ‘已找到’ else print ‘未找到’
16、 begin tran update成绩表set成绩=成绩+5 where学号=‘2003005 if @<>0 begin print“更新成功” select*from成绩表 commit tran end else rollback tran 17、 create trigger监视姓名和年龄 on学生表 for update, insert if update(姓名) or update(年龄 print‘姓名或年龄已改动! 没改动! (三) l、 create database学生管理 on(name=‘ student‘, filename=‘d: \sl. mdf‘,size=1),(name=' student2‘, filename= log on( name= studentlog, filename='d: \slog. ldf) 2、 create table班主任表(编号char(2) primary key,姓名char(8) not nul1) 3、 insert into班主任表 values(K1',’高学仁’) 4、 update学生表set年龄=2003-year(出生日期) 5、 alter table学生表 ad图象 Image 6、 select姓名,年龄 from学生表 where出生日期>1982/10/1 7、 select学号,姓名from学生表 where姓名1ike肖%
go 16、begin tran update 成绩表 set 成绩=成绩+5 where 学号=‘2003005’ if @rowcount<>0 begin print “更新成功” select * from 成绩表 commit tran end else rollback tran 17、create trigger 监视姓名和年龄 on 学生表 for update,insert as if update(姓名) or update(年龄) print ‘姓名或年龄已改动!’ else print ‘没改动!’ (三) 1、 create database 学生管理 on(name=‘student‘,filename=‘d:\s1.mdf‘,size=1) ,(name=’student2‘,filename= ‘d:\s2.ndf‘) log on(name=’ studentlog ‘,filename='d:\slog.ldf') 2、create table 班主任表( 编号 char(2) primary key, 姓名 char(8) not null) 3、insert into 班主任表 values('K1','高学仁') 4、update 学生表 set 年龄=2003-year(出生日期) 5、alter table 学生表 add 图象 image 6、select 姓名, 年龄 from 学生表 where 出生日期>’1982/10/1’ 7、select 学号,姓名 from 学生表 where 姓名 like ‘肖%’
8、 select班级名称, count(*)as人数from班级表,学生表 here班级表.编号=学生表.班级号 group by班级名称 9、 select学生表姓名as学生,班主任姓名as班主任 from学生表,班主任表,班级表 where学生表.班级号=班级表.编号and班主任表.编号=班级表.班主任编号 10、 select系名from系部表,学生表,班级表 where学生表.班级号=班级表.编号and班级表.所属系部=系部表.编号 group by系名 having count(*)>2 11、 create view电子班学生as select*from班级表,学生表 where班级表编号=学生表.班级号and班级名称=“01电子 12、 select学生表.*,班级名称into国际贸易00from班级表,学生表 where班级表.编号=学生表.班级号and班级名称=“00国际贸易 13、 select姓名from学生表 where班级号in( select班级号from学生表 where姓名=′李涛’) 14、 select姓名from学生表,班级表 where班级表编号=学生表.班级号and姓名<>’李涛 and所属系部in ( select所属系部from学生表,班级表 where班级表编号=学生表.班级号and姓名=′李涛〃) 15、 declare@ set x=l waitfor delay 00: while x<=100 if@x%12=0 set x=@x+1 16、 delete from学生表 where姓名=‘刘成锴
8、select 班级名称,count(*) as 人数 from 班级表,学生表 where 班级表.编号=学生表.班级号 group by 班级名称 9、select 学生表.姓名 as 学生, 班主任.姓名 as 班主任 from 学生表, 班主任表,班级表 where 学生表.班级号=班级表.编号 and 班主任表.编号=班级表.班主任编号 10、select 系名 from 系部表,学生表,班级表 where 学生表.班级号=班级表.编号 and 班级表. 所属系部= 系部表.编号 group by 系名 having count(*)>2 11、create view 电子班学生 as select * from 班级表,学生表 where 班级表.编号=学生表.班级号 and 班级名称=‘01 电子’ 12、select 学生表.*,班级名称 into 国际贸易 00 from 班级表,学生表 where 班级表.编号=学生表.班级号 and 班级名称=‘00 国际贸易’ 13、select 姓名 from 学生表 where 班级号 in (select 班级号 from 学生表 where 姓名=’李涛’) 14、select 姓名 from 学生表,班级表 where 班级表.编号=学生表.班级号 and 姓名<>’李涛’ and 所属系部 in (select 所属系部 from 学生表,班级表 where 班级表.编号=学生表.班级号 and 姓名=’李涛’) 15、declare @x set @x=1 waitfor delay ‘00:00:10’ while @x<=100 begin if @x%12==0 print @x set @x=@x+1 end 16、delete from 学生表 where 姓名=‘刘成锴’
17、 select班级号,avg(年龄)as平均年龄from学生表 group by班级号
17、select 班级号,avg(年龄) as 平均年龄 from 学生表 group by 班级号