stotybord如何添加子视图_SQL复杂查询-子查询
視圖:
1.視圖的概念引入:
SQL數據庫里面存放的是SQL語句,視圖中查看到的SQL查詢語句,當我們運用客戶端連接到視圖時候,視圖會運行里面的查詢語句,從庫中查找出數據,保存在臨時表里面。當客戶端和數據庫斷開時,表會被自動刪除。不是保存在SQL數據庫里面。
2.如何創建視圖;
Code: create view 視圖名稱(<視圖列名1>,<視圖列名2>...) as <select查詢語句>
3.為什么要使用視圖:
注意事項:
1.不要重復新建視圖,會降低SQL性能效率
2.不能忘視圖里面插入數據,會報錯。
eg.在工作中需要常常用性別來匯總計算,就寫好視圖。數據庫中數據表動,視圖中函數得出結果也會相對應變動。
create view 按性別匯總(性別,人數)as select 性別,count(*) from student group by 性別;
多條件子查詢
以下代碼根據此四個基礎原表:
【原數據表】
1)IN(子查詢)--在...之一
相當于or
【題目】:找出每個課程里 成績最低的學號
第一時間可能想到的是如下語句,但這個是錯誤的:
【理解思路1】:理解這個代碼錯誤的原因要從SQL運行順序上去想。首先從Score表里面提取數據并根據課程號進行數據分組,然后執行應用函數min(成績)。此時得出的結果只有課程號和成績。然后再進行組合和隨機學號的加入。
【理解思路2 】:因此應該要用子函數進行嵌套,首先子函數先運行,找出每門課程對應最低成績是多少。然后運行主句。在選出的每門課的最低成績中,找出對應的學生學號。
2)Any(子查詢)/some(子查詢)在...(子查詢)之一
一般用于比較,接于比較運算符之后。
select<列名1> from <表名> where<列名> > any(子查詢)
eg.
【解析】:
3)all(子查詢) 全部...
一般用于比較,接于比較運算符之后。
eg.
標量子查詢
標量子查詢和一般子查詢相比,其特征是標量子查詢得出來只有一個值,一般子查詢可能會有一個值會有多個值,所以他們之間是包含關系。
標量子查詢多用于比較運算符后。例如小于大于等于之后。但也可用于主句中,當顯示結果為唯一值時。
【解析】:select avg(成績)from score的出來只有一個數值。
eg2.
關聯子查詢:
在進行在每個組里比較的時候會用到關聯子查詢,先看下面栗子:
栗子中,希望找出大于沒個課程平均成績的學生,但是select子從句的出來的結果是三個值(因為有三個課程)而非一個值,這個導致不能直接使用標量子查詢。
【解決方法】:
子從句中加入 where 條件。
在子查詢加入where之后,得出來的結果雖然仍然是‘0001,'0002','0003'三個課程的平均成績,但是這三個課程的平均成績因為有where 進行限定,所以是一 一對應的關系。主句中出現0001課程的成績,就會對子查詢中0001值出現的平均成績進行比對,不再是一對三,而是實現一對一的效果。
子查詢注意事項:
【sqlzoo練習】-->select in select:
總結
以上是生活随笔為你收集整理的stotybord如何添加子视图_SQL复杂查询-子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html filter 在线预览,HTM
- 下一篇: js 点击闭包_学习Javascript