SQL SERVER基础语法 五 架构视图索引

 

目录

 

 

1.架构

用于存储数据库对象的一个命名空间。用于集中管理数据库对象子集,简化管理数据库对象。

架构的名称在同一个数据库中必须唯一。

(1)图形界面创建架构

选择指定数据库,展开"XXXX|安全性"---右键"架构"---新建架构

(2)语法创建

create schema schema_name
authorization own_name #指定架构的所有者 如dbo
table_definition|view definition  #意思是create table或者create iew
(
 #创建的内容
)

  

(3)修改架构

在图形界面中右键架构名称,在属性中修改。

(4)移动对象到新的架构

在图形界面中的属性中直接修改。

alter schema语句移动

alter schema new_schema_name transfer securable_name

  

(5)删除架构

需架构上拥有control的权限,删除架构之前,需先移动或者删除该架构包含的对象。

语法

drop schema schema_name

  

2.视图

用于查询表中数据的另一种方式,视图是一个虚表,是从一个或几个基本表中导出的表。

数据库中只存在视图的写下义,不存在视图中相对应的数据。

 

(1)图形创建视图

展开指定数据库---右键视图--新建视图,选择要添加的表,然后确定就可以。

(2)语法创建\

create view view_name (column_name1,column_name2,.......)
AS select_statment
[with check option] #强制针对视图执行的所有数据修改语句都必须符合select _statement中设置的条件(这一句可选)
<view_attribute>=
<
  [encryption] 
  [schemabinding] #将视图绑定到基础表的架构
  [view_metadata] #指定为引用视图的查询请求浏览模式的元数据时,sqlserver实例将向DB_Library,ODBC,OLE DB API返回有关视图的元数据信息,不返回基本表的元数据信息。

>

  

示例:

数据库:学生信息管理系统

表:学生信息

create view 基本信息
as
select 学号,姓名,性别,出生日期,家庭住址
from 学生信息

  

创建视图之后,就可以直接进行查询

select * from 基本信息

  

创建带where子句的视图

create view Teacher
as
select  教师编号,姓名,性别,年龄
from教师信息
where 性别='男'

  

创建带with check option子句的视图

create view 必修信息(课程号,课程名,任课教师,必修)
as
select  *
from 课程信息
where 是否必修='是'
with check option

  

基于多表创建视图

create view 任课信息(教师号,姓名,课程号,课程名)
as
select 教师编号,姓名,课程编号,课程名称
from 教师信息,课程信息
where 教师信息.教师编号=课程信息.任课教师

  

使用表连接视图

create view 成绩表(学号,课程编号,成绩编号,分数)
as
select S.学号,C.课程编号,SC.成绩编号,分数
from 学生信息 S,课程信息 C,成绩信息 SC
where S.学号=SC.学生编号,AND C.课程编号=SC.课程编号

  

(3)更新视图

更新图视指的是通过视图进行数据的插入,修改的删除操作

插入

insert into 基本信息 values('2005060101','张小慧','女','1987-05-26','河南营口')

  

修改数据

update 基本信息
set 姓名='刘明亮' 性别='男'
where 学号='2005060101'

  

删除数据

delete  from 基本信息 where 学号='2005060101'

  

(4)查看视图

use 学生信息管理系统
go
exec sp_helptext 任课信息

  

 

(5)修改视图

alter view view_name(column_name1,column_name2,.....)
[with <view_attribute>]
as
select_satement
[with check option]
<view_attribute>::=
{
  [encryption]
  [schemabinding]
  [vie_metadata]
}

  

示例

将上面示例的 “成绩表”视图中的"成绩编号"列删除

use 学生成绩管理系统
alter view 成绩表
as 
select S.学号,C.课程编号,分数
from 学生信息 S,课程信息 C,成绩信息 SC
where S.学号=SC.学生编号 AND C.课程编号=SC.课程编号

  

(6)删除视图

DROP VIEW view_name

  

3.索引

索引是一个单独的,物理的数据库结构,是某个表中一列或者若干列的集合和相应指向表中物理标识这些值的数据页的逻辑指针清单。

B+树以及Hash结构。

索引的建立依赖于表,它提供了数据库编排表中数据的内部方法。

表的存储由两部分组成,一部分用来存放表的数据页面,一部分存放索引页面。

索引就存放在索引页面上,当进行数据检索时,系统先搜索 索引页面,从中找到所需数据的指针,再通过指针从数据`页面中读取数据。

索引一旦创建,将由数据库自动管理和维护。

索引只提供一种快速访问指定记录的方法。

聚集索引和非聚集索引按B-TREE树结构进行组织,每一页称为一个索引节点。真正的数据页链只能按一种方式进行索引,因此,一个表只允许包含一个聚集索引。

(1)基本类型的索引

聚集索引

 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。
  聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
    
     聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行 的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此 类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节 省成本。
    

     当索引值唯一时,使用聚集索引查找特定的行也很有效率。例如,使用唯一雇员 ID 列 emp_id 查找特定雇员的最快速的方法,是在 emp_id 列上创建聚集索引或 PRIMARY KEY 约束。

 

(2)非聚集索引

一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序 
返回某范围内的数据 不应
一个或极少不同值 不应 不应
小数目的不同值 不应
大数目的不同值 不应
频繁更新的列 不应
外键列
主键列
频繁修改索引列 不应

事实上,我们可以通过前面聚集索引和非聚集索引的定义的例子来理解上表。如:返回某范围内的数据一项。比如您的某个表有一个时间列,恰好您把聚合索引建立在了该列,这时您查询2004年1月1日至2004年10月1日之间的全部数据时,这个速度就将是很快的,因为您的这本字典正文是按日期进行排序的,聚类索引只需要找到要检索的所有数据中的开头和结尾数据即可;而不像非聚集索引,必须先查到目录中查到每一项数据对应的页码,然后再根据页码查到具体内容。

 

posted @ 2021-02-21 22:20  云中翱翔的鹏鸟  阅读(168)  评论(0)    收藏  举报