日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
數(shù)據(jù)庫(kù)視圖命名的幾點(diǎn)建議(數(shù)據(jù)庫(kù)視圖的命名)

在進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)和開(kāi)發(fā)工作時(shí),數(shù)據(jù)庫(kù)視圖是一個(gè)重要的組成部分。它能夠方便地獲取必要的信息,使業(yè)務(wù)決策更加有效。然而,命名數(shù)據(jù)庫(kù)視圖并不是一件簡(jiǎn)單的工作。一個(gè)好的命名規(guī)范是必要的,因?yàn)樗軌驇椭鷶?shù)據(jù)庫(kù)管理員更加容易地理解和管理視圖。在這篇文章中,我們提供幾點(diǎn)建議,幫助您更好地命名數(shù)據(jù)庫(kù)視圖。

1. 明確視圖的目的

在命名視圖時(shí),我們應(yīng)該考慮到它在數(shù)據(jù)庫(kù)中的作用以及目的。這將有助于其他使用者理解這個(gè)視圖所代表的信息。例如,如果視圖是以產(chǎn)品為基礎(chǔ)的銷(xiāo)售統(tǒng)計(jì)數(shù)據(jù),那么視圖名稱(chēng)可以是”SalesByProduct”。這提供了明確的視圖目的,使得其他使用者更容易理解視圖的作用和內(nèi)容。

2. 使用描述性詞匯

視圖名應(yīng)當(dāng)使用描述性的詞匯來(lái)描述其中包含的數(shù)據(jù)。對(duì)于具有明確的含義的術(shù)語(yǔ)或領(lǐng)域特定的縮寫(xiě)詞,可以使用有效的代替詞或術(shù)語(yǔ),例如“客戶(hù)”而非“Cstmr”或“客戶(hù)信息”而非“CstmrInfo”。使用清晰的詞匯可以幫助同事們快速了解您的意圖,并允許他們理解視圖中的數(shù)據(jù)。

3. 遵循命名規(guī)范

為了確保所有人都能夠輕松地閱讀并理解視圖名稱(chēng),使用一致的命名規(guī)范非常重要。對(duì)于每個(gè)團(tuán)隊(duì)和組織,都應(yīng)該建立一套全面而嚴(yán)格的命名規(guī)范,以便在命名時(shí)始終保持一致性。這有助于降低混淆的發(fā)生,減少錯(cuò)誤。

4. 考慮重要性和優(yōu)先級(jí)

對(duì)于重要的視圖和具有優(yōu)先級(jí)的數(shù)據(jù),建議使用常見(jiàn)的縮寫(xiě)和助記符。盡量確保這些縮寫(xiě)和助記符是和領(lǐng)域有關(guān)的。這將有助于提高可讀性和可理解性,并且使其更容易被理解并且在通信中能夠快速而準(zhǔn)確地表達(dá)。例如,“Sls”是一個(gè)通用的縮寫(xiě),用于表示“銷(xiāo)售”,并且具有明確且易于識(shí)別的含義。

5. 避免歧義和沖突

在為視圖命名時(shí),必須確保沒(méi)有歧義或者沖突發(fā)生。不同視圖名稱(chēng)之間應(yīng)該有明顯的差異,以便用戶(hù)能夠輕松地進(jìn)行區(qū)分。如果需要,可以在名稱(chēng)中使用前綴或后綴來(lái)確保名稱(chēng)的獨(dú)特性。盡可能使用描述性且有意義的前綴或后綴。例如,“vw”前綴可以用于表示“視圖”,而“_data”后綴可以用于表示這是視圖中的數(shù)據(jù)內(nèi)容。

結(jié)論

在設(shè)計(jì)和開(kāi)發(fā)數(shù)據(jù)庫(kù)時(shí),數(shù)據(jù)庫(kù)視圖是一個(gè)重要的組成部分。一個(gè)好的視圖命名規(guī)范可以幫助其他使用者快速理解和管理視圖,并確保命名規(guī)范的一致性。在命名視圖時(shí),應(yīng)明確視圖的目的,使用描述性詞匯,遵循命名規(guī)范,考慮視圖的重要性和優(yōu)先級(jí),以及避免歧義和沖突。這個(gè)過(guò)程需要全員參與和協(xié)同努力,但這將建立一個(gè)高效的數(shù)據(jù)庫(kù)命名約定,有助于未來(lái)減少錯(cuò)誤和提高工作效率。

