国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MySQL視圖】視圖處理算法 , 創(chuàng)建 {單表,多表,視圖中創(chuàng)建視圖},查看,和修改。最詳細(xì)來這里!

這篇具有很好參考價(jià)值的文章主要介紹了【MySQL視圖】視圖處理算法 , 創(chuàng)建 {單表,多表,視圖中創(chuàng)建視圖},查看,和修改。最詳細(xì)來這里!。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

視圖是存儲(chǔ),在調(diào)用的時(shí)候產(chǎn)生一個(gè)結(jié)果集的查詢。一個(gè)視圖作為一個(gè)虛擬表。

簡(jiǎn)單理解:視圖是一種 虛擬表 ,本身是 不具有數(shù)據(jù) 的,占用很少的內(nèi)存空間,它是 SQL 中的一個(gè)重要概念。視圖建立在已有表的基礎(chǔ)上, 視圖賴以建立的這些表稱為基表。

?

前言

?視圖優(yōu)點(diǎn)
1. 操作簡(jiǎn)單

將經(jīng)常使用的查詢操作定義為視圖,可以使開發(fā)人員不需要關(guān)心視圖對(duì)應(yīng)的數(shù)據(jù)表的結(jié)構(gòu)、表與表之間的關(guān)聯(lián)關(guān)系,也不需要關(guān)心數(shù)據(jù)表之間的業(yè)務(wù)邏輯和查詢條件,而只需要簡(jiǎn)單地操作視圖即可,極大簡(jiǎn)化了開發(fā)人員對(duì)數(shù)據(jù)庫(kù)的操作。

2. 減少數(shù)據(jù)冗余

視圖跟實(shí)際數(shù)據(jù)表不一樣,它存儲(chǔ)的是查詢語(yǔ)句。所以,在使用的時(shí)候,我們要通過定義視圖的查詢語(yǔ)句來獲取結(jié)果集。而視圖本身不存儲(chǔ)數(shù)據(jù),不占用數(shù)據(jù)存儲(chǔ)的資源,減少了數(shù)據(jù)冗余。

3. 數(shù)據(jù)安全

MySQL將用戶對(duì)數(shù)據(jù)的 訪問限制 在某些數(shù)據(jù)的結(jié)果集上,而這些數(shù)據(jù)的結(jié)果集可以使用視圖來實(shí)現(xiàn)。用戶不必直接查詢或操作數(shù)據(jù)表。這也可以理解為視圖具有 隔離性 。視圖相當(dāng)于在用戶和實(shí)際的數(shù)據(jù)表之間加了一層虛擬表。同時(shí),MySQL可以根據(jù)權(quán)限將用戶對(duì)數(shù)據(jù)的訪問限制在某些視圖上,用戶不需要查詢數(shù)據(jù)表,可以直接通過視圖獲取數(shù)據(jù)表中的信息。這在一定程度上保障了數(shù)據(jù)表中數(shù)據(jù)的安全性。

4. 適應(yīng)靈活多變的需求

當(dāng)業(yè)務(wù)系統(tǒng)的需求發(fā)生變化后,如果需要改動(dòng)數(shù)據(jù)表的結(jié)構(gòu),則工作量相對(duì)較大,可以使用視圖來減少改動(dòng)的工作量。這種方式在實(shí)際工作中使用得比較多。

5. 能夠分解復(fù)雜的查詢邏輯

數(shù)據(jù)庫(kù)中如果存在復(fù)雜的查詢邏輯,則可以將問題進(jìn)行分解,創(chuàng)建多個(gè)視圖獲取數(shù)據(jù),再將創(chuàng)建的多個(gè)視圖結(jié)合起來,完成復(fù)雜的查詢邏輯。

?


一、創(chuàng)建視圖{單表,多表,視圖中創(chuàng)建視圖}

這個(gè)CREATE VIEW語(yǔ)句創(chuàng)建新的視圖。改變視圖的定義或刪除視圖,使用ALTER VIEW,或DROP VIEW

一個(gè)視圖可以從多種創(chuàng)建SELECT聲明.它可以指基表或其他視圖。它可以使用聯(lián)接,UNION和子查詢。theSELECT甚至不需要參考任何表。下面的示例定義一個(gè)視圖,選擇從另一桌兩列,以及從這些列的計(jì)算表達(dá)式:

