索引是一种特殊类型的数据库对象,保存数据库表中一列或多列的排序结果,因此有效使用索引可以提高数据的查询效率;视图是从一张表或多张表或视图中导出的表(虚表),为查看和存取数据提供了另外一种方法。
索引优点:加速数据检索;加速连接、order by、group by;查询优化器依赖于索引起作用;强制实行的唯一性。
索引缺点:创建索引花费的时间和占用的存储空间;减慢数据修改的速度(每次修改都要维护索引)。
视图优点:简化操作;定制数据;合并分割数据;安全性。
视图缺点:性能不高(DBMS处理查询时,先将其转换对底层源表的查询);数据修改受限。
6.1创建索引
语法格式:
create [unique] [clustered] [nonclustered] index index_name on [table | view] ( column [asc | desc],...) (默认为非簇索引,升序)
create unique clustered index pk_簇索引 on 职工备份(职工ID)
exec sp_helpindex 职工备份
其中,unique表示唯一索引,clustered指明索引为簇索引(主键),索引名为“pk_簇索引”,一个表只能有一个簇索引。
创建唯一索引
create unique nonclustered index ix_唯一索引 on 职工备份(职工号 asc)
创建普通索引
create index ix_普通索引 on 职工备份(工资 desc)
6.2编辑索引
删除普通索引语法结构:
drop index ‘表名.索引名 | 视图.索引名’,[,...n] 利用该语句可以同时删除多个普通索引
删除主键或唯一索引语法结构:
alter table 表名
drop constraint ‘主键|唯一索引名’
重命名索引
exec sp_rename ‘仓库备份.IX_仓库备份’,’modifyindex’,’index’
6.3创建视图
语法格式:
create view view_name as select_statement
create view db_sqlview6
as
select *,职工评语=
case
when 工资>2000 and 金额<1500 then ‘工资给多了’
when 工资<2000 and 金额>1500 then ‘工资给少了’
else
‘工资合理’
end
from db_sqlview4
6.4修改视图和删除视图
语法格式:
alter view view_name as select_statement
drop view view_name
6.5通过视图添加、更新和删除数据
只有来源于一张表的视图才可以添加、更新和删除数据,本质是其对应的数据库表,操作和表一样。
insert into db_myview(仓库号,城市,面积,创建时间) values(‘wh1’,’郑州’,888,’2008-8-8’)