相關(guān)問(wèn)題拓展閱讀:

  • 數(shù)據(jù)庫(kù)如何創(chuàng)建視圖

數(shù)據(jù)庫(kù)如何創(chuàng)建視圖

創(chuàng)建視圖的理想步驟:

一般來(lái)說(shuō),視圖創(chuàng)建可以分為五步走:

之一步:先考慮select語(yǔ)句的編寫(xiě)。我們知道,視圖其實(shí)就是一個(gè)select語(yǔ)句的,所以,我們建立視圖的之一步,就是考慮這個(gè)select語(yǔ)句的如何編寫(xiě)。這個(gè)select語(yǔ)句編寫(xiě)的是否合理,執(zhí)行效率的高低直接影響著這個(gè)視圖的性能,在Select語(yǔ)句中,可能還會(huì)有格式的控制、內(nèi)容的編排等等。如在Select語(yǔ)句中,可以把一些字段合并成一個(gè)字段;也可以把相關(guān)的內(nèi)容進(jìn)行倒置等等。這些功能都是Select語(yǔ)句完成的。所以可以這么說(shuō),Select語(yǔ)句的編寫(xiě)是視圖建立的基礎(chǔ)。

第二步:對(duì)這個(gè)Select語(yǔ)句進(jìn)行測(cè)試。當(dāng)我們編寫(xiě)好Select語(yǔ)句之后,就需要在數(shù)據(jù)庫(kù)中執(zhí)行這條語(yǔ)句,看其能否查詢(xún)到我們想要的值。在對(duì)

Select語(yǔ)句進(jìn)行測(cè)試的時(shí)候,需要注意一個(gè)問(wèn)題,有時(shí)候Select查詢(xún)語(yǔ)句可以查到準(zhǔn)確的數(shù)據(jù),但是在以這條語(yǔ)句建立視圖的時(shí)候,可能就會(huì)通不過(guò)。

如在一些表之間的連接查詢(xún)的時(shí)候,如果兩個(gè)表中有個(gè)字段名相同,是可以的。因?yàn)樗麄兂俗侄蚊种?,還有表名一起來(lái)定義這個(gè)字段。如A.name與

B.name。這是不算重名的。但是,若在建立視圖的時(shí)候,這就會(huì)被認(rèn)為是重復(fù)的列明,需要對(duì)其中的一個(gè)列名進(jìn)行重定義。這一點(diǎn)在數(shù)據(jù)庫(kù)視圖建立的時(shí)候,

要特別的注意。

 第三步:考慮查詢(xún)結(jié)果的準(zhǔn)確性。通過(guò)查詢(xún)語(yǔ)句把我們想要的結(jié)果查詢(xún)出來(lái)后,我們就需要看看這個(gè)液稿肆結(jié)果是否滿(mǎn)足我們的需要。在這個(gè)過(guò)程中,我們主要注意兩

點(diǎn)。一是形式字段是否齊全。在一些應(yīng)用系統(tǒng)中,若數(shù)據(jù)庫(kù)的視圖要能夠被前臺(tái)的

應(yīng)用程序

調(diào)用的話(huà),則必須包含一些形式字段。如筆者以前在設(shè)計(jì)一個(gè)

ERP系統(tǒng)

的時(shí)候,若前臺(tái)系統(tǒng)要調(diào)用數(shù)據(jù)庫(kù)中的視圖的時(shí)候,必須包含記錄更新時(shí)間、更新者、記錄創(chuàng)建時(shí)間、創(chuàng)建者等相關(guān)信息。若缺乏這些信息的話(huà),則前臺(tái)

調(diào)用這張視圖的時(shí)候,就會(huì)出現(xiàn)錯(cuò)誤。故在考慮查詢(xún)結(jié)果準(zhǔn)確性的問(wèn)題的時(shí)候,就要考慮到前臺(tái)應(yīng)用程序的需要,看看這些形式字段是否齊全。二是實(shí)體內(nèi)容的完整

若字段內(nèi)容顯示不足的話(huà),則以后要添加字段的話(huà),會(huì)比較麻煩,有一定的工作量。所以在這個(gè)檢驗(yàn)的時(shí)候,需要根據(jù)視圖的實(shí)際功用,確定視圖需要顯示的內(nèi)容。