CREATE [OR REPLACE]
[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW 視圖名稱 [(字段列表)]
AS 查詢語(yǔ)句
[WITH [CASCADED|LOCAL] CHECK OPTION]

?簡(jiǎn)單表達(dá)式

CREATE VIEW 視圖名稱
AS 查詢語(yǔ)句

?創(chuàng)建多表聯(lián)合視圖:

就是在視圖中的查詢語(yǔ)句添加多表查詢,自然連接或者USING連接,函數(shù)等。

類如:WHERE

CREATE VIEW empview
AS
SELECT employee_id emp_id,last_name NAME,department_name
FROM employees e,departments d
WHERE e.department_id = d.department_id;

左外連接

CREATE VIEW emp_dept
AS
SELECT ename,dname
FROM t_employee LEFT JOIN t_department
ON t_employee.did = t_department.did;

?聚合函數(shù)

CREATE VIEW dept_sum_vu
(name, minsal, maxsal, avgsal)
AS
SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary)
FROM employees e, departments d
WHERE e.department_id = d.department_id
GROUP BY d.department_name;

?利用視圖對(duì)數(shù)據(jù)進(jìn)行格式化:

我們經(jīng)常需要輸出某個(gè)格式的內(nèi)容,比如我們想輸出員工姓名和對(duì)應(yīng)的部門名,對(duì)應(yīng)格式為
emp_name(department_name),就可以使用視圖來完成數(shù)據(jù)格式化的操作:

CREATE VIEW emp_depart
AS
SELECT CONCAT(last_name,'(',department_name,')') AS emp_dept
FROM employees e JOIN departments d
WHERE e.department_id = d.department_id

?運(yùn)行后:

【MySQL視圖】視圖處理算法 , 創(chuàng)建 {單表,多表,視圖中創(chuàng)建視圖},查看,和修改。最詳細(xì)來這里!

二、查看視圖

????????語(yǔ)法1:查看數(shù)據(jù)庫(kù)的表對(duì)象、視圖對(duì)象

SHOW TABLES;

????????語(yǔ)法2:查看視圖的結(jié)構(gòu)

DESC / DESCRIBE 視圖名稱;

????????語(yǔ)法3:查看視圖的屬性信息

# 查看視圖信息(顯示數(shù)據(jù)表的存儲(chǔ)引擎、版本、數(shù)據(jù)行數(shù)和數(shù)據(jù)大小等)
SHOW TABLE STATUS LIKE '視圖名稱'\G

1.更新視圖的數(shù)據(jù)

*一般情況*

MySQL支持使用INSERT、UPDATE和DELETE語(yǔ)句對(duì)視圖中的數(shù)據(jù)進(jìn)行插入、更新和刪除操作。當(dāng)視圖中的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)表中的數(shù)據(jù)也會(huì)發(fā)生變化,反之亦然。

更新和插入的觀點(diǎn):

一些視圖是可更新的,對(duì)它們的引用可以用來指定要更新的表中數(shù)據(jù)變化報(bào)表。那就是,你可以使用它們的報(bào)表等UPDATE,DELETE,或INSERT更新基礎(chǔ)表的內(nèi)容。派生表、公用表表達(dá)式也可以在多個(gè)表中指定的UPDATEDELETE報(bào)表,但只能用于讀取數(shù)據(jù)指定要更新或刪除的行。一般來說,視圖的引用必須是可更新的,這意味著他們可以合并和不實(shí)。復(fù)合視圖有更復(fù)雜的規(guī)則。

