成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

php數(shù)據(jù)庫中創(chuàng)建視圖 數(shù)據(jù)庫中視圖的創(chuàng)建

給數(shù)據(jù)庫創(chuàng)建視圖的命令是

給數(shù)據(jù)庫創(chuàng)建視圖的命令是CREATEVIEW命令。根據(jù)查詢相關(guān)公開信息顯示:數(shù)據(jù)庫是“按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫”,是一個長期存儲在計算機內(nèi)的、有組織的、可共享的、統(tǒng)一管理的大量數(shù)據(jù)的集合,給數(shù)據(jù)庫創(chuàng)建視圖的命令是CREATEVIEW命令。

創(chuàng)新互聯(lián)建站服務(wù)項目包括達日網(wǎng)站建設(shè)、達日網(wǎng)站制作、達日網(wǎng)頁制作以及達日網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,達日網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到達日省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

數(shù)據(jù)庫怎樣創(chuàng)建視圖

sql數(shù)據(jù)庫創(chuàng)建視圖的方法:1、登錄“sql server managment”;2、在指定數(shù)據(jù)庫中選擇“視圖”,右鍵單擊選擇“新建視圖”選項;3、添加要關(guān)聯(lián)的表;4、默認(rèn)是主鍵關(guān)聯(lián)的,可以調(diào)整關(guān)聯(lián)字段;5、按“ctrl+s”保存即可

如何在thinkphp中直接操作數(shù)據(jù)庫中的視圖

視圖你可以理解為臨時表,里面通過sql語句進行了一些查詢,然后把結(jié)果返回給調(diào)用程序.

上圖就是一個視圖,你要是調(diào)用的話,就和數(shù)據(jù)庫的表一樣調(diào)用就行了,因為歸根結(jié)底視圖也就是個臨時表.下面是我粘貼的,網(wǎng)上也有這些.

1、插入數(shù)據(jù):insert into 視圖名(視圖列1,視圖列2) values(值1、值2)

2、更新數(shù)據(jù):update 視圖名 set 列名=值 where 更新條件

3、刪除數(shù)據(jù):delete from 視圖名 where 刪除條件

4、查詢數(shù)據(jù):select ?要查詢的列1,要查詢的列2 from 視圖名 where 查詢條件

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

視圖是一個虛擬表,其內(nèi)容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且在引用視圖時動態(tài)生成。

對其中所引用的基礎(chǔ)表來說,視圖的作用類似于篩選。定義視圖的篩選可以來自當(dāng)前或其它數(shù)據(jù)庫的一個或多個表,或者其它視圖。通過視圖進行查詢沒有任何限制,通過它們進行數(shù)據(jù)修改時的限制也很少。

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

既然視圖的定義是基于基本表的,哪為什么還要定義視圖呢?這是因為合理地使用視圖能夠帶來許多好處:

1、 視圖能簡化用戶操作

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

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

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

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

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

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

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

[sql]??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ù)庫的邏輯結(jié)構(gòu)改變了(變?yōu)镾X和SY兩個表了),但應(yīng)用程序不必修改,因為新建立的視圖定義為用戶原來的關(guān)系,使用戶的外模式保持不變,用戶的應(yīng)用程序通過視圖仍然能夠查找數(shù)據(jù)。

當(dāng)然,視圖只能在一定程度上提供數(shù)據(jù)的邏輯獨立,比如由于視圖的更新是有條件的,因此應(yīng)用程序中修改數(shù)據(jù)的語句可能仍會因為基本表構(gòu)造的改變而改變。

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

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

5、適當(dāng)?shù)睦靡晥D可以更清晰地表達查詢

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

[sql]??view plain??copy

CREATE?VIEW?VMGRADE

AS

SELECT?Sno,MAX(Grade)?Mgrade

FROM?SC

GROUP?BY?Sno

然后用如下的查詢語句完成查詢:

[sql]??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、員工表

[sql]??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ù):

[sql]??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','上海','否','音樂');

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

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,'無名','男',25,'銷售部','6000','福建','否','游戲');

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

插入的結(jié)果:

請點擊輸入圖片描述

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

[sql]??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)

)

插入如下:

[sql]??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,'初級工程師','工作一年');

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

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

INSERT?INTO?t_employee_detail(ID,POS,EXPERENCE)?VALUES(6,'銷售代表','工作二年');

INSERT?INTO?t_employee_detail(ID,POS,EXPERENCE)?VALUES(7,'銷售員','工作一年');

