数据库原理及应用(SQL Server 2008)第7章 索引与视图-ANSWER
SqlServer索引的原理与应用
SqlServer索引的原理与应⽤索引的概念索引的⽤途:我们对数据查询及处理速度已成为衡量应⽤系统成败的标准,⽽采⽤索引来加快数据处理速度通常是最普遍采⽤的优化⽅法。
索引是什么:数据库中的索引类似于⼀本书的⽬录,在⼀本书中使⽤⽬录可以快速找到你想要的信息,⽽不需要读完全书。
在数据库中,数据库程序使⽤索引可以重啊到表中的数据,⽽不必扫描整个表。
书中的⽬录是⼀个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表。
索引的利弊:查询执⾏的⼤部分开销是I/O,使⽤索引提⾼性能的⼀个主要⽬标是避免全表扫描,因为全表扫描需要从磁盘上读取表的每⼀个数据页,如果有索引指向数据值,则查询只需要读少数次的磁盘就⾏啦。
所以合理的使⽤索引能加速数据的查询。
但是索引并不总是提⾼系统的性能,带索引的表需要在数据库中占⽤更多的存储空间,同样⽤来增删数据的命令运⾏时间以及维护索引所需的处理时间会更长。
所以我们要合理使⽤索引,及时更新去除次优索引。
数据表的基本结构⼀个新表被创建之时,系统将在磁盘中分配⼀段以8K为单位的连续空间,当字段的值从内存写⼊磁盘时,就在这⼀既定空间随机保存,当⼀个 8K⽤完的时候,数据库指针会⾃动分配⼀个8K的空间。
这⾥,每个8K空间被称为⼀个数据页(Page),⼜名页⾯或数据页⾯,并分配从0-7的页号, 每个⽂件的第0页记录引导信息,叫⽂件头(File header);每8个数据页(64K)的组合形成扩展区(Extent),称为扩展。
全部数据页的组合形成堆(Heap)。
SQLS规定⾏不能跨越数据页,所以,每⾏记录的最⼤数据量只能为8K。
这就是char和varchar这两种字符串类型容量要限制在8K以内的原因,存储超过8K的数据应使⽤text类型,实际上,text类型的字段值不能直接录⼊和保存,它只是存储⼀个指针,指向由若⼲8K的⽂本数据页所组成的扩展区,真正的数据正是放在这些数据页中。
sqlserver2008大数据库应用与开发教程课后习题参考问题详解
实用标准文档SQL Server 2008数据库应用与开发教程(第二版)第一章习题参考答案1.简述SQL Server 2008系统中主要数据库对象的特点。
答:主要的数据库对象包括数据库关系图、表、视图、同义词、存储过程、函数、触发器、程序集、类型、规则和默认值等。
“表”节点中包含了数据库最基本、最重要的对象——表。
表实际用来存储系统数据和用户数据,是最核心的数据库对象。
“视图”节点包含了数据库中的视图对象。
视图是一种虚拟表,用来查看数据库中的一个或多个表,视图是建立在表基础之上的数据库对象,它主要以SELECT语句形式存在。
在“同义词”节点中包含了数据库中的同义词对象。
这是Microsoft SQL Server 2008系统新增的一种对象。
“可编程性”对象是一个逻辑组合,它包括存储过程、函数、触发器、程序集、类型、规则和默认值等对象。
数据库中的函数对象包含在“函数”节点中。
函数是接受参数、执行复杂操作并将结果以值的形式返回的例程。
2.SQL Server 2008数据库管理系统产品分为哪几个版本,各有什么特点?答:SQL Server 2008数据库管理系统产品的服务器版本包括了企业版和标准版,专业版本主要包括以下版本:工作组版(Workgroup)、开发人员版(Developer)、免费精简版(Express)、Web版,以及免费的集成数据库SQL Server Compact 3.5。
3.SQL Server 2008包含哪些组件,其功能各是什么?答:SQL Server 2008的体系结构是对SQL Server的组成部分和这些组成部分之间的描述。
Microsoft SQL Server 2008系统由4个组件组成,这4个组件被称为4个服务,分别是数据库引擎、Analysis Services、Reporting Services和Integration Services。
数据库引擎是Microsoft SQL Server 2008系统的核心服务,负责完成数据的存储、处理、查询和安全管理等操作。
数据库技术与应用—SQL Server 2008(第2版)第7章 操纵数据表中的数据
更新数据时,每个列既可以被直接赋值,也可以通过计算 得到新值。 【例7.6】将所有计算机系学生的选课成绩加5分。
UPDATE Grade SET grade =grade+5 WHERE studentID IN ( SELECT studentID FROM student WHERE speciality='计算机')
3
7.2 数据操作
7.2.1 用INSERT语句插入数据
7.2.2 用UPDATE语句更新数据
7.2.3 用DELETE语句删除数据
4
7.2.1 用INSERT语句插入数据
INSERT语句的基本格式:
INSERT [ INTO ] table_or_view_name [ ( column_list ) ] { { VALUES ( ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] ) | derived_table | DEFAULT VALUES } }
17
7.3 检索数据概述
检索数据是使用数据库的最基本的方式,也是最重要的方 式。 在SQL Server中,可以使用SELECT语句执行数据检索的操 作,查看表中的数据。 该语句具有非常灵活的使用方式和丰富的功能,它既可以 在单表上完成简单的数据查询,也可以在多表上完成复杂 的连接查询和嵌套查询。
11
那么标识列的数据是不是永远都没有办法手工更新呢?不 是的。如果想手工更新学号的值,可以通过以下方法实现。 首先,使用SET命令打开INSERT_IDENTIYT选项: SET IDENTITY_INSERT student ON 然后使用INSERT命令插入数据。此时一定要显式指出更 新哪些列数据,包括标识列,即列列表不能省略。命令 如下: INSERT INTO StuInfo (stuID, stuName,sex) VALUES (3,'汪华','男') 注意:INSERT_IDENTIYT选项为ON时,系统将不再自动为标 识列填入 值 。 如果 想恢复自 动输入 , 需要再次 执行 SET IDENTITY_INSERT student OFF,将IDENTITY_ INSERT选项 设置为OFF。
SQL Server 2008数据库程序设计第7章 索引
7.1 索引概述 7.2 创建索引 7.3 管理索引
7.1 索引概述
7.1.1 索引分类
索引包含了从表或视图中一个或多个列生成的键,通 过键映射到指定数据的存储位置的指针 。
数据的访问方式和索引的存储结构 。 两种基本的索引类型:聚集索引和非聚集索引 。聚集
索引是一种数据表的物理顺序与索引顺序相同的索引, 每个表只能有一个聚集索引,非聚集索引则是一种数 据表的物理顺序与索引顺序不相同的索引。
在“新建索引”窗体中,在“常规”选项中,输入索 引的名称Index_Name_Birth,选择非聚集索引类型, 点击“添加”按钮,打开窗体。在该窗体中选择 Sname字段和Birthday字段作为索引列,单击“确定” 按钮,返回“新建索引”对话框。
7.2 创建索引
在“选项”页可设置索引的填充因子等选项,填充因 子指示索引页的填满程度。在“包含性列”中,设置 索引页还可包含的其他非键列。在“存储”页,可以 对指定的文件组或分区方案建立索引。在“空间”页 可以设置空间索引的空间属性。在“筛选器”页可以 定义筛选索引的筛选表达式。
使用存储过程sp_helpindex或sp_help查看索引信息 【例7-4】 查询tblstudents表的索引信息 USE CJMS; EXEC sp_helpindex tblstudents;
7.3 管理索引
7.3.2 修改索引
1.ALTER INDEX的语法格式为: ALTER INDEX { index_name | ALL } ON { table | view } { REBUILD [ WITH ( <rebuild_index_option> [ ,...n ] ) ] | DISABLE | REORGANIZE [ WITH ( LOB_COMPACTION = { ON |
sql server 2008案例教程及实训 第7章 视图
update V_BookInfo2 set 价格=30
能运行么?
7.3.3 使用视图管理表中的数据
4.使用视图删除数据 【例7.15】使用T-SQL语句删除视图V_BookInfo2中图书编号 为“0341-3601”的图书记录。 代码如下:
delete from V_BookInfo2 where 图书编号='0341-3601'
7.3.1 创建视图
【例7.10】使用T-SQL语句,在“图书借阅信息管理系统” 数据库中,基于基表“BookInfo”创建一个名为 “V_BookInfo2”的视图,要求其中的内容是所有价格低 于30的低价图书,并加密视图的定义。
代码如下:
create view V_BookInfo2 with encryption as select * from BookInfo where 价格<30
查询定义信息:
Sp_helptext V_BookInfo2
7.3.1 创建视图
【例7.11】使用T-SQL语句,在“图书借阅信息管理系统”
数据库中,基于基表BookInfo、BorrowList和
ReaderCard三张表,创建一个名为“V_BBR”的视图,
要求其中内容包括借书证编号、读者姓名、图书名称。
7.3.3 使用视图管理表中的数据
1.使用视图查询数据 用户可以通过T-SQL语句对视图进行查询,其基
本语法是:
select * from view_name
7.3.3 使用视图管理表中的数据
2.使用视图插入数据 当向视图中进行插入或更新数据时,实际上就是对视
图所基于的表执行数据的插入和更新,但通过视图进行插入 和更新操作时有如下一些限制: (1)在一个语句中,一次不能修改一个以上的视图基表。 (2)对视图中所有列的修改必须遵守视图基表中所定义的各 种数据约束条件。 (3)不允许对视图中的计算列进行修改,也不允许对视图定 义中包含有聚合函数或GROUP BY子句的视图进行插入或修 改操作。
华科土木数据库第7章 索引与视图
29
《数据库技术与应用-SQL Server》
(2)使用FREETEXT进行全文查询
使用FREETEXT进行全文查询时,全文查询
引擎将对指定的项目建立一个内部查询,可以从表
中搜索一组单词或短语甚至完整的句子。
语法格式: SELECT 字段列表 FROM 表名 WHERE FREETEXT(字段名|*,'自由文本')
• 用SQL命令创建索引
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name ON table_or_view_name ( column_name [ ASC | DESC ] [ ,…n ] )
[ ON { filegroup_name | “default” } ]
一性约束的字段创建。
4
《数据库技术与应用-SQL Server》
• 主键索引
系统会自动为主键建立索引,称为主键索引。
• 聚集索引
在聚集索引中,表中各记录的物理顺序与键值的逻辑(索 引)顺序相同。只有在表中建立了一个聚集索引后,数据才会 按照索引键值指定的顺序存储到表中。 由于一个表中的数据只能按照一种顺序来存储,所以在一 个表中只能建立一个聚集索引。
例:删除T表中名为TI的索引。 DROP INDEX T.TI DROP INDEX TI ON T
19
《数据库技术与应用-SQL Server》
例7-4 删除employee表内名为employee_index_2的 索引。 USE Sales IF EXISTS (SELECT name FROM sysindexes WHERE name = 'employee_index_2') DROP INDEX employee.employee_index_2 GO
第7章 索引与视图 数据库原理及应用SQL Server 2008数据库原理及应用课件
创建一个非聚集索引时,应该注意下列事项:
(1)如果没有指定索引类型,那么默认的类型是非聚集索引。 (2)索引页的叶级只包含索引的关键字,不包含实际的数据 (3)每个表最多可以创建249个非聚集索引。 (4)聚集索引应在非聚集索引被创建之前创建。 (5)唯一性是由叶级维护的。 (6)以下情况发生时,SQL Server会自动重建现有的非聚集索 引: 删除现有的聚集索引时 创建聚集索引时 使用DROP_EXISTING选项来改变聚集索引列的定义时
7.1.1 索引的基本概念
数据库系统用下列两种方法之一来访问数据:
(1)表扫描,就是指系统将指针放在该表的表头数据所在的数 据页上,然后按照数据页的排列顺序,逐页地从前向后扫描 该表数据所占有的全部数据页,直至扫描完表中的全部记录。 在扫描时,如果找到符合查询条件的记录,那么就将这条记 录挑选出来。最后,将全部挑选出来符合查询语句条件的记 录显示出来。 (2)使用索引查找。索引是一种树状结构,其中存储了关键字 和指向包含关键字所在记录的数据页的指针。当使用索引查 找时系统将沿着索引的树状结构,根据索引中关键字和指针 找到符合查询条件的记录。最后将全部查找到的符合查询语 句条件的记录显示出来。
7.2 索引的操作
7.2.1 创建索引 创建索引的方式可以分为直接方法和间接方法。
直接创建索引的方法就是使用命令和工具直接创建索引。 间接创建索引就是通过创建其他对象而附加创建了索引。
主键约束或唯一性约束创建的索引的优先级高于使用 CREATE INDEX语句创建的索引。当在表上定义主键或 唯一性约束时,如果表中已经有了使用CREATE INDEX 语句创建的标准索引时,那么主键约束或唯一性约束 创建的索引覆盖以前创建的标准索引。
数据库原理及应用项目7事务、索引和视图的创建与应用
任务7.1 知识准备
7.1.3 视图的概念和作用
视图是由一个或多个基本表或其他视图导出的表。 使用视图有以下几个优点。 (1)简化查询语句 (2)增加可读性 (3)保证数据逻辑独立性 (4)增加数据的安全性和保密性 视图也有不少缺点,如操作视图会比直接操作基础表慢,所以 尽量要避免在大型表上创建视图,也尽量不要创建嵌套视图。
项目目标
知识目标
>了解事务的概念和特性。 >掌握事务创建。 >了解索引的类型和特点。 >掌握索引的创建。 >力目标
01 02
>能够熟练创建和提交事务的简单方法。 >能够完成索引的创建、管理、维护和删 除等操作。 >能够实现视图的创建、修改、使用和删 除等操作。
7.2.2 创建事务
用户自定义事务的定义方法主要有以下几个步骤。 3.撤销事务 若要撤销一个事务,可以使用ROLLBACK TRANSACTION语句,它使 得事务回滚到起点,撤销自最近一条BEGIN TRANSACTION语句以后对数 据库的所有更改,同时也标志了一个事务的结束。 语法格式:
另外,一条ROLLBACK WORK语句也能撤销一个事务, 语法格式:
用户自定义事务的定义方法主要有以下几个步骤。 2.结束事务 COMMIT TRANSCATION语句是提交语句,它将事务开始以来所执行 的所有数据都修改成为数据库的永久部分,也标志一个事务的结束。 语法格式:
标志一个事务的结束也可以使用COMMIT WORK语句。 语法格式:
任务7.2 “网络论坛”数据库数据 管理
索引和视图主要是起到辅助查询和组织数据的功能,通过使用它们 ,可以大大地提高查询数据的效率。但是,二者是有区别的:视图将查 询语句压缩,使大部分查询语句放在服务端,客户端只输入你要查询的 信息,而不用写出大量的查询代码这其中也是一个封装的过程。索引类 似目录,使得查询更快捷、更高效,适用于访问大型数据库。在本项目 中,将针对事务、索引和视图的内容进行详细的讲解。
《SQL Server 2008数据库设计教程》教学课件 第7章
1〕在“对象资源管理器〞窗格中右击该视图,从弹出的快捷菜单中选择“设计〞 命令,如左图所示。在翻开的视图编辑器中,对该视图重新设置即可,如右图所示。
“设计〞命令
修改视图
2〕如果需要在视图中添加数据表或视图,在表窗格空白处右击,弹出左图 所示的快捷菜单。从快捷菜单中选择“添加表〞命令,弹出“添加表〞对话框;然 后在“表〞或“视图〞选项卡中双击需要添加的表或视图即可。
运行结果如以下图所示。 视图修改数据运行结果
【例7-3】在jw数据库中通过v_upcourse视图,将CouNo为“012〞的课程信 息删除。
USE jw GO DELETE FROM v_upcourse WHERE CouNo='012' GO
利用SQL Server Management Studio的可视化环境可以非常方便地对视 图进行重命名,用户只需要在“对象资源管理器〞窗格中右击该视图,从弹出 的快捷菜单中选择“重命名〞命令,输入正确的视图名即可。
【例7-2】在jw数据库中创立一个名为“v_upcourse〞的视图。该视图从 dbo.Course表中检索CouNo,CouName的信息。通过v_upcourse视图将CouNo 为“001〞的CouName修改为“SQL Server数据库程序设计〞。
USE jw GO CREATE VIEW v_upcourse
要创立军视图,用户必须拥有数据库所有者授予的创立视图的权限,同时, 也必须对定义视图时所引用的基表有适当的权限。视图的创立者必须拥有在视图 定义中引用的任何对象〔如相应的表、视图等〕的许可权,才可以创立视图。
在默认状态下,视图中的列名继承了它们基表中的相应列名;对于以下情况 那么需要重新指定列的别名:
SQL Server 2008数据库应用与开发教程(第二版)第7章 查询和视图简明教程PPT课件
查询和视图
本章学习目标:
掌握T-SQL作为数据定义语言的语法与应用 掌握WHERE、ORDER BY、GROUP BY、 HAVING子句的使用 掌握基本的多表查询 掌握内连接、外连接、交叉连接和联合查询的使用 掌握多行和单值子查询的使用 掌握嵌套子查询的使用 了解表的视图
7.2.1 SELECT语句对列的查询
对列的查询实质上是对关系的“投影”操作。 在很多情况下,用户只对表中的一部分列感兴 趣,可以使用SELECT子句来指明要查询的列, 并可根据需要改变输出列显示的先后顺序。 T-SQL中对列的查询是通过对SELECT子句中 的列名选项进行设置完成的,具体格式为:
把两个表中的行按着给定的条件拼接而形成的新表。 连接也称为θ连接 连接运算的含义:从两个关系的笛卡尔积中选取属性 间满足一定条件的元组 A和B:分别为R和S上度数相等且可比的属性组 θ:比较运算符 连接运算从R和S的广义笛卡尔积R×S中选取(R 关系)在A属性组上的值与(S关系)在B属性组上值 满足比较关系的元组。 θ为“=”的连接运算称为等值连接
SELECT语句的完整语法格式为:
SELECT <列名选项> FROM <表名>|<视图名称> [WHERE <查询条件>|<联接条件>] [GROUP BY <分组表达式>[HAVING <分组统计表达式>]] [ORDER BY <排序表达式>[ASC|DESC]]
其中的SELECT和FROM语句为必选子句,而WHERE、ORDER BY和GROUP BY子句为可选子句,要根据查询的需要去选用。 SELECT语法中各参数进行说明: SELECT子句:用来指定由查询返回的列,并且各列在SELECT 子句中的顺序决定了它们在结果表中的顺序; FROM子句:用来指定数据来源的表; WHERE子句:用来限定返回行的搜索条件; GROUP BY子句:用来指定查询结果的分组条件; ORDER BY子句:用来指定结果的排序方式。 SELECT语句可以写在一行中。但对于复杂的查询,SELECT语 句随着查询子句的增加不断增长,一行很难写下,此时可以采用 分行的写法,即每个子句分别在不同的行中。需要注意,子句与 子句之间不能使用符号分隔。
1-14章《数据库原理及应用-(SQLServer2008版)》 唐国良蔡中民习题参考答案
《数据库原理及应用》习题参考答案第1章 (1)第2章 (3)第3章 (3)第4章 (4)第5章 (4)第6章 (4)第7章 (5)第8章 (6)第9章 (7)第10章 (9)第11章 (10)第12章 (11)第13章 (12)第1章1.12(单选题)设有如下关系R和S,关系代数表达式R÷S的运算结果是____。
选项如下:关系代数表达式R÷S的运算结果是__(B)__。
分析:在本题中,R的属性有A、B、C、D,而S的属性有C、D、E,因此,R÷S的属性有A、B。
求除法的简单方法是在关系R中寻找属性C和D的值同时满足关系S中属性C和D的所有元组的元组。
在关系R中,第1个元组(2,1,a,c)和第5个元组(2,1,b,d),其A和B的属性值相同,而C和D的属性值满足关系S中的C和D的所有属性值,因此(2,1)将是R÷S的元组。
关系R元组(3,2)对应C、D属性的值为(b,d)和(b、c),它不能满足关系S中属性C、D中的(a、c),因此满足要求。
所以,正确答案是B。
解答:1.14 假设某商业集团数据库中有1个关系模式R(商店编号,商品编号,数量,部门编号,负责人)。
如果规定:(a)每个商店的每种商品只在一个部门销售。
(b)每个商店的每个部门只有一个负责人。
(c)每个商店的每种商品只有一个库存数量。
(1)写出关系模式R的基本函数依赖集(2)找出关系模式R的候选码。
(3)关系模式R最高已经达到第几范式?为什么?(4)如果R不属于3NF,请将R分解成3NF。
分析与解答:(1)基本的函数依赖有:(商店编号+商品编号) →部门编号(商店编号+部门编号) →负责人(商店编号+商品编号) →数量(2)由题意,上面的函数依赖可知“商店编号”是主属性,商品编号也是主属性,由这两个属性,可以确定关系元组的所有属性,所以R的候选码是:商店编号+商品编号。
(3)R(商店编号,商品编号,数量,部门编号,负责人) 最高已达到2NF。
《SQL Server 2008数据库应用技术》CAI==赵增敏
第2章目录
2013-7-21
17/180
2.1 数据库概述
2.1.4 系统数据库 master model msdb Resource tempdb
第2章目录
2013-7-21
18/180
2.2 创建数据库
2.2.1 使用SSMS创建数据库 创建数据库,就是确定数据库的名称、所有者、大小、 增长方式以及存储该数据库的文件和文件组等信息的 过程。在一个SQL Server实例中,最多可以创建32 767个数据库。 创建数据库时,model数据库中的所有用户定义对象 都将复制到所有新创建的数据库中。也可以向model 数据库中添加对象,例如表、视图、存储过程和数据 类型等,以将这些对象包含到所有新创建的数据库中。 创建数据库的用户将成为该数据库的所有者。 创建数据库时,必须拥有创建数据库的权限。此外, 在SQL Server中,对各个数据库的数据和日志文件设 臵了某些权限。如果这些文件位于具有打开权限的目 录中,则以上权限可以防止文件被意外篡改。 使用SQL Server Management Studio创建数据库
2013-7-21
12/180
1.4 SQL Server服务器管理
1.4.2 管理服务器组 在已注册的服务器中创建服务器组 对于现有的服务器组,可执行以下操作。 编辑服务器组的属性 在服务器组中注册新服务器 将注册服务器移动到服务器组中 向服务器组中导入注册服务器 删除某个服务器组
2013-7-21 10/180
第1章目录
1.3 SQL Server 2008主要组件
1.3.3 SQL Server配臵管理器 SQL Server配臵管理器用于管理与SQL Server相关联 的服务、配臵SQL Server使用的网络协议以及从SQL Server客户端计算机管理网络连接配臵。 1.3.4 SQL Server Profiler SQL Server Profiler是用于从服务器捕获SQL Server 事件的工具。事件保存在一个跟踪文件中,可在以 后对该文件进行分析,也可以在试图诊断某个问题 时,用它来重播某一系列的步骤。SQL Server Profiler提供了一个图形用户界面,用于监视数据库 引擎实例或Analysis Services实例。
SQLServer2008基础教程(7)解析
2020年10月28日
第24页
删除表中的数据
2020年10月28日
第Байду номын сангаас5页
TRUNCATE TABLE语句
在删除表中的全部数据时,还可以使用TRUNCATE TABLE语句。
2020年10月28日
第4页
7.1 概述
下面,通过一个具体示例,研究表创建之 后用户面临的操纵数据问题和解决这些操 纵数据问题的思路。
按照图7-1所示创建books表,该表用于存 储图书的书号、书名、出版社名称、图书 页数、图书价格以及出版日期等信息。
2020年10月28日
第5页
创建books表
2020年10月28日
第6页
表创建之后
表创建之后,表只是一个空表。如何向表 中添加数据呢?如果表中已有数据了,但 是数据不合适或不正确,那么如何更新这 些数据呢?如果表中的数据不再需要了, 那么如何删除这些过时的数据呢?如何按 照用户需要,将表中的数据检索出来呢? 这些问题都是数据操纵问题。用户可以使 用INSERT、UPDATE、DELETE、 SELECT等语句来解决这些数据操纵问题。
2020年10月28日
第26页
7.5 检索操作概述
检索表中数据可以使用SELECT语句。在SELECT语句中, 有3个基本的组成部分:SELECT子句、FROM子句和 WHERE子句。SELECT子句用于指定将要检索的列名称, FROM子句指定将要检索的对象,WHERE子句则用于指 定数据应该满足的条件。
2020年10月28日
第7章 SQL Server 2008的T-SQL I
2.数据库文件
(1)主数据文件Primary:存放数据,每个数 据库都必须有一个主数据文件。 (2)其他数据文件(Secondary):也用来存 放数据,一个数据库可以没有也可以有多个 Secondary文件。 (3)事务日志文件(Transaction Log):存放 事务日志,每个数据库必须有一个或多个日志 文件。
第7章 SQL Server 2008的T-SQL I
Chapter 7 T-SQL I of SQL Server 2008
本章重点 本章主要介绍了SQL Server的数据库、 数据表、数据更新、数据查询、视图和函 数,要求学生重点掌握T-SQL语言的数据 定义和数据操纵功能,掌握视图的作用和 用法,了解函数的使用方法。
4)Msdb数据库:它主要被SQL Server Agent用 来进行复制、作业调度以及管理报警等活动,也 可通过调度任务来排除故障。
(2)用户数据库 用户数据库可以利用CREATE
DATABASE语句来建立;也可以在进入SQL Server Management Studio后,通过右击 对象资源管理器中的“数据库”,再选 “新建数据库”来建立。
SQL Server 2008在安装时还自动创建 了另外两个数据库:AdventureWorks和 AdventureWorksDW,它们是SQL Server的 样本数据库。
7.1.2 创建用户数据库
1、在查询分析器中创建数据库
Create database 15480030201 ON ( NAME =15480030201,
2、在对象资源管理器中管理数据库
在进入SQL Server Management Studio后,通过点击对象资源管理器中 “数据库”左边的+符号,展开“数据 库”,选中要管理的用户数据库并右击 此数据库,在弹出的快捷菜单中根据需 要选择要管理的项目即可。
SQL Server 2008 数据库应用教程第7章
7.1.2 创建规则
使用CREATE RULE语句可以创建规则, 其语法结构如下: CREATE RULE <架构名>.<规则名> AS <规则表达式> 规则表达式中可以包含算术运算符、关 系运算符和谓词(例如IN、LIKE、 BETWEEN等)。
【例7-1】
创建一个规则SexRule,指定变量@sex 的取值只能为'男'或'女',代码如下: CREATE RULE SexRule AS @sex IN ('男', '女')
【例7-2】
创建一个规则WageRule,指定变量 @wage的取值范围为0~50000,代码如下: CREATE RULE WageRule AS @wage BETWEEN 0 AND 50000
7.1.3 查看规则
打开SQL Server Management Studio,在对象资源管理器中 展开要管理的数据库,例如 HrSystem。再展开“可编程 性”/“规则”,可以查看选择 数据库中的所有规则对象。如 果还没有创建规则对象,则 “规则”节点下没有子节点。 右击一个规则对象,在弹出菜 单中选择“编写规则脚本 为”/“CREATE到”/“新查询编 辑器窗口”,会打开一个新的 查询编辑器窗口,并在其中显 示该规则的定义语句,如图7-1 所示。
7.1.6 删除规则
在SQL Server Management Studio 中,右键单击指 定的规则,在弹出菜单中选择“删除”项则删除指定 的规则对象。 也可以使用DROP RULE语句从当前数据库中删除一个 或多个规则,语法如下: DROP RULE 规则名1 [, 规则名2, ..., 规则名n] 在删除规则前,需要调用sp_unbindrule存储过程解 除该规则的绑定。
数据库原理及应用01-课程内容 第7章 视图与索引(1)_13
第 7 章视图与索引(1)数据库的基本表是按照数据库设计人员的观点设计的,并不一定符合用户的需求。
SQL Server 2008可以根据用户的各种需求重新构造表的数据结构,这种数据结构就是视图。
视图是关系型数据库系统提供给用户以多种角度观察数据库中数据的重要机制。
索引是以表列为基础的数据库对象,它保存着表中排序的索引列,并且记录了索引列在数据表中的物理存储位置,实现了表中数据的逻辑排序。
7.1 视图视图是从一个或几个表导出来的表,它不是真实存在的基本表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
视图实际上是一个查询结果,视图的名字和视图对表的查询存储在数据字典中。
7.1.1视图的基本概念视图包含了一系列带有名称的列和数据行,这些列和数据行来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基本表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。
从数据库系统外部来看,视图就如同一个表一样,对表能够进行的一般操作都可以应用于视图,例如查询、插入、修改和删除操作等。
但对数据的操作要满足一定的条件,当对通过视图看到的数据进行修改时,相应的基本表的数据也会发生变化,同样,若基本表的数据发生变化,这种变化也会自动地反映到视图中。
1.视图的主要作用视图的主要作用体现在如下三个方面:(1)简单性。
视图不仅可以简化用户对数据的理解,也可以简化他们的操作。
那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
(2)安全性。
通过视图用户只能查询和修改他们所能见到的数据。
数据库中的其它数据则既看不见也取不到。
数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定行和特定的列上。
通过视图,用户可以被限制在数据的不同子集上,例如,被限制在某视图的一个子集上,或是一些视图和基本表合并后的子集上。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.6.1 选择题
7.6.2 填空题
1. 聚集索引非聚集索引唯一性索引索引视图
2. 修改数据
3. 创建表
4. 删除
5. 表扫描使用索引查找
7.6.3 简答题
1. 分析索引的优点和缺点。
答:这是因为创建索引可以大大提高系统的性能:
(1)通过创建唯一性索引,可以保证每一行数据的唯一性。
(2)可以大大加快数据的检索速度,这也是索引的最主要的原因。
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
(4)在使用ORDER BY和GROUP BY子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。
(5)通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。
既然增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?虽然索引有许多优点,但是为表中的每一个列都增加索引是非常不明智的做法。
这是因为增加索引也有缺点:
(1)创建索引和维护索引要耗费时间。
(2)索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间。
如果要建立聚集索引,那么需要的空间就会更大。
(3)当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
2. 堆结构的特点是什么?
答:堆是不含聚集索引的表,表中的数据没有任何的顺序。
堆结构中数据按照插入的先后次序存放,堆文件的数据页面不一定在物理上相邻。
堆文件执行插入操作很容易,但是效率不高。
因为堆文件只能执行顺序扫描,这对范围查询很有效,但对于随机查询(单个记录)的效率很低。
查询最少的次数为1,最多的次数为N(N为记录数),平均次数为(N+1)/2。
如果N比较大,耗费的CPU和I/O资源都会很大。
3. 什么是聚集索引和非聚集索引?比较这两种索引结构的特点。
答:聚集索引是一种数据表的物理顺序与索引顺序相同的索引。
建立索引时,系统将对表的物理数据页中的数据按列进行排列,然后再重新存储到磁盘上,即聚集索引与数据是混为一体的。
非聚集索引是一种数据表的物理顺序与索引顺序不相同的索引。
非聚集索引与聚集索引
具有相同的B树结构,但是在非聚集索引中,基础表的数据行不是按照非聚集键的顺序排序和存储,且非聚集索引的叶级是由索引页而不是由数据页组成。
非聚集索引既可以定义在表或视图的聚集索引上,也可以定义在表或视图的堆上。
非聚集索引中的每一个索引行都是由非聚集键值和行定位符组成,该行定位符指向聚集索引或堆中包含该键值的数据行。
当在一个聚集索引上构建非聚集索引时,索引中的指针值就是数据行的聚集索引键值。
4. 为什么要使用视图?
答:视图是查看数据库表中数据的一种方式。
视图提供了存储预定义的查询语句作为数据库中的对象以备以后使用的能力。
视图是一种逻辑对象,是一种虚拟表。
视图结合了基本表和查询两者的特性:用户可以使用视图从一个或多个相关的基表中提取一个数据集(查询特性);用户能运用视图去更新视图中的信息,并且持久地存储到磁盘(表特性)。
5. 视图的数据来自何处?能否说视图不占据任何的物理空间,为什么?
答:视图是一种逻辑对象,是一种虚拟表。
除非是索引视图,否则视图不占物理存储空间。
在视图中被查询的表称为视图的基表。
大多数的SELECT语句都可以用在视图的创建中。
不能说视图不占据任何的物理空间。
因为,一般情况下的视图都是标准视图,它是一个虚拟表并不占物理存储空间。
如果希望提高聚合多行数据的视图性能,那么可以创建索引视图。
索引视图是被物理化的视图,它包含有经过计算的物理数据。
6. 如何使用CREATE VIEW语句创建视图?
答:使用Transact-SQL语句中的CREATE VIEW命令创建视图的语法形式如下:CREATE VIEW view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ]
AS
select_statement [ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
7. 如何创建索引视图?
答:创建索引视图时,视图不能引用任何其他视图,只能引用基表。
另外,必须使用SCHEMABINDING 子句将视图绑定到架构。
8. 如何查看视图的定义文本?
答:使用系统存储过程语句sp_helptext查看视图、触发器、存储过程在系统表中的定义文本,其语法形式如下:
sp_helptext [@objname = ] ‘name’
参数[@objname = ] ‘name’为对象的名称,对象必须在当前数据库中。
7.7上机实验
(1)建立索引
1)
USE stu
Go
CREATE INDEX index_Sno ON _Student(Sno)___
2)
USE stu
Go
CREATE _ NOCLUSTERED INDEX index_Cno ON Courses(Cno)
3)
USE stu
GO
CREATE INDEX index_Sname_Sno ON_Student(姓名,学号)__
4)
USE stu
GO
CREATE CLUSTERED INDEX index_SCno ON_Enrollment(学号,课程号)_
5)
USE stu
GO
CREATE UNIQUE CLUSTERED INDEX index_Cno_Cname _ON Courses(课程号,课程名) WITH PAD_INDEX,FILLFACTOR=80,IGNORE_DUP_KEY
(2)创建视图
CREATE VIEW view_name [ ( column [ ,...n ] ) ] [ WITH < view_attribute > [ ,...n ] ]
AS
select_statement [ WITH CHECK OPTION ]
< view_attribute > ::=
{ ENCRYPTION | SCHEMABINDING | VIEW_METADATA }
1)
CREATE VIEW V_female AS SELECT * FROM Student WHERE Ssex=’F’
2)
CREATE VIEW V_age AS SELECT Sno,Sage FROM Student
3)
CREATE VIEW V_ average Sno, average AS SELECT Sno, A VG(Grade) FROM Student
(3)使用视图
SELECT Sno,name,___average__ FROM Student ,V_average WHERE_ Student .Sno= V_average .Sno。