学习资料笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建视图和索引
※视图常常被称为虚表。在视图被创建以后,你可以对视图采用如下命令:select,insert,
update,delete。
※索引是与磁盘上数据的存储方式不同的另外一种组织数据的方法。◎使用视图
※视图并不占用数据库或表的物理空间。
※创建视图的语法如下:
CREATE VIEW
AS SELECT
FROM
※视图可以是多级的,也就是可以用视图来创建视图。但这会加大维护工作的复杂性。
1。列的重命名
注意:
当在视图中使用SQL的计算功能时,SQL会要求你给出一个虚字段的名字,这是可以理解,因为象
COUNT(*)或A VG(PAYMENT)是不能作为列名的。
2。SQL对视图的处理过程
※运行SELECT语句-->查找表-->未找到-->查找视图。
3。在SELECT语句中的使用约束
在视图的SELECT语句中:
※不能使用UNION操作。
※不能使用ORDER BY子句,但在视图中,使用GROUP BY子句可以有ORDER BY子句相同的功能。
4。在视图中修改数据
在视图创建以后,就可以用Insert,Update,Delete语句来更新,插入,删除视图中的数据。
5。在视图中修改数据的几个问题
※对于多表视图,不能使用DELETE语句。
※除非底层表的所有非空列都已经在视图中出现,否则,你不能使用Insert语句。有这个限制的原
因是SQL不知道该将什么数据插入到NOT NULL限制列中(没有在视图中出现的)。
※如果对一个归并的表格插入或更新记录,那么所有被更新的记录必须属于同一个物理表。
※如果你在创建视图时使用了DISTINCT语句,那么你就不能插入或更新这个视图中的记录。
※你不能更新视图中的虚拟列(它是用计算字段得到的)。
6。通用应用程序的视图
下面有几个视图需要完成的任务:
※提供了用户安全功能。
※可以进行单位换算。
※创建一个新的虚拟表格。
※简单的结构化复合查询。
-->视图与安全性
-->在单位换算中使用视图
-->在视图中使用简单的结构化复合查询
7。删除视图的语句
DROP VIEW view_name;
注意:该命令会使所有与DROP掉的视图相关联的视图不能正常运行。一些数据库系统甚至会将所有
与DROP掉的视图相关联的视图也删除掉。
◎使用索引
在SQL中使用索引有以下几个原因:
※在使用UNIQUE关键字时强制性地保证数据的完整性。
※可以容易地使用索引字段或其他字段进行排序。
※提高查询的执行速度。
1。什么是索引
创建索引的语法:
CREATE INDEX index_name
ON table_name(col1[,col2...]);
注意:在不同的数据库系统中,创建索引的语法差别很大。
删除索引的语法:
DROP INDEX index_name;
备注:当表被删除时,所有与表相关的索引也将被删除。
2。使用索引的技巧
※对于小表来说,使用索引对于性能不会有任何提高。
※当你的索引中有极多不同的数据和空值时,索引会使性能有极大的提高。
※当查询返回的数据很少时,索引可以优化你的查询(比较好的情况是少于全部数据的25%)。如
果要返回的数据很多时,索引会加大系统开销。
※索引会提高数据的返回速度,但是它使数据的更新速度变慢。如果要进行大量的更新操作,请先
删除索引,在执行完更新操作后,再恢复索引。
※索引会占用你的数据库空间,在设计数据库的可用空间时要考虑到。
※如果对字段的索引已经对两个表进行了归并操作,这一技术可以极大地提高归并的速度。
※大多数数据库系统不允许对视图创建索引。
※不要对经常需要更新或修改的字段创建索引,更新索引的开销会降低你所期望获得的性能。
※不要将索引和表存储在同一个驱动器上,分开存储会去掉访问的冲突,从而使结果返回的更快。
3。对更多的字段进行索引
这也叫复合索引。
4。在创建索引时使用UNIQUE关键字
复合索引通常使用UNIQUE关键字来防止有相同数据的多个记录多次出现。
在创建索引时,可以使用DESC关键字。
5。索引与归并
在归并查询中,对表中唯一属性的字段或用以归并操作的字段创建索引,可以大大比高归并的效率
。
6。群集(簇)的使用
当使用群集索引时,数据的表中的物理排列方式将会被修改。使用群集索引通常比传统的不使用群
集的索引速度要快。
许多数据库系统(如Sybase的SQL Server)只允许一个表有一个群集索引。
用于创建群集索引的字段常常是主关键字。
※用Sybase的Transact-SQL创建群集索引的例子:
CREATE UNIQUE CLUSTERED INDEX id_index ON book(id);
※在Oracle中,群集具有与众不同的概念。
群集是SQL的第三方特性。
Transact_SQL小手册
*******************Transact_SQL********************
--语句功能