PRINT('记录已修改!') END
第11课 为学生信息管理系统创建索引 1.什么是索引?索引的作用是什么? 答:
索引文件就是按照一定顺序对表中一列若干列建立的列值与记录行之间的对应关系表。它是一种特殊类型的数据库对象,保存着表中排序的索引列,并且记录了索引在数据表中的物理存储位置,实现了表中数据的逻辑排序。 索引的作用:提高查询信息的速度;保证数据记录的唯一性;实现表与表之间的参照完整性;在使用 ORDER BY 、GROUP BY子句进行数据检索时,利用索引可减少排序和分组的时间。 3.索引可以分为哪几类,每一类的特征是什么? 答:
索引可以分为三类,每一类特征如下:
1)聚集索引。每个表只能创建一个聚集索引,一般创建在表中经常搜索的列或者按顺利访问的列上,当为一个表的某列创建聚集索引时,表中的数据会按该列进行重新排序,然后再存贮到磁盘上,创建一个聚集索引所需的磁盘空间至少是实际数量的120%。
2)非聚集索引。数据存贮在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。索引中的项目按索引键值的顺序存储,而表中的信息按另一顺序存储。一个表最多可以创建249个非聚集索引。)
3)唯一索引。只要列中的数据是唯一的,就可以在同一个表上创建一个唯一的聚集索引和多个唯一的非聚集索引,只有当唯一性是数据本身的特征时,指定唯一索引才有意义。 4.简述用企业管理器创建索引的步骤。 答:
运行企业管理器,展开数据库,单击“表”文件夹,在右窗格中右击需要创建索引的表,在弹出的快捷菜单中,选择“所有任务→管理索引”,打开“管理索引”对话框。单击“新建”按钮,打开“新建索引”对话框,输入“索引名称”,从字段列表中选择用以创建索引的字段,并按要求设定索引选项(勾选相应选项前的复选框),单击“确定”按钮,关闭“新建索引”对话框。
5.什么情况下需要重建索引?用什么方法重建索引? 答:
当对数据库表中的数据进行插入、修改或删除操作时,就会影响到已创建的索引,此时必须重建该表拥有的全部索引。 重建索引可以使用DBCC DBREINDEX语句,在查询分析器中输入并运行DBCC DBREINDEX命令即可。 6.用sp_rename系统存储过程重命名索引时,在语法中给出原索引名应是什么形式? 答:
在语法中的原索引名应是table.index形式的。
7.系统存储过程sp_helpindex或sp_help都可以用来查看数据表的索引信息,它们有何区别? 答:
sp_helpindex显示表的信息,而sp_help除了显示索引信息外,还有表的定义、约束等其他信息。 8.写出T-SQL语句,对STUMS数据库进行如下操作:
1.在STUMS数据库的班级表上按班号创建一个名为bj_bh_index惟一聚集索引。 答:USE STUMS GO
CREATE UNIQUE CLUSTERED INDEX bj_bh_index ON 班级(班号)
2.在STUMS数据库的班级表上按班级名称创建一个名为bj_bjmc_index的惟一非聚集索引。 答:USE STUMS GO
CREATE UNIQUE NONCLUSTERED INDEX bj_bjmc_index ON 班级(班级名称) GO
3.在STUMS数据库的班级表中,按bj_bjmc_index索引指定的顺序,查询班级信息。 答:USE STUMS GO
SELECT * FROM 班级 WITH (INDEX_(bj_bjmc_index)) GO
4.在STUMS数据库的选课表上按学号+课程号建立惟一非聚集索引xk_xhkch,其填充因子和PAD_INDEX的值均为60。 答:USE STUMS GO
CREATE? NONCLUSTERED INDEX xk_ xhkch ON 选课(学号,课程号) WITH PAD_INDEX,FILLFACTOR=60, DROP_EXISTING GO
5.重新命名索引xk_xhkch为xk_xhkch_index。
答:EXEC sp_rename '选课.xk_xhkch','xk_xhkch_index' 6.使用填充因子值70,重建班级表上所有索引。 答:DBCC DBREINDEX (班级,'',70) 7.查看班级表上的索引信息。 答:EXEC sp_helpindex '班级'
8.删除班级表上的所有索引。
答:DROP INDEX 班级. bj_bh_index,班级. bj_bjmc_index
第12课 学生信息管理系统数据完整性实现 1.什么是数据的完整性?数据的完整性分为哪几类? 答:
数据完整性是指存储在数据库中的数据的一致性和准确性。
数据的完整性可分为四种类型:实体完整性、域完整性、参照完整性和用户定义的完整性。 2.什么是约束?请分别说明各种不同类型约束的含义。
答:
约束是一种强制数据完整性的标准机制,使用约束可以确保在字段中输入有效数据并维护各表之间的关系。SQL Server支持下列五类约束:
主键约束(PRIMARY KEY)。确保在特定的列中不会输入重复的值,并且在这些列中也不允许输入NULL值。可以使用主键约束强制完整性。
唯一性约束(UNIQUE)。不允许数据库表在指定列上具有相同的值,但允许有空值,确保在非主键列中不输入重复值。 检查约束(CHECK)。通过条件表达式判断限制插入到列中的值,以强制执行域的完整性。
默认值约束(DEFAULT)。当数据库表中插入数据时,如果没有明确的提供输入值时,SQL Server自动为该列输入默认值。
外键约束(FOREIGN KEY)。定义数据库表中指定列上插入或更新的数值,必须在另一张被参照表中的特定列上存在,约束表与表之间的关系,强制参照完整性。
3.如何创建和删除各种类型的约束,请写出其SQL语句的格式。 答: 创建主键约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name PRIMARY KEY(column) 创建唯一性约束 ALTER TABLE table_name
ADD CONSTRAINT constraint_name UNIQUE (column) 创建检查约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK logical_expression? 创建默认值约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name?
DEFAULT constraint_expression FOR column_name 创建外键约束
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
FOREIGNKEY column_name REFERENCES ref_table(ref_column_name) 删除约束
ALTER TABLE table_name
DROP CONSTRAINT constraint_name[,?n] 4.简述默认和规则的概念与应用。 答:
默认与在约束中介绍的DEFAULT默认约束的作用一样,也可以实现当用户在向数据库表中插入一行数据时,如果没有明确的给出某列的输入值时,则由SQL Server自动为该列输入默认值。但与DEFAULT 默认约束不同的是,默认是一种数据库对象,在数据库中只需定义一次后,就可以被一次或多次应用于任意表中的一列或多列,还可以用于用户定义的数据类型。
规则用来定义表中某列可以输入的有效值范围,当用户输入的数据不在规定的范围内,就会提醒用户输入有误,从而确保输入数据的正确性。规则与CHECK约束的作用是相同的。但与CHECK约束不同的是,规则是一种数据库对象,在数据库中只需定义一次后,就可以被一次或多次绑定到任意表中某列,限制列值。规则的使用方法类似默认,同样包
括创创建、绑定、解绑和删除。
5.写出T-SQL语句,对STUMS数据库进行如下操作:
1.在STUMS数据库中,为学生基本信息表的“系部代码”创建外键约束fk_xs_xb_xbdm;为“入学时间”创建检查约束ck_xs_rxsj,确保入学时间大于出生日期,小于计算机系统的日期。 答:
ALTER TABLE 学生基本信息 ADD CONSTRAINT fk_xs_xb_xbdm
FOREIGN KEY(系部代码)REFERENCES 系部(系部代码) GO
ALTER TABLE 学生基本信息 ADD CONSTRAINT ck_xs_rxsj
CHECK(入学时间>出生日期 AND入学时间 2.在STUMS数据库中创建zzmm_default 默认,将其分别绑定到学生基本信息表和教师表的“政治面貌”字段上,政治面貌的默认值为共产党员。 答: CREATE DEFAULT zzmm_default AS '共产党员' GO EXEC sp_bindefault 'zzmm_default','教师.政治面貌' EXEC sp_bindefault 'zzmm_default','学生基本信息.政治面貌' GO 3.在STUMS数据库中创建xbdm_rule规则,将其绑定到系部表的系部代码字段上,用来保证输入的系部代码只能是数字字符。 答: CREATE RULE xbdm_rule AS @xbdm LIKE? '[0-9][0-9]' GO EXEC sp_bindrule 'xbdm_rule', '系部.系部代码' GO 4.查看zzmm_default 默认和xbdm_rule规则的定义信息。 答: EXEC sp_helptext zzmm_defaul EXEC sp_helptext xbdm_rule 第13课 学生信息管理系统的安全管理 1. 登录SQL Server服务器的两种验证方法有何区别? 如何实现两种登录方式的切换?