您好,登錄后才能下訂單哦!
下文給大家?guī)?lái)mysql視圖知識(shí)有關(guān)內(nèi)容,相信大家一定看過(guò)類(lèi)似的文章。我們給大家?guī)?lái)的有何不同呢?一起來(lái)看看正文部分吧,相信看完mysql視圖知識(shí)你一定會(huì)有所收獲。
視圖是指計(jì)算機(jī)數(shù)據(jù)庫(kù)中的虛擬表,其內(nèi)容由查詢(xún)定義。同真實(shí)的表一樣,視圖包含一系列帶有名稱(chēng)的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫(kù)中以存儲(chǔ)的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來(lái)自由定義視圖的查詢(xún)所引用的表,并且在引用視圖時(shí)動(dòng)態(tài)生成。詳見(jiàn) 視圖 百度百科,其對(duì)視圖的分類(lèi)和優(yōu)點(diǎn)有詳細(xì)的解釋此處不再贅述。
create view view_name as select 列1,列2, ...... from 表名
我們可以把視圖理解為一個(gè)預(yù)先定義好的子查詢(xún),比如上面的語(yǔ)句中,如果我們把create 換成select那就相當(dāng)好理解了。
select * from select col_1,col_2 from tbl_1 as temp
而事實(shí)上,視圖的工作原理與這種子查詢(xún)產(chǎn)生的臨時(shí)表是一樣的,只有在用到視圖的時(shí)候,才會(huì)根據(jù)原表去動(dòng)態(tài)生成虛擬表。所以視圖的數(shù)據(jù)會(huì)根據(jù)原表的數(shù)據(jù)變動(dòng)而變動(dòng)。
`create table employee (
id int primary key auto_increment,
name varchar(20) not null,
salary decimal(10,2) not null default 1000
);
create view v_emp as select id,name from employee;`
mysql> desc v_emp;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | | 0 | |
| name | varchar(20) | NO | | NULL | |
+-------+-------------+------+-----+---------+-------+
可以看到我們創(chuàng)建的視圖v_emp,成功的隱藏了員工的工資字段salary
drop view [if exists] view_name
alter view v_view_name as select * from tbl_1
alter view v_view_name (col_1,col_2...) as select a,b from tbl_1
這樣不但可以對(duì)外隱藏表名還可以隱藏字段名。
視圖對(duì)查詢(xún)操作支持的最好,對(duì)增刪改有一定的限制,比如多表聯(lián)合組成的視圖,而由單個(gè)表創(chuàng)建出的視圖在插入數(shù)據(jù)時(shí),視圖中未包含的原表中的字段或者有默認(rèn)值,或者允許為空。這樣才可以保證操作成功。
對(duì)于上文關(guān)于mysql視圖知識(shí),大家覺(jué)得是自己想要的嗎?如果想要了解更多相關(guān),可以繼續(xù)關(guān)注我們的行業(yè)資訊板塊。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。