1. 程式人生 > >檢視(VIEW)、索引(INDEX)

檢視(VIEW)、索引(INDEX)

1、檢視:表的一部分投影,也是資料庫中一個物件。(表的虛擬部分)

     作用:因為檢視中含有某表中的部分資料,不在檢視中的欄位有隱藏效果。相對來說,較安全。

     特點:檢視可以像表一樣進行增刪改查。

     建立檢視create view viewName as subQuery;

eg:將員工表中的10部門的資料封裝到一個檢視view_emp中
create view view_emp as select * from emp where deptno = 10;

     刪除檢視:drop view viewName;

     操作檢視通過檢視進行DML操作,一定會對錶有影響。 但通過表進行DML操作,可能會對檢視有影響。

eg:通過檢視,
插入資料 empno:9001,ename:'zs',部門號:10
插入資料 empno:9002,ename:'ls',部門號:20
insert into view_emp_deptno_10 values (9003,'zs',null,null,null,null,null,10);
insert into view_emp_deptno_10 (empno,ename,deptno)values (9004,'ls',20);

 eg:
查詢表emp,查詢檢視view_emp_deptno_10
select * from view_emp_deptno_10;

得出結論:如果操作了表中的記錄,並且此記錄存在檢視中,則檢視中會有影響,如果不存在檢視中則沒有影響。

    with check option:對檢視的一種檢查約束選項。

     如果在建立檢視有此選項時,表示只能對檢視DML操作可見資料。對檢視不可見的資料,是不可以通過檢視進行DML操作的。

     檢視的分類:

     簡單檢視:subQuery是一個表中的普通查詢語句。

     複雜檢視:subQuery是一個可以帶有分組函式的,或者關聯查詢的語句。複雜檢視不能對檢視進行DML操作,只能進行DQL操作

練習:建立一個複雜檢視view_emp_100,是每個部門的平均工資,最高工資,最低工資,及其部門號。
create view view_emp_100 as select avg(ifnull(sal,0)) avg_sal,max(sal) max_sal,
min(sal) min_sal,deptno from emp group by deptno;

     2、索引:目的是為了提高查詢速度。相當於一本書的目錄。

          特點:索引也是資料庫的物件,佔空間,每張表每個欄位都可以設定相應索引。

          優點:提高查詢速度。

          缺點:佔空間,每次進行DML操作時,資料庫都要自動重新維護索引,降低效率。雖然索引可以提高效率,但並不是索引越多越好。

          不需要索引的情況:

          *表中資料量比較小時,無需索引(因為直接查詢可以比索引更快)

          *當某個欄位值較少時,也不需要,如性別欄位只有'f','m'

           索引的建立:

練習1:給emp表中的empno建立索引。
create index index_emp_empno on emp(empno);
練習2:查詢empno為9003的資料。
select * from emp where empno=9003;

           索引的刪除:drop index indexName;