第四步:視圖的修飾。有時(shí)候,為了閱讀的方便,我們需要對(duì)查詢(xún)結(jié)果進(jìn)行一些修飾。如現(xiàn)在有兩張表,一張是員工基本信息表,這表中有員工姓名、員工職位編號(hào)

等等;另一張表是職位基本信息表,在這表中有職位編號(hào)、職位名稱(chēng)。我們希望在視圖中能夠如下顯示:“職位:?jiǎn)T工名字”,如

數(shù)據(jù)庫(kù)工程師

:Victor。也

就是說(shuō),把兩個(gè)字段合并起來(lái),并且在中間加入一個(gè)冒號(hào)敬敏。這些格式性的內(nèi)容都是在查詢(xún)的時(shí)候?qū)崿F(xiàn)的。所以,我們確認(rèn)查詢(xún)的結(jié)果沒(méi)有錯(cuò)誤之后,接下來(lái)就要確認(rèn)

格式問(wèn)題。若能夠在視圖中規(guī)范這些格式問(wèn)題,則前臺(tái)的程序設(shè)計(jì)就會(huì)相對(duì)來(lái)說(shuō)比較簡(jiǎn)單

 第五步:建立視圖。等到上面四步都確認(rèn)無(wú)誤后,我們就要根據(jù)上面鬧轎的查詢(xún)語(yǔ)句來(lái)建立視圖了。不過(guò)在這一步過(guò)程中,也有一些問(wèn)題需要注意。一是視圖名字的命

名規(guī)格。我們除了遵循數(shù)據(jù)庫(kù)的強(qiáng)制命名格式之外,如不能以數(shù)字開(kāi)頭等等,還需要遵循一些軟規(guī)則。如視圖更好能夠以V開(kāi)頭,跟基礎(chǔ)表進(jìn)行隔開(kāi);另外在視圖命

名中,能夠根據(jù)應(yīng)用模塊的不同,來(lái)進(jìn)行分類(lèi),并體現(xiàn)在視圖的名字中。這對(duì)于我們后續(xù)視圖的查找都具有非?,F(xiàn)實(shí)的意義。二是雖然可以在視圖中直接更新基礎(chǔ)

表,不過(guò),為了安全與數(shù)據(jù)統(tǒng)一的考慮,我們這些過(guò)來(lái)人一般都不建議通過(guò)視圖來(lái)直接更新基礎(chǔ)表中的數(shù)據(jù)。雖然數(shù)據(jù)庫(kù)提供了類(lèi)似的功能。若要更改相關(guān)數(shù)據(jù)的

話(huà),則直接去更改基礎(chǔ)表的內(nèi)容為好。在建立視圖的時(shí)候,默認(rèn)情況下是不能夠通過(guò)視圖直接更新基礎(chǔ)表。

視圖是一個(gè)虛擬表,其內(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)生成。

對(duì)其中所引用的基礎(chǔ)表來(lái)說(shuō),視圖的作用類(lèi)似于篩選。定義視圖的篩選可以來(lái)自當(dāng)前或其它數(shù)據(jù)庫(kù)的一個(gè)或多個(gè)表,或者其它視圖。通過(guò)視圖進(jìn)行查詢(xún)沒(méi)有任何限制,通過(guò)它們進(jìn)行數(shù)據(jù)修改時(shí)的限制也很少。

視圖是存儲(chǔ)在數(shù)據(jù)庫(kù)中的查詢(xún)的SQL 語(yǔ)句,它主要出于兩種原因:安全原因, 視圖可以隱藏一些數(shù)據(jù),如:社會(huì)保險(xiǎn)基金表,仿早可以用視圖只顯示姓名,地址,而不顯示社會(huì)保險(xiǎn)號(hào)和工資數(shù)等,另一原因是可使復(fù)雜的查詢(xún)易于理解和使用。這個(gè)視圖就像一個(gè)“窗口”,從中只能看到你想看的數(shù)據(jù)列。這意味著你可以在這個(gè)視圖上使用SELECT *,而你看到的將是你在視圖定義里給出的那些數(shù)據(jù)列:

既然視圖的定義是基于基本表的,哪為什么還要定義視圖呢?這是因?yàn)楹侠淼厥褂靡晥D能夠帶來(lái)許多好處:

1、 視圖能簡(jiǎn)化用戶(hù)操作

