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