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

歡迎訪問 生活随笔!

生活随笔

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

数据库

20150103--SQL连接查询+视图-02

發(fā)布時(shí)間:2023/12/18 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 20150103--SQL连接查询+视图-02 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
20150103--SQL連接查詢+視圖-02

子查詢

一條查詢語句出現(xiàn)在另外一條查詢語句的內(nèi)部,這條語句就被稱之為子查詢語句。

子查詢分類

子查詢可以根據(jù)子查詢返回的結(jié)果以及子查詢出現(xiàn)的位置兩種方式進(jìn)行分類

按結(jié)果分類:

標(biāo)量子查詢:子查詢返回的結(jié)果是一行一列,一個(gè)字段的某一個(gè)值

列子查詢:子查詢返回的結(jié)果是一列,多行,一個(gè)字段有多個(gè)值

行子查詢:子查詢返回的結(jié)果是一行多列,多行多列

表子查詢:子查詢返回的結(jié)果多行多列

按照位置分類:

where子查詢:子查詢出現(xiàn)在where條件之后

from子查詢:子查詢出現(xiàn)在from之后

exists子查詢:出現(xiàn)在exists之后,exists出現(xiàn)在where之后

標(biāo)量子查詢

子查詢返回的結(jié)果是一個(gè)標(biāo)量

列子查詢

子查詢返回的結(jié)果是一列。

需求:獲取所有班級(jí)的所有學(xué)生,學(xué)生必須在班級(jí)中存在。

select * from student where c_id is not null; -- 無法解決

解決方案

1. 獲取所有的現(xiàn)有班級(jí)的id:select id from class;

2. 從學(xué)生表中查出所有數(shù)據(jù),判斷學(xué)生的班級(jí)id是否在剛查出來的班級(jí)id中存在

集合判斷條件(理解性知識(shí))

集合(1,2,3,4,5)

any:任意一個(gè),1 = any(集合),只要結(jié)果在集合中出現(xiàn)過,就返回true

all:全部,必須滿足全部條件才返回真

some:等于其中的一部分,與any完全一致

行子查詢

子查詢返回的結(jié)果是一行多列

需求:找出所有班級(jí)中年齡最大,同時(shí)身高最高的學(xué)生;

行子查詢必須構(gòu)建行元素:有多個(gè)字段的元素

select * from 表名 where (字段1,字段2…) =/in (select 字段1,字段2… from 表名);

表子查詢

表子查詢從返回結(jié)果的層面上講與行子查詢完全一樣。因?yàn)槠涑霈F(xiàn)的位置不是在where之后,而是在where之前,from之后。from后接數(shù)據(jù)源。

需求:求出每個(gè)班中身高最高的1個(gè)學(xué)生。

表子查詢出現(xiàn)的原因:因?yàn)槟承r(shí)候,希望order by在group by之前先執(zhí)行。

先排序,再分組

視圖

視圖:視圖是一張?zhí)摂M表,存在表結(jié)構(gòu),但是沒有數(shù)據(jù)。

視圖關(guān)鍵字:view

創(chuàng)建視圖

語法:

create view 視圖名字 as select語句;

視圖創(chuàng)建之后發(fā)生了什么?

1. 創(chuàng)建視圖結(jié)構(gòu)(虛擬表)

2. 在數(shù)據(jù)庫(kù)對(duì)應(yīng)的文件夾下創(chuàng)建結(jié)構(gòu)文件

視圖是虛擬表,只有結(jié)構(gòu),沒有數(shù)據(jù)。

視圖查看

1. 視圖可以像表一樣的查看

show tables/show create table/desc 視圖名

2. 可以通過視圖查看創(chuàng)建語句的方法

show create view 視圖名;

3. 查看視圖數(shù)據(jù):與查看表完全一致

視圖不保存數(shù)據(jù):數(shù)據(jù)的來源指的是當(dāng)視圖被調(diào)用的時(shí)候,系統(tǒng)會(huì)自動(dòng)調(diào)用視圖的創(chuàng)建語句中的select語句去執(zhí)行。

修改視圖

視圖修改的本質(zhì)是修改視圖的數(shù)據(jù)來源。

語法

alter view 視圖名字 as select語句;

刪除視圖

語法

drop view 視圖名字;

視圖作用

1. 節(jié)省查詢語句的長(zhǎng)度

2. 對(duì)外提供訪問接口

保證數(shù)據(jù)表(基表)的數(shù)據(jù)安全性。

視圖能夠選擇性的從基表獲取數(shù)據(jù),并提供給外部。

3. 對(duì)外友好性

視圖能夠?qū)ν馓峁┎煌臄?shù)據(jù)信息。(不同的接口定義不同的視圖)

視圖數(shù)據(jù)增刪改

視圖可以為基表進(jìn)行數(shù)據(jù)的增刪改操作,必須滿足以下條件

視圖新增數(shù)據(jù)

1. 視圖的數(shù)據(jù)來源(基表)只能有一個(gè)

多表視圖不能插入數(shù)據(jù)

2. 視圖中的所有字段,必須包含了基表中不為空或者沒有默認(rèn)值的全部字段。

更新數(shù)據(jù):基本沒有限制

單表視圖更新

多表視圖更新

刪除數(shù)據(jù):與插入數(shù)據(jù)條件一致,只有單表視圖可以刪除,多表不能刪除

單表視圖刪除

多表視圖刪除

視圖算法

視圖在執(zhí)行的過程中(視圖被查詢),到底是如何去執(zhí)行視圖對(duì)應(yīng)的查詢語句。

視圖算法分為三種:

合并:merged,先將視圖的SQL查詢與與外部的查詢語句進(jìn)行語法合并

臨時(shí)表:temptable,先執(zhí)行視圖里面的查詢語句,結(jié)果變成一個(gè)臨時(shí)表

未定義:undefined,系統(tǒng)自己判斷到底使用合并還是臨時(shí)表,默認(rèn)的

算法指定語法

create view algorithm = 算法 視圖名字 as select語句

posted on 2016-04-20 22:29?山山未遲 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/lifushan/p/5414767.html

總結(jié)

以上是生活随笔為你收集整理的20150103--SQL连接查询+视图-02的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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