視圖機(jī)制使用戶(hù)可以將注意力集中在所關(guān)心地?cái)?shù)據(jù)上。如果這些數(shù)據(jù)不是直接來(lái)自基本表,則可以通過(guò)定義視圖,使數(shù)據(jù)庫(kù)看起來(lái)結(jié)構(gòu)簡(jiǎn)單、清晰,并且可以簡(jiǎn)化用戶(hù)的的數(shù)據(jù)查詢(xún)操作。例如,那些定義了若干張表連接的視圖,就將表與表之間的連接操作對(duì)用戶(hù)隱藏起來(lái)了。換句話(huà)說(shuō),用戶(hù)所作的只是對(duì)一個(gè)虛表的簡(jiǎn)單查詢(xún),而這個(gè)虛表是怎樣得來(lái)的,用戶(hù)無(wú)需了解。

2、 視圖使用戶(hù)能以多種角度看待同一數(shù)據(jù)

視圖機(jī)制能使不同的用戶(hù)以不同的方式看待同一數(shù)據(jù),當(dāng)許多不同種類(lèi)的用戶(hù)共享同一個(gè)數(shù)據(jù)庫(kù)時(shí),這種靈活性是非常必要的。

3、 視圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性

數(shù)據(jù)的物理獨(dú)立性是指用戶(hù)的應(yīng)用程序不依賴(lài)于數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)。數(shù)據(jù)的邏輯獨(dú)立性是指當(dāng)數(shù)據(jù)庫(kù)重構(gòu)造時(shí),如增加新的關(guān)系或?qū)υ械年P(guān)系增加新的字段,用戶(hù)的應(yīng)用程序不會(huì)受影響。層次數(shù)據(jù)庫(kù)和網(wǎng)狀數(shù)據(jù)庫(kù)一般能較好地支持?jǐn)?shù)據(jù)的物理獨(dú)立性,而對(duì)于邏輯獨(dú)立性則不能完全的支持。

在關(guān)許數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)的重構(gòu)造往往是不可避免的。重構(gòu)數(shù)據(jù)庫(kù)最常見(jiàn)的是將一個(gè)基本表“垂直”地分成多個(gè)基本表。例如:將學(xué)生關(guān)系Student(Sno,Sname,Ssex,Sage,Sdept),

分為SX(Sno,Sname,Sage)和SY(Sno,Ssex,Sdept)兩個(gè)關(guān)系。這時(shí)原表Student為SX表和SY表自然連接的結(jié)果。如果建立一個(gè)視圖Student:

  view plain  copy

CREATE VIEW Student(Sno,Sname,Ssex,Sage,Sdept)AS SELECT SX.Sno,SX.Sname,SY.Ssex,SX.Sage,SY.Sdept FROM SX,SY WHERE SX.Sno=SY.Sno;  

這樣盡管數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)改變了(變?yōu)镾X和SY兩個(gè)表了),但應(yīng)用程序不必修改,因?yàn)樾陆⒌囊晥D定義為用戶(hù)原來(lái)的關(guān)系,使用戶(hù)的外模式保持不變,用戶(hù)的應(yīng)用程序通過(guò)視圖仍然能夠查找數(shù)據(jù)。

當(dāng)然,視圖只能在一定程度上提供數(shù)據(jù)的邏輯獨(dú)立,比如由于視圖的更新是有條件的,因此應(yīng)用程序中修改數(shù)據(jù)的語(yǔ)句可能仍會(huì)因?yàn)榛颈順?gòu)造的改變而改變。

4、視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)

有了視圖機(jī)制,就可以在設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)時(shí),對(duì)不同的用戶(hù)定義不同的視圖,使機(jī)密數(shù)據(jù)不出現(xiàn)在不應(yīng)該看到這些數(shù)據(jù)的用戶(hù)視圖上。這樣視圖機(jī)制就自動(dòng)提供了對(duì)機(jī)密數(shù)據(jù)的安全保護(hù)功能。例如,Student表涉及全校15個(gè)院系學(xué)生數(shù)據(jù),可以在其上定義15個(gè)視圖,每個(gè)視圖只包含一個(gè)院系的學(xué)生數(shù)據(jù),并只允許每個(gè)院系的主任查詢(xún)和修改本原系學(xué)生視圖。

5、備跡雀適當(dāng)?shù)睦靡晥D可以更清晰地表達(dá)查詢(xún)

