SQL Server 索引(index) 和 视图(view) 的简单介绍和操作
--索引(index)和视图(view)--
--索引(index)--
--概述:
数据库中的索引类似于书籍的目录,他以指针形式包含了表中一列或几列组合的新顺序,实现表中数据库的逻辑排序。索引创建在数据表或者视图的字段上,生成索引页,存放于数据库中。
--分类:在SQL Server中,根据索引的作用和存储方式的不同,将索引分为聚集索引和非聚集索引两类。
1)聚集索引 :指数据库的物理顺序与被创建索引的字段顺序完全相同。同一个数据表最多只能创建一个聚集索引。默认情况下主键自动被创建为聚集索引。聚集索引通常被创建在经常被查询的字段上,以提高查询效率。
2)非聚集索引 :非聚集索引并不改变数据表的物理顺序,而是生成一个索引文件,用来存放索引顺序的指针地址。系统通过在索引文件中查找到的地址与数据表中的数据进行关联,进而显示查询结果。一张数据表最多允许创建254个非聚集索引,多列的复合索引最多允许创建在16个列上。
--作用:
索引的主要作用是用来提高查询效率。在数据库的查找过程中,对于无索引的数据表,系统会从表的第一行逐渐查找到最后一行,从而找出满足条件的记录信息;而对于设置了索引的数据表,系统会先使用索引查找到数据的存储位置,找到后再到数据表中找出对应数据记录的详细信息,但满足查找条件的记录后面出现了不满足条件的记录时,系统将不再继续查找,这样无需扫描全表,从而提高查询效率。
--创建索引--
注:由于约束属性的限制,数据表中字段被设置了主键约束和唯一约束时,将为主键约束设置唯一的聚集索引,为唯一约束设置唯一的非聚集索引。若要创建索引,可以使用管理器或者T-SQl语言。
create [unique] [ clustered| nonclustered] index 索引名 --create表示创建,index表示索引。“索引名”须符合命名规则,且不能与已存在的索引重名。可选项unique表示唯一属性,clustered表示聚集 属性,nonclustered表示非聚集属性。不加这两个关键字,默认为非聚集、非唯一索引。
on 表名 (字段名1,字段名2 ...)
例:(为 "商品管理数据库"中“商品信息表”的“商品类型名”字段创建一个名为“IX_商品类型表_商品类型名”的非聚集唯一索引)
use 商品管理数据库
go
create unique nonclustered
index IX_商品类型表_商品类型名
on 商品类型表(商品类型名)
--查看索引--
exec sp_helpindex 数据表名
例:(查看“商品管理数据库”的“商品类型表”的索引)
use 商品管理数据库
go
exec sp_helpindex 商品类型表
--修改索引--
1)修改索引名称:
exec sp_rename '数据表名.旧索引名','新索引名'
例:
use 商品管理数据库
exec sp_rename '商品类型表.IX_商品类型表_商品类型名','IX_商品类型名'
2)修改不依赖于约束的索引属性:
“对象资源管理器”——“服务器”——“数据库”——要修改的数据库——“表”——要修改的数据表——“索引”——右键单击要修改的索引——“索引属性”——去掉“唯一”属性的选项
3)修改依赖于约束的索引属性:
“对象资源管理器”——“服务器”——“数据库”——要修改的数据库——“表”——要修改的数据表——右键单击“设计”打开“表设计器”——右键单击“列名”选择“索引/键”——选中要修改的索引(主键约束) ,在右侧属性窗口中“表设计器”——“创建为聚集”属性——修改为“否”
--删除索引--
drop index 表名.索引名
例:(删除“商品管理数据库”的“商品类型表”中名为“IX_商品类型表”的索引)
use 商品管理数据库
go
drop index 商品类型表.IX_商品类型名
--视图(view)--
--概述:
视图是基于数据库中原始数据表(基表)而生成的虚拟表。其内容由查询定义,同真实的表一样,视图包含一系列带有名称的列和行数据。视图中的数据可以来源于一行或者多张基本表,也可以来源于基本表和视图的查询组合。由于视图中的数据不是真实存在而是源于基本表,因此基本表中的数据发生变化后,查看视图时视图中的查询结果也会随之发生变化。一般情况下不能通过视图修改表中数据信息,而要通过修改基本表实现。简单地说,视图即是把select语句的查询结果保存起来,以便日后使用。
--作用:1)简化操作。2)结果直观。3)提升安全。4)导出保存。
--创建视图--
create view 视图名 [with encryption] as select 查询语句 --create view 表示创建视图。with encryption 命令用来创建视图的代码或过程加密。as 关键字后面跟随满足select语句语法格式的查询语句。
例:(在“商品管理数据库”中查询出2012年11月2日进货商品的信息,要求显示出商品编号、商品名称、进货数量和进货日期字段信息,将结果创建到名为“v_商品_进货”的视图中)
use 商品管理数据库
go
create view vs_商品_进货成功
as
select 商品信息表.商品编号,商品名称,进货数量,进货日期,'进货成功' '备注' from 商品信息表,进货信息表 where 商品信息表.商品编号=进货信息表.商品编号
and 进货日期='2012-11-02' 例:(在“商品管理数据库”中查询出商品名称中带“酒”的商品的详细销售信息(显示商品编号、商品名称、销售单价、销售数量、销售金额、客户姓名和销售日期))
use 商品管理数据库
go
create view v_销售信息
as select 商品信息表.商品编号,商品名称,销售单价,销售数量,销售金额,客户姓名,销售日期
from 销售信息表
join 商品信息表 on 销售信息表.商品编号=商品信息表.商品编号
join 客户信息表 on 客户信息表.客户编号=销售信息表.客户编号
where 商品信息表.商品名称 like '%酒%'
理解例子
--查询视图--
1)查询视图结果
select * | [字段名列表] from 视图名 [where 条件表达式]
例:(查询“v_商品 _进货”视图中的商品进货信息)
select * from v_商品_进货成功
例:(查询“v_商品 _进货”视图中进货数量大于等于300的商品进货信息)
use 商品管理数据库
go
select * from v_商品_进货成功 where 进货数量>=300
2)查询视图创建信息
exec sp_helptext 视图名
例:(查看“商品管理数据库”中名为“V_商品_进货”的视图的创建信息)
use 商品管理数据库
go
exec sp_helptext v_商品_进货成功
--修改视图--
1)修改视图名
exec sp_rename 旧视图名,新视图名
例:
use 商品管理数据库
go
exec sp_rename v_商品_进货成功,v_商品信息_进货成功
2)修改视图内容
alter view 视图名 [with encryption] as select 查询语句 --alter view表示修改视图,“视图名 ”必须是已存在的视图名。其他命令与创建视图相同。
例:(将“商品管理数据库”中名为“v_商品_进货成功”的视图内容修改为查看2012年11月1日进货记录信息)
use 商品管理数据库
go
alter view v_商品_进货成功
as
select 商品信息表.商品编号,商品名称,进货数量,进货日期
from 商品信息表,进货信息表
where 商品信息表.商品编号=进货信息表.商品编号
and 进货日期='2012-11-01'
--删除视图--
drop view 视图名
例:(将“商品管理数据库”中名为“v_商品_进货成功”的视图删除)
use 商品管理数据库
go
drop view v_商品_进货成功
注:"--"可看成说明或者注释文本
SQL Server 索引(index) 和 视图(view) 的简单介绍和操作的更多相关文章
- sql server中关于批处理与脚本的简单介绍
1.批处理 批处理指的是包含一条或多条T-SQL语句的语句组,这组语句从应用程序一次性地发送到SQL Server服务器执行.SQL Server服务器将批处理语句编译成一个可执行单元(即执行计划), ...
- SQL Server数据库的操作流程和连接的简单介绍
学习ADO,免不了要跟数据库打交道,对于初学者来说,如果不整理一下整个流程,那么可能会出现很多的问题,下面简单的介绍数据库的操作流程. 1. 我们最终操作的对像是数据表,在操作数据表之前我们先 ...
- SQL Server索引 - 索引(物化)视图 <第九篇>
一.索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum( ...
- sql server 索引总结三
一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...
- SQL Server索引总结二
从CREATE开始 通过显式的CREATE INDEX命令 在创建约束时作为隐含的对象 随约束创建的隐含索引 当向表中添加如下两种约束之一时,就会创建隐含索引. 主键约束(聚集索引) 唯一约束(唯一索 ...
- 转: SQL Server索引的维护 - 索引碎片、填充因子
转:http://www.cnblogs.com/kissdodog/archive/2013/06/14/3135412.html 实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题 ...
- SQL Server索引 (原理、存储)聚集索引、非聚集索引、堆 <第一篇>
一.存储结构 在SQL Server中,有许多不同的可用排列规则选项. 二进制:按字符的数字表示形式排序(ASCII码中,用数字32表示空格,用68表示字母"D").因为所有内容都 ...
- SQL Server索引的维护 - 索引碎片、填充因子 <第三篇>
实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的. 对于非常小的表(比64KB小得多), ...
- 如何获得SQL Server索引使用情况
原文:如何获得SQL Server索引使用情况 原文出自: http://www.mssqltips.com/sqlservertip/1239/how-to-get-index-usage-info ...
随机推荐
- 使用sql语句创建修改SQL Server标识列(即自动增长列)
一.标识列的定义以及特点SQL Server中的标识列又称标识符列,习惯上又叫自增列.该种列具有以下三种特点:1.列的数据类型为不带小数的数值类型2.在进行插入(Insert)操作时,该列的值是由系统 ...
- Spring 事务注解 错误问题
碰到个问题,在一个springmvc项目中,设置好事务,然后在service上添加@Transactional注解,只要一添加这个注解,该service就无法被spring创建成功, error cr ...
- 大气散射 GPU Gems2 Chapter 16. Accurate Atmospheric Scattering
效果图 这次先上效果图*4 散射概念 光线击中空气中的微小颗粒后的偏折导致了光线的散射.我们看到的阳光应该是由视线上的散射在视线方向上的集合.如果由地面的反射,还要加上经过散射计算的地面反射. Ray ...
- CodeSmith模板
重复性的工作交给代码生成器就好,这里分享几套模板, 1.从数据库抓取字段,生成Table元素,这个在web开发中很有用 <%-- Name: Author: Description: --%&g ...
- java日期处理SimpleDateFormat等
1.mysql数据库中有这样一个表: mysql> select * from test_table;+----------+---------------------+| username | ...
- 反人类的MyEclipse之-调整JavaScript代码-花括号换行显示
然后将除最后一项外所有的都勾选为Next Line
- 使用canvas编写环形图.
原理使用canvas画图: 第一步:画一个大圆 第二部:画一个扇形 第三部:画一个小圆 相互叠加. 最终效果: 现在上代码: (function($){ $.fn.drawPic=function(o ...
- App开放接口api安全性的设计与实现
前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证, 那么这就需要用户提供一些信息,比如用户名密码等 ...
- VC非法内存值的判断
0xcdcdcdcd - Created but not initialised0xdddddddd - Deleted0xfeeefeee - Freed memory set by NT's he ...
- mysql分组函数
组函数针对的是指定字段的非空值.注意:where子句中不能出现组函数!!! avg() 平均值(只能针对数值型 ) max() 最大值(不限制类型) min() 最小值(不限制类型) ...