sqlliet 创建多表查询的视图_第4关 复杂查询
(是什么,如何用,有什么用,注意事項)
一、視圖:
(1)是什么:數(shù)據(jù)庫存儲數(shù)據(jù),視圖存儲SQL語句,不存數(shù)據(jù)
(2)如何創(chuàng)建視圖 CREATE VIEW 視圖名稱(<視圖列名1,<視圖列名2>,...) AS <SELECT 查詢語句>;CREATE VIEW 按性別匯總(性別,人數(shù)) AS SELECT 性別,COUNT(*) FROM student GROUP BY 性別;(3)有什么用 ,優(yōu)點
①將經(jīng)常使用的select語句保存為視圖,不用每次重復(fù)書寫了
②視圖中的數(shù)據(jù)會隨著原表的變化而自動更新
③視圖無需保存數(shù)據(jù),因此節(jié)省存儲設(shè)備的容量
(4)注意事項
①避免在視圖基礎(chǔ)上創(chuàng)建視圖,多重視圖會降低sql性能和效率
②不能往視圖中插入數(shù)據(jù)
二、子查詢
1、子查詢就是一次性視圖(一次性select語句),運行后就會消失。
子查詢是將用來定義視圖的select語句直接用于from子句中,實際上就是在select語句中嵌套另外一個select子句。
2、如何使用:在where子句中跟in,any,all一起使用
in(子查詢):查找in里面的數(shù)據(jù)
any(子查詢):表示子查詢里面的任意一個數(shù)據(jù)(any和some相同)
all(子查詢):表示子查詢里的所有數(shù)據(jù)
any和all 可以跟比較運算符搭配使用
3、注意事項
①all可以與=、>、>=、<、<=、<>結(jié)合起來使用,分別表示等于、大于、大于等于、小于、小于等于、不等于all里面的所有數(shù)據(jù)。
如果是兩個數(shù)字比較,a > 3b 等價于 a/3 > b 。但是,在mysql里all得到的不是一個數(shù)字,是一個集合,也就是得到的是n行數(shù)據(jù),所以不能寫a > 3all(b),語法只能是 a/3 > all(b)。
all與子查詢的語法如下:
SELECT 列名1 FROM 表名1 WHERE 列名1 > ALL (子查詢);②避免使用多層嵌套
③子查詢名稱可以省略不寫,但是為了方便理解,建議根據(jù)處理內(nèi)容來指定恰當(dāng)?shù)淖硬樵兠Q
④運行順序:先運行子查詢,再運行外部查詢
三、標(biāo)量子查詢
1、標(biāo)量子查詢就是返回一行一列的單一值的子查詢,可以與比較運算符一起使用。
SELECT 學(xué)號,成績 FROM score WHERE 成績 > (SELECT AVG(成績)FROM score );四、關(guān)聯(lián)子查詢:在每個組里進(jìn)行比較
偶爾使用:子查詢-①多行-子查詢 ②單一值-標(biāo)量子查詢-IN ANY ALL BETWEEN③在每個組里比較-關(guān)聯(lián)子查詢-關(guān)聯(lián)條件
頻繁使用:視圖
五、如何用sql解決業(yè)務(wù)問題
*如何排查SQL報錯信息
先單獨運行子查詢,看看是否報錯,再排查外部查詢
六、各種函數(shù)
1.匯總函數(shù)
2.算術(shù)函數(shù)
3.字符串函數(shù)
4.日期函數(shù)
七、總結(jié)
子查詢:返回多行結(jié)果
標(biāo)量子查詢:返回單一值,跟比較運算符,in,any,all,between一起使用
關(guān)聯(lián)子查詢:用于每個組內(nèi)比較,關(guān)聯(lián)條件必須在子查詢里
多表查詢
1.表的加法
2.表的聯(lián)結(jié)
3.聯(lián)結(jié)應(yīng)用案例
4.case表達(dá)式
總結(jié)
以上是生活随笔為你收集整理的sqlliet 创建多表查询的视图_第4关 复杂查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 蜜糖水的功效与作用、禁忌和食用方法
- 下一篇: 分组数据方差公式_统计学公式