真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Mysql之?dāng)?shù)據(jù)庫(kù)視圖

MySQL之?dāng)?shù)據(jù)庫(kù)視圖

創(chuàng)新互聯(lián)建站是專業(yè)的松北網(wǎng)站建設(shè)公司,松北接單;提供成都網(wǎng)站制作、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行松北網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

        數(shù)據(jù)庫(kù)中的視圖是一個(gè)虛擬表。同真實(shí)表一樣,包含行和列數(shù)據(jù),行和列的數(shù)據(jù)來自 定義視圖查詢所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成??梢愿綦x用戶與數(shù)據(jù)保持安全,且快速查詢數(shù)據(jù)。

        Mysql5.0后版本支持視圖,可以使用select、insert into、update、delete等。無(wú)論修改基本表還是視圖都對(duì)應(yīng)發(fā)生變化。

視圖的作用:

比直接從數(shù)據(jù)表中讀取相比:

1、簡(jiǎn)化了:看到的就是需要的。

2、安全性:通過視圖用戶只能查詢和修改他們所能看到的數(shù)據(jù)。其他數(shù)據(jù)看不到也取不到。

3、邏輯數(shù)據(jù)獨(dú)立性:視圖可以幫助用戶屏蔽真實(shí)表結(jié)構(gòu)變化帶來的影響。

創(chuàng)建視圖:

視圖包含了select查詢的結(jié)果,因此視圖的創(chuàng)建基于select語(yǔ)句和已存在的數(shù)據(jù)表,視圖可以建立在一張表上,也可以建立在多張表上。

語(yǔ)法:

create [or replace] [algorithm = {undefined | merge | temptable }]
view view_name [(column_list)]
as select_statment
[with [cascaded | local] check option]
create    # 創(chuàng)建視圖
replace   # 替換視圖
algorithm  # 視圖算法:undefined系統(tǒng)自己選擇算法;merge表示視圖語(yǔ)句與視圖定義合并,使視圖定義部分替代語(yǔ)句對(duì)應(yīng)部分;temptable表示將視圖結(jié)果存入臨時(shí)表,用臨時(shí)表來執(zhí)行語(yǔ)句。
view_name  # 視圖名稱
column_list     # 屬性列
select_statment   # select語(yǔ)句
[with [cascaded | local] check option]    # 表示權(quán)限范圍之內(nèi):cascaded表示滿足所有條件。local表示更新時(shí)滿足視圖本身?xiàng)l件即可。

單表創(chuàng)建視圖:

mysql> create database view;
mysql> use view;
mysql> create table t (quantity INT,price INT);
mysql> insert into t values(3,50);
mysql> create view view_t as select quantity,price,quantity * price from t;
mysql> select * from view_t;

# 默認(rèn)情況下創(chuàng)建的視圖和基本表的字段一樣,也可以通過指定視圖字段的名稱來創(chuàng)建視圖。

mysql> create view view_t2(qty,price,total) as select quantity,price,quantity * price from t;
mysql> select * from view_t2;

# view_t和view_t2兩個(gè)視圖中的字段名稱不同,但是數(shù)據(jù)卻是相同的。因此在使用視圖的時(shí)候,可能用戶根本就不需要了解表的機(jī)構(gòu),更接觸不到實(shí)際表中的數(shù)據(jù),從而保證了數(shù)據(jù)庫(kù)的安全。

在多表上創(chuàng)建視圖:

mysql> create database stud;
mysql> use stud;
mysql> create table student (id int,name char(20));
mysql> create table stu_info (id int,name char(20),addr char(20));
mysql> show tables;
mysql> insert into student values(1,'zhouyi'),(2,'zhaoer'),(3,'zhangsan');
mysql> insert into student values(1,'zhouyi','beijing'),(2,'zhaoer','shanghai'),(3,'zhangsan','chengdu');
mysql> select * from stu_info;
mysql> select * from student;
mysql> create view stu_glass(id,name,glass) as select student.id,student.name,stu_info.addr from student,stu_info where student.id=stu_info.id;
mysql> select * from stu_glass;

# 可以看出視圖id是student.id

# name是student.name

# glass是stu_info.addr

查看視圖:

mysql> show table status like 'stu_glass'\G;    # 全是NULL,Comment: VIEW表示虛表
mysql> desc stu_glass;    # 查看視圖基本信息
mysql> show create view stu_glass\G;     # 查看視圖創(chuàng)建信息
mysql> select * from information_schema.views\G;    # 查看詳細(xì)信息

修改視圖:

mysql> use view;
mysql> desc view_t;
mysql> alter view view_t as select quantity from t;

或者:
mysql> create or replace view view_t as select * from t;
mysql> desc view_t;

更新視圖:

mysql> alter view view_t as select quantity from t;  # 修改視圖和元數(shù)據(jù)不同
mysql> select * from view_t;
mysql> select * from t;
mysql> update view_t set quantity=5;
mysql> select * from view_t;
mysql> select * from view_t2;
mysql> select * from t;
# 全部更新

插入數(shù)據(jù):

mysql> insert into t values (3,5);    # 插入數(shù)據(jù)
mysql> select * from view_t;
mysql> select * from view_t2;
mysql> select * from t;        # 全部插入


mysql> delete from view_t2 where price=5;	# 刪除view_t2視圖中price=5的數(shù)據(jù);
mysql> select * from view_t2;
mysql> select * from t;
# 在view_t2中刪除price=5的操作最終是通過基本表中的相關(guān)記錄實(shí)現(xiàn)的。
注意:
當(dāng)視圖中包含有如下內(nèi)容時(shí),視圖的更新操作將不被執(zhí)行:
1、視圖中不包含基本表中被定義為非空的列;
2、在定義視圖的select語(yǔ)句后的字段列表中使用數(shù)學(xué)表達(dá)式;
3、在定義視圖的select語(yǔ)句后的字段列表中使用了聚合函數(shù);
4、在定義視圖的select語(yǔ)句中使用了distinct、union、top、group、having子句。

刪除視圖:

mysql> drop view if exists view_t2;
mysql> show create view view_t2; 
ERROR 1146 (42S02): Table 'view.view_t2' doesn't exist

分享題目:Mysql之?dāng)?shù)據(jù)庫(kù)視圖
分享鏈接:http://weahome.cn/article/jcjeoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部