日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL视图附带例子详解(小白都能懂哦)

發(fā)布時(shí)間:2024/10/14 数据库 144 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL视图附带例子详解(小白都能懂哦) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.視圖的概念
2.視圖的應(yīng)用場(chǎng)景
3.視圖的特點(diǎn)
4.創(chuàng)建視圖的格式
5.視圖的修改
6.視圖的刪除
7.視圖的查看
8.視圖的更新
9.視圖和表格的對(duì)比
10.視圖的優(yōu)缺點(diǎn)

1.視圖的概念

視圖是一種虛擬的表,和普通表用法一樣,不是在內(nèi)存中單獨(dú)開(kāi)辟一片空間(我們正常的表都是以儲(chǔ)存的數(shù)據(jù)值形式存在,就是會(huì)單獨(dú)在內(nèi)存里邊開(kāi)辟一塊空間),并且是在使用視圖的時(shí)候動(dòng)態(tài)生成的,只保存了sql邏輯,不保存查詢結(jié)果

2.視圖的應(yīng)用場(chǎng)景

重用SQL語(yǔ)句;
1.簡(jiǎn)化復(fù)雜的SQL操作。在編寫(xiě)查詢后,可以方便的重用它而不必知道它的基本查詢細(xì)節(jié);
2.使用表的組成部分而不是整個(gè)表;
3.保護(hù)數(shù)據(jù)??梢越o用戶授予表的特定部分的訪問(wèn)權(quán)限而不是整個(gè)表的訪問(wèn)權(quán)限;
4.更改數(shù)據(jù)格式和表示。視圖可返回與底層表的表示和格式不同的數(shù)據(jù)。

3.視圖的特點(diǎn)

1.視圖的列可以來(lái)自不同的表,是表的抽象和在邏輯意義上建立的新關(guān)系。
2.視圖是由基本表(實(shí)表)產(chǎn)生的表(虛表)。
3.視圖的建立和刪除不影響基本表。
4.對(duì)視圖內(nèi)容的更新(添加,刪除和修改)直接影響基本表。
5.當(dāng)視圖來(lái)自多個(gè)基本表時(shí),不允許添加和刪除數(shù)據(jù)。

4.創(chuàng)建視圖的格式

create view + 視圖名(自定義) + as select查詢語(yǔ)句

舉個(gè)例子,假如有一個(gè)學(xué)生信息表student,還有一個(gè)學(xué)生文理科狀況表aas如圖
student:

aas:

我們現(xiàn)在想要查看女生的姓名性別文理科狀況,然后再查看選理科的同學(xué)的姓名性別文理科狀況
按照正常寫(xiě)法:
1.查看女生的姓名性別文理科狀況:

SELECT sname,ssex,subject from student a join aas b on a.as_id=b.id where ssex=“女”

2.查看選理科的同學(xué)的姓名性別文理科狀況

SELECT sname,ssex,subject from student a join aas b on a.as_id=b.id where b.subject=“理科”

但是我們?nèi)绻靡晥D的話:
我們先把學(xué)生的姓名姓名文理科狀況組合成一張視圖:

create view abc as select sname,ssex,subject from student a join aas b on a.as_id=b.id

1.查看女生的姓名性別文理科狀況

select * from abc where ssex=“女”

2.查看選理科的同學(xué)的姓名性別文理科狀況

select *from abc where subject=“理科”

abc是視圖的名字

這么看起來(lái)好像視圖比普通的查詢少不了多少代碼,但是當(dāng)我們用到視圖部分的語(yǔ)句越多的時(shí)候,那么視圖的優(yōu)勢(shì)就越明顯,而且越簡(jiǎn)便

5.視圖的修改

第一種方式:

create or replace vive +視圖名 as + 查詢語(yǔ)句

語(yǔ)義是若該視圖名不存在那么重新創(chuàng)建一個(gè)視圖,如果存在那么新的查詢結(jié)果就會(huì)覆蓋原始數(shù)據(jù)

那么我們按照第四點(diǎn)提供的兩個(gè)表和一張名為abc的視圖舉例
我們把視圖改成只有學(xué)生的姓名和文理科:

create or replace view abc as select sname,subject from student a join aas b on a.as_id=b.id

然后視圖abc就變成了:

第二種方式:

alter view + 視圖名 as +查詢語(yǔ)句

表示的意思是查詢語(yǔ)句覆蓋已知視圖

6.視圖的刪除

drop view 視圖1,視圖2...

7.視圖的查看

desc +視圖名
或者
show create vive +視圖名

8.視圖的更新

視圖的更新是對(duì)視圖進(jìn)行增刪改,視圖的增刪改會(huì)對(duì)原圖進(jìn)行同樣的更改,視圖的可更新性和視圖的查詢有定義關(guān)系

以下的情況是不能更新:

1.包含以下關(guān)鍵字的sql語(yǔ)句:分組函數(shù),distinct,group by,having,union或union all
2.常量視圖(常量視圖代表查詢一個(gè)已經(jīng)查找好的表格或者常量等)
3.select中包含子查詢
4.join
5.from一個(gè)不能更新的視圖
6.where子句的子查詢引用了from子句中的表

注意這里的不能更新不代表增刪改的功能都不能使用,可能只具有其中一種或者幾種功能,但是統(tǒng)稱不能更新,一般的視圖的更新用的比較少

9.視圖和表格的對(duì)比

1.創(chuàng)建方式不同
2.表格占據(jù)物理空間視圖不占據(jù)物理空間(只是沒(méi)有為視圖數(shù)據(jù)沒(méi)開(kāi)辟空間進(jìn)行存儲(chǔ),但是為視圖的邏輯語(yǔ)句開(kāi)辟空間存儲(chǔ),這種說(shuō)法只是針對(duì)視圖和表的數(shù)據(jù)而言)
3.表能進(jìn)行增刪改但是視圖一般是不行的

10視圖的優(yōu)缺點(diǎn)

10.1視圖的優(yōu)點(diǎn)

1.查詢簡(jiǎn)單化。視圖能簡(jiǎn)化用戶的操作
2.數(shù)據(jù)安全性。視圖使用戶能以多種角度看待同一數(shù)據(jù),能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)
3.邏輯數(shù)據(jù)獨(dú)立性。視圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性

10.2視圖的缺點(diǎn)

1.性能。數(shù)據(jù)庫(kù)必須把視圖的查詢轉(zhuǎn)化成對(duì)基本表的查詢,如果這個(gè)視圖是由一個(gè)復(fù)雜的多表查詢所定義,那么,即使是視圖的一個(gè)簡(jiǎn)單查詢,數(shù)據(jù)庫(kù)也把它變成一個(gè)復(fù)雜的結(jié)合體,需要花費(fèi)一定的時(shí)間。
2.修改限制。當(dāng)用戶試圖修改視圖的某些行時(shí),數(shù)據(jù)庫(kù)必須把它轉(zhuǎn)化為對(duì)基本表的某些行的修改。事實(shí)上,當(dāng)從視圖中插入或者刪除時(shí),情況也是這樣。對(duì)于簡(jiǎn)單視圖來(lái)說(shuō),這是很方便的,但是,對(duì)于比較復(fù)雜的視圖,可能是不可修改的

總結(jié)

以上是生活随笔為你收集整理的MySQL视图附带例子详解(小白都能懂哦)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。