一個(gè)視圖是可更新的,必須有一個(gè)一對(duì)一的關(guān)系排在視圖和基礎(chǔ)表中的行。也有一些其他的結(jié)構(gòu),使視圖nonupdatable。更具體的,如果它包含下列視圖是不可更新的:

  • 聚合函數(shù)和窗口函數(shù)(SUM(),MIN(),MAX(),COUNT()我知道,和四)

  • DISTINCT

  • GROUP BY

  • HAVING

  • UNIONUNION ALL

  • 選擇列表中的子查詢

    獨(dú)立的子查詢選擇列表中的失敗INSERT,但都好UPDATE,DELETE。相關(guān)子查詢的選擇列表中,沒有數(shù)據(jù)變化報(bào)表允許。

  • 某些連接(見附加在本節(jié)稍后加入討論)

  • 參考在nonupdatable觀FROM條款

  • 子查詢中的WHERE條款,是指一個(gè)表中條款

  • 僅指文字值(在這種情況下,沒有基本表的更新)

  • ALGORITHM = TEMPTABLE(使用一個(gè)臨時(shí)表總是認(rèn)為nonupdatable)

  • 多個(gè)引用任何一個(gè)基表列(失敗INSERT,好了UPDATE,DELETE

  • 對(duì)于多表視圖是可更新,它有時(shí)是可能的,假設(shè)它可以處理的MERGE算法.對(duì)于這個(gè)工作,視圖必須使用內(nèi)部聯(lián)接(不是外部聯(lián)接或UNION)。另外,在視圖定義中只有一個(gè)表可以被更新,所以配置條款名稱僅列必須從一個(gè)視圖中的表。視圖的使用UNION ALL不允許他們雖然在理論上可能更新。

  • 關(guān)于嵌入性(被更新與INSERT語(yǔ)句),如果它也滿足這些額外的要求可更新視圖的視圖列插入:

  • 不能有重復(fù)的視圖列的名字。

  • 視圖必須包含在基表中,沒有默認(rèn)值的所有列。

  • 視圖的列必須是簡(jiǎn)單的列引用。

2.修改、刪除視圖

修改視圖
方式1:使用CREATE OR REPLACE VIEW 子句修改視圖

CREATE OR REPLACE VIEW empvu80
(id_number, name, sal, department_id)
AS
SELECT employee_id, first_name || ' ' || last_name, salary, department_id
FROM employees
WHERE department_id = 80;

說明:CREATE VIEW 子句中各列的別名應(yīng)和子查詢中各列相對(duì)應(yīng)。

?方式2:ALTER VIEW
修改視圖的語(yǔ)法是:

ALTER VIEW 視圖名稱
AS
查詢語(yǔ)句

刪除視圖:
????????刪除視圖只是刪除視圖的定義,并不會(huì)刪除基表的數(shù)據(jù)。

DROP VIEW IF EXISTS 視圖名稱;

總結(jié)

點(diǎn)贊加收藏是我最大的動(dòng)力!文章來源地址http://www.zghlxwxcb.cn/news/detail-471310.html

到了這里,關(guān)于【MySQL視圖】視圖處理算法 , 創(chuàng)建 {單表,多表,視圖中創(chuàng)建視圖},查看,和修改。最詳細(xì)來這里!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 六、MySQL---綜合練習(xí)題(單表、多表、分組函數(shù)以及等級(jí)查詢)

    六、MySQL---綜合練習(xí)題(單表、多表、分組函數(shù)以及等級(jí)查詢)

    數(shù)據(jù)庫(kù):dept_emp 1. dept表 :deptno’部門編號(hào)’、dname’部門名稱’、loc’地理位置’; 2. emp表 :empno ‘員工編號(hào)’、ename ‘員工名字’、job ‘職位’、mgr ‘上司’、hiredate ‘入職時(shí)間’、sal ‘基本工資’,comm ‘補(bǔ)貼’,deptno ‘所屬部門編號(hào)’; 3. salgrade :grade ‘工資等級(jí)’

    2024年01月21日
    瀏覽(23)
  • 【MYSQL】聚合函數(shù)和單表/多表查詢練習(xí)、子查詢、內(nèi)外連接

    【MYSQL】聚合函數(shù)和單表/多表查詢練習(xí)、子查詢、內(nèi)外連接

    目錄 1.聚合函數(shù) 1.1.group by子句 1.2.having語(yǔ)句 2.單表查詢? 2.2單表查詢 3.多表查詢 ?3.2.子查詢 5.內(nèi)鏈接 6.外連接 函數(shù) 說明 count 返回查詢到的數(shù)據(jù)的數(shù)量 sum 返回查詢到的數(shù)據(jù)的總和 avg 返回查詢到的數(shù)據(jù)的平均值 max 返回查詢到的數(shù)據(jù)的最大值 min 返回查詢到的數(shù)據(jù)的最小值

    2024年02月04日
    瀏覽(22)
  • 【MySQL】MySQL表的操作-創(chuàng)建查看刪除和修改

    【MySQL】MySQL表的操作-創(chuàng)建查看刪除和修改

    語(yǔ)法: 說明: field 表示列名 datatype 表示列的類型 set 字符集,如果沒有指定字符集,則以所在數(shù)據(jù)庫(kù)的字符集為準(zhǔn) collate 校驗(yàn)規(guī)則,如果沒有指定校驗(yàn)規(guī)則,則以所在數(shù)據(jù)庫(kù)的校驗(yàn)規(guī)則為準(zhǔn) 說明: 不同的存儲(chǔ)引擎,創(chuàng)建表的文件不一樣。 users 表存儲(chǔ)引擎是 MyISAM ,在數(shù)據(jù)目

    2024年02月03日
    瀏覽(87)
  • 【從刪庫(kù)到跑路】MySQL數(shù)據(jù)庫(kù)的查詢(單表查詢,多表查詢,內(nèi)外連接,聯(lián)合查詢,子查詢)

    【從刪庫(kù)到跑路】MySQL數(shù)據(jù)庫(kù)的查詢(單表查詢,多表查詢,內(nèi)外連接,聯(lián)合查詢,子查詢)

    ??專欄【MySQL】 ??喜歡的詩(shī)句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【如愿】 大一同學(xué)小吉,歡迎并且感謝大家指出我的問題?? 在項(xiàng)目開發(fā)中,在進(jìn)行數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)時(shí),會(huì)根據(jù)業(yè)務(wù)需求以及業(yè)務(wù)模塊之間的關(guān)系,分析并設(shè)計(jì)表結(jié)構(gòu),由于業(yè)務(wù)之間相互關(guān)聯(lián)

    2024年02月10日
    瀏覽(30)
  • 基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(31)-- 在查詢接口中實(shí)現(xiàn)多表聯(lián)合和單表對(duì)象的統(tǒng)一處理

    基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(31)-- 在查詢接口中實(shí)現(xiàn)多表聯(lián)合和單表對(duì)象的統(tǒng)一處理

    在一些復(fù)雜的業(yè)務(wù)表中間查詢數(shù)據(jù),有時(shí)候操作會(huì)比較復(fù)雜一些,不過基于SqlSugar的相關(guān)操作,處理的代碼會(huì)比較簡(jiǎn)單一些,以前我在隨筆《基于SqlSugar的開發(fā)框架循序漸進(jìn)介紹(2)-- 基于中間表的查詢處理》介紹過基于主表和中間表的聯(lián)合查詢,而往往實(shí)際會(huì)比這個(gè)會(huì)復(fù)雜

    2024年02月07日
    瀏覽(24)
  • 【?MySQL | 存儲(chǔ)過程與函數(shù)】概述 | 創(chuàng)建 | 調(diào)用 | 查看 | 修改 | 刪除 | 爭(zhēng)議

    ?歡迎來到小K的MySQL專欄,本節(jié)將為大家?guī)鞰ySQL存儲(chǔ)過程與函數(shù)概述 | 創(chuàng)建 | 調(diào)用 | 查看 | 修改 | 刪除 | 爭(zhēng)議的分享 ? MySql從5.0版本開始支持存儲(chǔ)過程和函數(shù),存儲(chǔ)過程和函數(shù)能夠?qū)?fù)雜的SQL邏輯封裝在一起,應(yīng)用程序無須關(guān)注存儲(chǔ)過程和函數(shù)內(nèi)部復(fù)雜的SQL邏輯,而只需要

    2024年02月10日
    瀏覽(40)
  • ES(Kibana)索引拷貝/查看配置信息/查看字段信息/添加新字段/創(chuàng)建索引視圖

    kibana - Management - Index Patterns - Create index pattern - 輸入索引名稱(注意這里的*號(hào)為匹配符,若確定某個(gè)具體的索引請(qǐng)刪除) - Next step - Time Filter field name(選擇是否使用時(shí)間選擇器) - Create index Pattern -完成(在Discover中可查看此視圖)

    2024年02月16日
    瀏覽(32)
  • mysql查看視圖的實(shí)體表來源

    show create table +實(shí)體表/視圖名 用途: 對(duì)應(yīng)的某個(gè)表/視圖的創(chuàng)建語(yǔ)句; 場(chǎng)景一:查看對(duì)應(yīng)視圖數(shù)據(jù)來源于哪些實(shí)體表 場(chǎng)景二:查看對(duì)應(yīng)實(shí)體表的創(chuàng)建語(yǔ)句(DDL) 該命令可以查看一個(gè)表的 建表 語(yǔ)句---即表結(jié)構(gòu)(DDL) Show create table ?A ??-- A為實(shí)體表 table Create Table A A表 ??表結(jié)構(gòu)

    2024年02月07日
    瀏覽(16)
  • MySQL視圖創(chuàng)建和給予用戶視圖權(quán)限

    MySQL視圖創(chuàng)建和給予用戶視圖權(quán)限

    在 checkrecord 表上創(chuàng)建一個(gè)名為 v_checkrecord 的視圖 只映射id,username,nickname字段 通過這個(gè)視圖可以很好地保護(hù)基本表中的數(shù)據(jù)。 SELECT * FROM v_checkrecord 使用 CREATE USER 創(chuàng)建一個(gè)用戶,用戶名是 test1,密碼是 test1,主機(jī)名是 localhost。SQL 語(yǔ)句和執(zhí)行過程如下。 使用 RENAME USER 語(yǔ)句將

    2024年02月12日
    瀏覽(23)
  • MySQL利用視圖插入修改刪除數(shù)據(jù)

    已有數(shù)據(jù)庫(kù)stu,數(shù)據(jù)表student、course、score: 利用v1插入記錄: 插入失敗,錯(cuò)誤提示: Error Code: 1471. The target table v1 of the INSERT is not insertable-into 利用v2插入記錄: 插入成功。 v1和v2相比,v1比v2多了個(gè)字段計(jì)算年齡的表達(dá)式y(tǒng)ear(now())-year(birth)。 插入失敗可能原因1:定義視圖的

    2024年02月06日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包