例如經(jīng)常需要執(zhí)行這樣的查詢(xún)“對(duì)每個(gè)學(xué)生找出他獲得更高成績(jī)的課程號(hào)”??梢韵榷x一個(gè)視圖,求出每個(gè)同學(xué)獲得的更高成績(jī):

  view plain  copy

CREATE VIEW VMGRADE  

AS  

SELECT Sno,MAX(Grade) Mgrade  

FROM SC  

GROUP BY Sno  

然后用如下的查詢(xún)語(yǔ)句完成查詢(xún):

  view plain  州陸copy

SELECT SC.Sno,Cno FROM SC,VMGRADE WHERE SC.Sno = VMGRADE.Sno AND SC.Grade = VMGRADE.Mgrade;  

二、數(shù)據(jù)準(zhǔn)備

1、員工表

  view plain  copy

CREATE TABLE t_employee(  

ID INT  PRIMARY KEY  AUTO_INCREMENT,  

NAME CHAR(30) NOT NULL,  

SEX  CHAR(2) NOT NULL,  

AGE INT NOT NULL,  

DEPARTMENT CHAR(10) NOT NULL,  

SALARY  INT NOT NULL,  

HOME CHAR(30),  

MARRY CHAR(2) NOT NULL DEFAULT  ‘否’,

HOBBY CHAR(30)  

);  

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

  view plain  copy

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’小紅’,’女’,20,’人事部’,’4000′,’廣東’,’否’,’網(wǎng)球’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’明日’,’女’,21,’人事部’,’9000′,’北京’,’否’,’網(wǎng)球’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’天天’,’男’,22,’研發(fā)部’,’8000′,’上海’,’否’,’音樂(lè)’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’大大’,’女’,23,’研發(fā)部’,’9000′,’重慶’,’否’,’無(wú)’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’王下’,’女’,24,’研發(fā)部’,’9000′,’四川’,’是’,’足球’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’無(wú)名’,’男’,25,’銷(xiāo)售部’,’6000′,’福建’,’否’,’游戲’);  

INSERT INTO learning.t_employee(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’不知道’,’女’,26,’銷(xiāo)售部’,’5000′,’山西’,’否’,’籃球’);  

插入的結(jié)果:

請(qǐng)點(diǎn)擊輸入圖片描述

然后再定義一張員工信息表:

  view plain  copy

create TABLE t_employee_detail(  

ID INT PRIMARY KEY,  

POS CHAR(10) NOT NULL,  

EXPERENCE CHAR(10) NOT NULL,  

CONSTRAINT `FK_ID` FOREIGN KEY(ID) REFERENCES t_employee(ID)  

)  

