MySQL之視圖(視圖的基本使用,使用規則)

視圖

視圖是一張虛擬表,其內容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數據。視圖的數據變化會影響到基表,基表的數據表花也會影響到視圖

基本使用

  • 創建視圖
create ciew 視圖名 as select語句
  • 案例
mysql> create view view_name as select ename,dname
       from emp,dept where emp.deptno=dept.deptno;
       
mysql> select * from view_name;
+--------+------------+
| ename  | dname      |
+--------+------------+
| SMITH  | RESEARCH   |
| ALLEN  | SALES      |
| WARD   | SALES      |
| JONES  | RESEARCH   |
| MARTIN | SALES      |
| BLAKE  | SALES      |
| CLARK  | ACCOUNTING |
| SCOTT  | RESEARCH   |
  • 修改了視圖,對基表數據有影響
mysql> update view_name set dname='sales' where ename='CLARK';

mysql> select * from emp where ename='CLARK';
+--------+-------+---------+------+---------------------+---------+------+--------+
| empno  | ename | job     | mgr  | hiredate            | sal     | comm | deptno |
+--------+-------+---------+------+---------------------+---------+------+--------+
| 007782 | CLARK | MANAGER | 7839 | 1981-06-09 00:00:00 | 2450.00 | NULL |     10 |
+--------+-------+---------+------+---------------------+---------+------+--------+
  • 修改了基表,對視圖有影響
mysql> update emp set deptno=20 where ename='JAMES';

mysql> select * from view_name where ename='JAMES';
+-------+----------+
| ename | dname    |
+-------+----------+
| JAMES | RESEARCH |
+-------+----------+
  • 刪除視圖
drop view 視圖名

視圖的規則和限制

  • 與表一樣,命名必須是唯一的(不能出現同名視圖或表名)
  • 創建視圖數目無限制,但是要考慮複雜查詢創建爲視圖之後的性能影響。
  • 視圖不能添加索引,也不能有關聯的觸發器或者默認值
  • 視圖可以提高安全性,必須具有足夠的訪問權限
  • order by可用在視圖中,但是如果從該視圖檢索數據select中含有order by ,那麼該視圖中的order by將被覆蓋。
  • 視圖可以和表一起使用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章