diff --git "a/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220914\347\264\242\345\274\225.md" "b/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220914\347\264\242\345\274\225.md" index 9306ed57e4d0e27e6f6dd6cf6e0e2b4e7ede012d..f863a8ea5bc90fa96545990a93814da21c813fa4 100644 --- "a/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220914\347\264\242\345\274\225.md" +++ "b/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220914\347\264\242\345\274\225.md" @@ -45,9 +45,15 @@ **其它类型的索引**: -- 按照数据唯一性分类:唯一索引、非唯一索引 - 按键列个数区分:单列索引,多列索引 +- ```sql + --多列索引(最左原则) + create nonclustered index IX_Student_Sname + on Student(Sname,Sage,Ssex) + go + ``` + - 其他分类:索引视图、包含性列索引、全文索引、XML索引等 ****** @@ -79,6 +85,7 @@ create [unique][clustered][nonclustered] --索引类型 index IX_name --索引名称IX开头 on table_name(字段)--表示在哪张表的哪个列上 [with fillfactor = x]--填充因子(表示启用x%) +go ``` | 类型 | 解释 | @@ -118,6 +125,24 @@ with(index=IX_Student_Sname) where Sname like '李'% ``` +******* + +### 3.使用经验 + +- 索引信息存储在系统视图sys.indexes中 + +- ```sql + select * from sys.indexes + ``` + +- 可以使用系统存储过程:exec sp_helpindex查看当前表的索引 + +- ```sql + exec sp_helpindex 表名 + ``` + +- 填充因子:一页需要填充多少数据。(0和100%是一个意思) + ****** ## (四)创建索引的原则 @@ -134,15 +159,7 @@ where Sname like '李'% - 创建索引仅包含几个不同值的列 - 表中仅包含几行 -************** - -### 1.使用经验 - -- 索引信息存储在系统视图sys.indexes中 -- 可以使用系统存储过程:exec sp_helpindex查看当前表的索引 -- 填充因子:一页需要填充多少数据。 - -### 2.注意事项 +### 1.注意事项 - 使用聚集索引的查询效率要比非聚集索引的效率要高,但是如果需要频繁去改变聚集索引的值,写入性能并不高,因为需要移动对应数据的物理位置。 - 非聚集索引在查询的时候可以的话就避免二次查询,这样性能会大幅提升。 @@ -153,13 +170,8 @@ where Sname like '李'% - 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引 - 使用in导致索引失效 - - - 查询时减少使用*返回全部列,不要返回不需要的列 - 索引应该尽量小,在字节数小的列上建立索引(几个字节就好) - WHERE子句中有多个条件表达式时,包含索引列的表达式应置于其他条件表达式之前 - 避免在ORDER BY子句中使用表达式 - 根据业务数据发生频率,定期重新生成或重新组织索引,进行碎片整理 - -******* - diff --git "a/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220915\350\247\206\345\233\276.md" "b/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220915\350\247\206\345\233\276.md" new file mode 100644 index 0000000000000000000000000000000000000000..a69bde74f204d195e53e646eb696c0269e15eabc --- /dev/null +++ "b/15\345\220\264\346\230\216\346\235\260/\347\254\224\350\256\260/220915\350\247\206\345\233\276.md" @@ -0,0 +1,182 @@ +# 六、视图 + +**关系(Relations)** + +三种类型关系: + +- 表(Table)--基表,存储关系(Base Tables,Sorted relations) +- 视图(Views)--虚拟关系(Virtual relations)(不是物理存在的是虚拟的) +- 临时结果(Temporary results)--用于构建**子查询**的结果 + +****** + +**为什么需要视图?** + +- 不同的人员关注不同的数据(等级权限) +- 保证信息的安全性 + +## (一)什么是视图 + +**视图是一张虚拟表** + +- **表示一张表的部分数据或多张表的综合数据** +- 类似于内连接和等值连接查询出来的结果集 +- **其结构和数据是建立在对表的查询基础上** + +****** + +**视图中不存放数据** + +- **数据存放在视图所引用的原始表(基表)中**,基表中的数据发生变化,从视图中查询的数据也随之改变。 +- **一般不对其进行更新,删除,插入等操作** + +==**一个原始表,根据不同用户的不同需求,可以创建不同的视图**== + +****** + +**视图的用途** + +- 防止未经许可的用户访问敏感数据 +- 视图能够简化用户的操作 +- 视图使用户能以多种角度看待同一数据 +- 视图对重构数据库提供了一定的逻辑独立性 + +**** + +### 1.创建视图**注意事项** + +- 以 select * 方式创建的视图:可扩充性差,应尽可能避免 +- 视图名称必须遵循标识符的规则 +- 可以对其他视图创建视图,嵌套不得超过32层,视图最多可包含1024个字段 +- 不能将规则或default定义以视图相关联 +- 定义视图的查询不能包含compute子句、compute by子句或into关键字 +- 定义视图的查询不能包含 order by子句,除非在select语句的选择列表中还有一个top子句 + +*********** + +## (二)使用管理器创建视图 + +1. 双击打开数据库 + +2. 选择”视图“ + +3. 右键,”新建视图“ + +4. 添加表 + +5. 选择想显示的“列”:此时下面自动生成SQL语句 + +6. 点击”保存“->命名:视图一般以VW开头 如:VW_student + +7. 接着就可以查询该视图 + + ```sql + select * from VW_student + ``` + +******** + +## (三)使用SQL语句创建视图 + +语法: view[视图] + +```sql +create view vw_name[(别名1,别名2)] +as +