插入如下:

  view plain  copy

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(1,’人事管理’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(2,’人事招聘’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(3,’初級(jí)工程師’,’工作一年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(4,’中級(jí)工程師’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(5,’高級(jí)工程師’,’工作三年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(6,’銷(xiāo)售代表’,’工作二年’);  

INSERT INTO t_employee_detail(ID,POS,EXPERENCE) VALUES(7,’銷(xiāo)售員’,’工作一年’);  

內(nèi)容:

請(qǐng)點(diǎn)擊輸入圖片描述

三、使用案例

1. 語(yǔ)法

CREATE VIEW view_name AS select_statement CHECK OPTION>

通過(guò)該語(yǔ)句可以創(chuàng)建視圖,若給定了,則表示當(dāng)已具有同名的視圖時(shí),將覆蓋原視圖。select_statement是一個(gè)查詢(xún)語(yǔ)句,這個(gè)查詢(xún)語(yǔ)句可從表或其它的視圖中查 詢(xún)。視圖屬于數(shù)據(jù)庫(kù),因此需要指定數(shù)據(jù)庫(kù)的名稱(chēng),若未指定時(shí),表示在當(dāng)前的數(shù)據(jù)庫(kù)創(chuàng)建新視圖。

表和數(shù)據(jù)庫(kù)共享數(shù)據(jù)庫(kù)中相同的名稱(chēng)空間,因此,數(shù)據(jù)庫(kù)不能包含相同名稱(chēng)的表和視圖,并且,視圖的列名也不能重復(fù)。

在創(chuàng)建視圖前應(yīng)先看看是否有權(quán)限:

  view plain  copy

SELECT SELECT_priv,create_view_priv from mysql.user WHERE user=’root’  

Y表示有創(chuàng)建的權(quán)限

請(qǐng)點(diǎn)擊輸入圖片描述

2、單表上創(chuàng)建視圖

在員工表是創(chuàng)建視圖

  view plain  copy

CREATE VIEW V_VIEW1(ID, NAME, SEX, AGE,DEPARTMENT) AS SELECT ID, NAME, SEX, AGE,DEPARTMENT FROM learning.t_employee;  

然后是顯示內(nèi)容:

  view plain  copy

SELECT * FROM V_VIEW1  

請(qǐng)點(diǎn)擊輸入圖片描述

3、多表上創(chuàng)建視圖

  view plain  copy

CREATE VIEW V_VIEW2(ID, NAME, SEX, AGE,DEPARTMENT,POS,EXPERENCE) AS SELECT a.ID, a.NAME, a.SEX, a.AGE,a.DEPARTMENT,b.POS,b.EXPERENCE FROM learning.t_employee a,learning.t_employee_detail b WHERE a.ID=b.ID;  

顯示結(jié)果 

  view plain  copy

SELECT * FROM V_VIEW2  

請(qǐng)點(diǎn)擊輸入圖片描述

4、查看視圖

(1)DESCRIBE 命令

  view plain  copy

DESCRIBE V_VIEW2  

請(qǐng)點(diǎn)擊輸入圖片描述

(2)SHOW TABLE STATUS 

  view plain  copy

show TABLE status LIKE ‘V_VIEW2’  

請(qǐng)點(diǎn)擊輸入圖片描述

(3)SHOW CREATE view命令

  view plain  copy

show CREATE view V_VIEW2  

請(qǐng)點(diǎn)擊輸入圖片描述

5、修改視圖

(1)CREATE OR REPLACE命令

  view plain  copy

CREATE OR REPLACE VIEW V_VIEW1(ID, NAME, SEX) AS SELECT ID, NAME, SEX  FROM learning.t_employee;  

請(qǐng)點(diǎn)擊輸入圖片描述

(2) ALTER 命令

  view plain  copy

ALTER VIEW  V_VIEW1(ID, NAME) AS SELECT ID, NAME  FROM learning.t_employee;  

SELECT * FROM learning.v_view1  

請(qǐng)點(diǎn)擊輸入圖片描述

6、更新視圖

在MySQL中,更新視圖是指通過(guò)視圖來(lái)插入(INSERT)、更新(UPDATE)和刪除(DELETE)表中的數(shù)據(jù)。因?yàn)橐晥D是一個(gè)虛擬表,其中沒(méi)有數(shù)據(jù),所以通過(guò)視圖更新時(shí),都是轉(zhuǎn)換到基本表來(lái)更新。

更新視圖時(shí),只能更新權(quán)限范圍內(nèi)的數(shù)據(jù)。超出了范圍,就不能更新。

更新前:

請(qǐng)點(diǎn)擊輸入圖片描述

更新后:

  view plain  copy

UPDATE V_VIEW2 SET POS=’高級(jí)工程師’ WHERE NAME=’天天’  

請(qǐng)點(diǎn)擊輸入圖片描述

對(duì)應(yīng) 的真實(shí)表上的數(shù)據(jù)也發(fā)生改變 了

  view plain  copy

SELECT * FROM learning.t_employee_detail WHERE t_employee_detail.ID=3  

請(qǐng)點(diǎn)擊輸入圖片描述

不可更新的視圖:

某些視圖是可更新的。也就是說(shuō),可以在諸如UPDATE、DELETE或INSERT等語(yǔ)句中使用它們,以更新基表的內(nèi)容。對(duì)于可更新的視圖,在視圖中的行和基表中的行之間必須具有一對(duì)一的關(guān)系。還有一些特定的其他結(jié)構(gòu),這類(lèi)結(jié)構(gòu)會(huì)使得視圖不可更新。更具體地講,如果視圖包含下述結(jié)構(gòu)中的任何一種,那么它就是不可更新的:

· 聚合函數(shù)(SUM(), MIN(), MAX(), COUNT()等)。

· DISTINCT

· GROUP BY

· HAVING

· UNION或UNION ALL

· 位于選擇列表中的子查詢(xún)

· Join

· FROM子句中的不可更新視圖

· WHERE子句中的子查詢(xún),引用FROM子句中的表。

· 僅引用文字值(在該情況下,沒(méi)有要更新的基本表)。

· ALGORITHM = TEMPTABLE(使用臨時(shí)表總會(huì)使視圖成為不可更新的)。

注意

視圖中雖然可以更新數(shù)據(jù),但是有很多的限制。一般情況下,更好將視圖作為查詢(xún)數(shù)據(jù)的虛擬表,而不要通過(guò)視圖更新數(shù)據(jù)。因?yàn)?,使用視圖更新數(shù)據(jù)時(shí),如果沒(méi)有全面考慮在視圖中更新數(shù)據(jù)的限制,就可能會(huì)造成數(shù)據(jù)更新失敗。

CASCADED和LOCAL能不能決定視圖是否能更新?

WITH CHECK OPTION能不能決定視圖是否能更新?這兩個(gè)參數(shù)的基本定義如下:

LOCAL參數(shù)表示更新視圖時(shí)只要滿(mǎn)足該視圖本身定義的條件即可。

CASCADED參數(shù)表示更新視圖時(shí)需要滿(mǎn)足所有相關(guān)視圖和表的條件。沒(méi)有指明時(shí),該參數(shù)為默認(rèn)值。

With check option的用法:

(with check option對(duì)于沒(méi)有where條件的視圖不起作用的)

  view plain  copy

CREATE VIEW V_VIEW3(ID, NAME,SEX,AGE,DEPARTMENT,SALARY, HOME, MARRY, HOBBY) AS SELECT ID, NAME, SEX,AGE,DEPARTMENT,SALARY,HOME,MARRY,HOBBY FROM learning.t_employee WHERE DEPARTMENT=’人事部’ WITH LOCAL CHECK OPTION;  

表示只限定插入部門(mén)為人事部的人。

請(qǐng)點(diǎn)擊輸入圖片描述

然后插入一條:

  view plain  copy

INSERT INTO learning.V_VIEW3(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’會(huì)會(huì)會(huì)會(huì)’,’女’,20,’人事部’,’4500′,’廣東’,’否’,’網(wǎng)球’);  

看下結(jié)果:

  view plain  copy

SELECT * FROM learning.V_VIEW3  

請(qǐng)點(diǎn)擊輸入圖片描述

同時(shí)看真實(shí)表中的數(shù)據(jù):

請(qǐng)點(diǎn)擊輸入圖片描述

再來(lái)插入一條:

  view plain  copy

INSERT INTO learning.V_VIEW3(ID, NAME, SEX, AGE,DEPARTMENT, SALARY, HOME, MARRY, HOBBY) VALUES(NULL,’qqqqvasvas’,’女’,20,’研發(fā)部’,’4500′,’上?!?’否’,’網(wǎng)球’);  

請(qǐng)點(diǎn)擊輸入圖片描述

結(jié)果顯示插入失敗

對(duì)于with check option用法,總結(jié)如下:

通過(guò)有with check option選項(xiàng)的視圖操作基表(只是面對(duì)單表,對(duì)連接多表的視圖正在尋找答案),有以下結(jié)論: 插入后的數(shù)據(jù),通過(guò)視圖能夠查詢(xún)出來(lái)就符合WITH CHECK OPTION 否則就不符合;

首先視圖只操作它可以查詢(xún)出來(lái)的數(shù)據(jù),對(duì)于它查詢(xún)不出的數(shù)據(jù),即使基表有,也不可以通過(guò)視圖來(lái)操作。

1.對(duì)于update,有with check option,要保證update后,數(shù)據(jù)要被視圖查詢(xún)出來(lái)

2.對(duì)于delete,有無(wú)with check option都一樣

4.對(duì)于insert,有with check option,要保證insert后,數(shù)據(jù)要被視圖查詢(xún)出來(lái)

對(duì)于沒(méi)有where 子句的視圖,使用with check option是多余的

7、刪除視圖

  view plain  copy

DROP VIEW IF EXISTS 視圖名  

數(shù)據(jù)庫(kù)視圖的命名的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于數(shù)據(jù)庫(kù)視圖的命名,數(shù)據(jù)庫(kù)視圖命名的幾點(diǎn)建議,數(shù)據(jù)庫(kù)如何創(chuàng)建視圖的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


本文題目:數(shù)據(jù)庫(kù)視圖命名的幾點(diǎn)建議(數(shù)據(jù)庫(kù)視圖的命名)
網(wǎng)站路徑:http://www.dlmjj.cn/article/dhoeejs.html