6.管理数据库对象
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
架构
• 创建图书明细架构 create schema BookSchema authorization dbo create table MyBooks ( bookid int identity(1,1) not null, bookname nvarchar(50) null, bookishbn nchar(20) null, bookprice int null, bookauthor nchar(10) null, bookpress nchar(10) null );
管理数据库对象
管理数据库对象
• • • • 本章内容 架构 视图 索引
架构
• 架构是对象的容器。 • 架构中安全对象的完全指定名称包括此安全对 象所在的架构名称。 • 架构用于简化管理和创建可以共同管理的子集
• • • • • (1)使用架构 (2)创建架构 (3)修改架构 (4)移动对象到新的架构 (5)删除架构
视图
• 视图是select语句组成的查询定义的虚拟表。 • 数据库中只存在视图的定义,而不存在视 图中相对应的数据,数据仍然存放在原来 的基表中。 • 1、创建视图 • 2、管理视图 • 3、使用可更新视图
视图
• 1、创建视图 • (1)图形化界面创建 • (2)Transact-SQL命令创建 create view View_TeacherClass ( claname,teaname ) as select class.claname,teacher.teaname from cla_tea inner join class on cla_tea.claid=class.claid inner join teacher on cla_tea.teaid=teacher.teaid 查询视图信息: select top 10 claname,teaname from View_TeacherClass
视图
• 3、通过视图操作数据 • (1)新增数据 • 例 创建一个基于表student的view_student视图,然后在 视图中插入一条数据 insert View_Student values(7,'201007','小米','xm123','女','1983-2-1',3) values(7,'201007',' ','xm123',' ','1983-2-1',3) • (2)更新数据 • 修改条件 • 修改视图view_student 中编号为的学生信息 update view_student set stuname='裴亚敏',stusex='女' where stuid=6
索引适用情况
动作描述 使用聚 集索引 应 应 应 应 应该 不应 不应 不应 使用非聚集索引
外键列 主键列 列经常被分组排序(order by) 返回某范围内的数据 小数目的不同值 大数目的不同值 频繁更新的列 频繁修改索引列
应 应 应 不应 不应 应 应 应
聚集索引与非聚集索引
• 创建与查看索引 图形界面创建 Transact-SQL语句创建
Hale Waihona Puke 架构• 2、创建架构 架构命名规则 架构名称最长可达128个字符 架构名称必须以英文字母开头 架构名称在同一数据库中必须唯一 (1)使用图形化界面创建
注意:架构所有者可以是任何数据库级别的安全主体(数 据库用户、数据库角色或者应用程序角色)
架构
• (2)使用Transact-SQL语句创建 • 创建一个EmployeeSchema的架构 CREATE SCHEMA EmployeeSchema authorization dbo create table Employee ( empId nvarchar(50) not null primary key, empName nchar(10) not null, empSex nchar(10) not null, empDate date null, empNational nchar(10) null, empDepartment nchar(10) null, empAddress ntext null ) Create table Company ( );
视图
• 2、管理视图 • (1)查看视图 Use stusystem Go Exec sp_helptex View_TeacherClass • (2)修改视图 • 如果基表发生变化或者要通过视图查询更多的信息,可以使用alter view修改视图。 • alter view View_TeacherClass • ( • claname,teaname,teaid • ) • as • select class.claname,teacher.teaname,cla_tea.teaid • from cla_tea inner join class • on cla_tea.claid=class.claid • inner join teacher • on cla_tea.teaid=teacher.teaid • (3)删除视图 • 语法:drop view view_name
视图
• (3)删除数据 • 如果视图连接了两个以上的基表时,则不允 许进行数据删除操作 • 例 删除view_student中编号为7的学生 delete from view_student where stuid=7
视图练习题
• • • • 创建药品详情视图 要求(1)图形化界面创建 (2)transact-sql命令创建 厂家信息表: 字段名称 id cname caddress crange cintrod ctel 数据类型 int nvarchar(30) nvarchar(40) nvarchar(20) varchar(20) 约束 主键 非空 非空 非空 备注 厂家编号 厂家名称 厂家地址 厂家规模 厂家介绍 厂家联系电话
索引
• 选择索引类型 • 两种基本类型的索引:聚集索引和非聚集 索引。 • 除此之外还有索引视图、全文索引、XML索 引 • 一个表中只能包含一个聚集索引
索引
没有索引的表 一张没有索引的数据表,就像一个只有书柜而没 有索引卡片柜的图书馆,书库里面塞满了一堆乱 七八糟的图书。当读者对管理员提交查询请求 后,管理员就一头钻进书库,对照查找内容从 头开始一架一柜的逐本查找。运气好的话,在 第一个书架的第一本书就 找到了,运气不 好的话,要到最后一个书架的最后一本书才找 到。
非聚集索引
• 管理索引 修改索引 语法:ALTER INDEX index_name ON student REBUILD 删除索引 语法如下: DROP INDEX <table_or_view_name>.<index_name> OR DROP INDEX <index_name> ON < <table_or_view_name > 例 将student表中的名称为 index_Name的索引删除 DROP INDEX 或 DROP INDEX index_Name ON student
架构
• 3、修改架构 • 在创建架构之后不仅可以更改架构的所有 者,还可以更改架构中用户或角色指定的 权限。但是不能修改架构名称。 • (1)更改架构所有者 • (2)更改权限
架构
• 4、移动对象到新架构 • 注意:要在架构之间移动对象,必须拥有对对象的 control权限以及对象目标架构的alter权限。并且移动对 象到新的架构必须是在同一 个数据库中移动。 • (1)图形化界面 • (2)使用Transact-SQL语句 • 语法:ALTER SCHEMA schema_name TRANSFER securable_name • 例 将student表从当前架构dbo移动到新的架构youndtang 中。 • Use stusystem • Alter schema youndtang transfer dbo.student
nvarchar(100) 非空 非空
视图练习题
• 药品信息表
字段名 id dname delement cid 数据类型 int nvarchar(20) nvarchar(20) int 约束 主键 非空 非空 外键 备注 药品编号 药品名称 药品成分 厂家编号
索引
• 在关系数据库中,索引是一种可以加快数 据检索速度的数据结构,主要用于提高数 据库查询数据性能。
架构
• 1、使用架构 • 架构中包含的对象主要有:xml架构集合、表、视 图、过程、函数、聚合函数、约束、同义词、队列 和统计信息。 • 关系图见课本P134 • 在访问默认架构中的对象时,不需要指定架构名称。 如果要访问其他架构中的对象,需要两部分或者三 部分标识符,格式如下: 两部分:schema_name.object_name 三部分:database_name.schema_name.object_name
索引
• 非聚集索引 如果您认识某个字,您可以快速地从自典中查到这个字。但您 也可能会遇到您不认识的字,不知道它的发音,这时候,您就 不能按照刚才的方法找到您要查的字,而需要去根据“偏旁部 首”查到您要找的字,然后根据这个字后的页码直接翻到某页 来找到您要找的字。但您结合“部首目录”和“检字表”而查 到的字的排序并不是真正的正文的排序方法,比如您查“张” 字,我们可以看到在查部首之后的检字表中“张”的页码是672 页,检字表中“张”的上面是“驰”字,但页码却是63页, “张”的下面是“弩”字,页面是390页。很显然,这些字并不 是真正的分别位于“张”字的上下方,现在您看到的连续的 “驰、张、弩”三字实际上就是他们在非聚集索引中的排序, 是字典正文中的字在非聚集索引中的映射。我们可以通过这种 方式来找到您所需要的字,但它需要两个过程,先找到目录中 的结果,然后再翻到您所需要的页码。
索引
• 聚集索引 我们的汉语字典的正文本身就是一个聚集索引。比如, 我们要查“安”字,就会很自然地翻开字典的前几页, 因为“安”的拼音是“an”,而按照拼音排序汉字的字 典是以英文字母“a”开头并以“z”结尾的,那么“安” 字就自然地排在字典的前部。如果您翻完了所有以“a” 开头的部分仍然找不到这个字,那么就说明您的字典中 没有这个字;同样的,如果查“张”字,那您也会将您 的字典翻到最后部分,因为“张”的拼音是“zhang”。 也就是说,字典的正文部分本身就是一个目录,您不需 要再去查其他目录来找到您需要找的内容。 我们把这种正文内容本身就是一种按照一定规则排列的 目录称为“聚集索引”。
架构
• 5、删除架构 • 要删除一个架构,首先必须在架构上拥有control权 限,并且在删除架构之前,移动或删除该架构包含 的所有对象,否则删除操作将会失败。 • (1)图形界面 (1) • (2)Transact-SQL命令删除架构 • 删除名称为EmployeeSchema的架构 Use stusystem Drop table employeeschema.employee Drop schema employeeschema go