內(nèi)容:

請點擊輸入圖片描述

三、使用案例

1. 語法

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] VIEW [db_name.]view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]

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

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

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

[sql]??view plain??copy

SELECT?SELECT_priv,create_view_priv?from?mysql.user?WHERE?user='root'

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

請點擊輸入圖片描述

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

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

[sql]??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)容:

[sql]??view plain??copy

SELECT?*?FROM?V_VIEW1

請點擊輸入圖片描述

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

[sql]??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é)果?

[sql]??view plain??copy

SELECT?*?FROM?V_VIEW2

請點擊輸入圖片描述

4、查看視圖

(1)DESCRIBE 命令

[sql]??view plain??copy

DESCRIBE?V_VIEW2

請點擊輸入圖片描述

(2)SHOW TABLE STATUS?

[sql]??view plain??copy

show?TABLE?status?LIKE?'V_VIEW2'

請點擊輸入圖片描述

(3)SHOW CREATE view命令

[sql]??view plain??copy

show?CREATE?view?V_VIEW2

請點擊輸入圖片描述

5、修改視圖

(1)CREATE OR REPLACE命令

[sql]??view plain??copy

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

請點擊輸入圖片描述

(2) ALTER 命令

[sql]??view plain??copy

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

SELECT?*?FROM?learning.v_view1

請點擊輸入圖片描述

6、更新視圖

在MySQL中,更新視圖是指通過視圖來插入(INSERT)、更新(UPDATE)和刪除(DELETE)表中的數(shù)據(jù)。因為視圖是一個虛擬表,其中沒有數(shù)據(jù),所以通過視圖更新時,都是轉(zhuǎn)換到基本表來更新。

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

更新前:

請點擊輸入圖片描述

更新后:

[sql]??view plain??copy

UPDATE?V_VIEW2?SET?POS='高級工程師'?WHERE?NAME='天天'

請點擊輸入圖片描述

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

[sql]??view plain??copy

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

請點擊輸入圖片描述

不可更新的視圖:

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

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

· DISTINCT

· GROUP BY

· HAVING

· UNION或UNION ALL

· 位于選擇列表中的子查詢

· Join

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

· WHERE子句中的子查詢,引用FROM子句中的表。

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

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

注意

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

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

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

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

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

With check option的用法:

(with check option對于沒有where條件的視圖不起作用的)

[sql]??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;

表示只限定插入部門為人事部的人。

請點擊輸入圖片描述

然后插入一條:

[sql]??view plain??copy

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

看下結(jié)果:

[sql]??view plain??copy

SELECT?*?FROM?learning.V_VIEW3

請點擊輸入圖片描述

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

請點擊輸入圖片描述

再來插入一條:

[sql]??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)球');

請點擊輸入圖片描述

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

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

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

首先視圖只操作它可以查詢出來的數(shù)據(jù),對于它查詢不出的數(shù)據(jù),即使基表有,也不可以通過視圖來操作。

1.對于update,有with check option,要保證update后,數(shù)據(jù)要被視圖查詢出來

2.對于delete,有無with check option都一樣

4.對于insert,有with check option,要保證insert后,數(shù)據(jù)要被視圖查詢出來

對于沒有where 子句的視圖,使用with check option是多余的

7、刪除視圖

[sql]??view plain??copy

DROP?VIEW?IF?EXISTS?視圖名

當(dāng)前標(biāo)題:php數(shù)據(jù)庫中創(chuàng)建視圖 數(shù)據(jù)庫中視圖的創(chuàng)建
URL鏈接:http://jinyejixie.com/article34/dochhse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作網(wǎng)站建設(shè)、外貿(mào)建站、商城網(wǎng)站網(wǎng)頁設(shè)計公司、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計
巴南区| 通道| 嘉定区| 凤山市| 湘乡市| 琼结县| 慈溪市| 浦北县| 桂林市| 黑河市| 石柱| 略阳县| 略阳县| 六安市| 平阳县| 民和| 鹤壁市| 英山县| 北宁市| 布尔津县| 蓝田县| 龙山县| 榆社县| 浠水县| 横山县| 广宗县| 巢湖市| 博爱县| 璧山县| 贡嘎县| 托克逊县| 通许县| 额敏县| 万荣县| 济源市| 来凤县| 凭祥市| 息烽县| 岑溪市| 石门县| 天长市|