一、視圖
概述:mysql5.0版本之后主持視圖
視圖能夠方便開發熱源對數據進行增刪改查等操作
訪問視圖能夠根據相應的權限來限制用戶直接訪問數據庫的數據表
保障數據庫的安全
概念:視圖可以由數據庫中的一張表或者多張表生成,結構與數據表類似
視圖中的數據也是由一張表或者多張表的數據組合而成
可以對試圖中的數據進行增刪改查等操作,也可以修改視圖結構
視圖不會保障數據,數據真正保存在數據表中
視圖與數據表數據同步更新
視圖的優點:
操作簡單:可以經常使用的查詢操作定義為視圖
可以使開發人員不用關心
數據表的結構、表與表之間的關聯關系、數據表之間的業務邏輯和查詢條件
極大的簡化開發人員對數據庫的操作
數據安全:mysql根據權限將用戶對數據的訪問限制在某些數據的結果集上,而這些數據的結果集可以使用視圖來實現
不必直接查詢或操作數據表
保證了數據的安全性
數據獨立:
視圖的結構是創建之初確定的
當數據表的結構變化不會影響視圖的結構
如果數據表的字段發送變化,只需要簡單修改查詢語句
不會影響用戶對數據的查詢操作
適應靈活多變的需求:
當業務需求發送變化,修改數據表的結構工作量較大,可以使用視圖來減少改動的工作量
能夠分解復雜的查詢邏輯:數據庫中如果存在復雜的查詢邏輯,則可以將問題分解,創建多個視圖獲取數據,再將多個視圖結合起來,完成復雜查詢
1.創建視圖:create view view_name as select * from user; as后面可以跟上所有的SQL語句
第一步:創建數據庫create database max123
第二步:創建表:create table max123.user(id int);並使用一個數據庫
第三步:創建視圖:create view v1 as select * from user;
第四步: cd max123 查看ll -h v1表只有表結構沒有數據 不占用磁盤空間
第五步:登錄mysql select * from v1;有數據
mysql> show tables;
+------------------+
| Tables_in_max123 |
+------------------+
| user |
| v1 |
+------------------+
2 rows in set (0.00 sec)
mysql> desc v1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
查看視圖show create view v1\G
select * from information_schema.views limit 5\G;
修改視圖結構第一步:create or replace view v1 as select name,shell from user;
第二步:desc v1 查看表結構
第三步:select * from v1;
修改表中數據和視圖中的數據的變化:修改表數據和修改視圖數據表中數據和視圖表中數據都會改變
刪除視圖 drop view