資料庫中having的用法
㈠ 資料庫中where與having區別~~~
1.類型:
「Where」是一個約束聲明,在查詢資料庫的結果返回之前對資料庫中的查詢條件進行約束,即在結果返回之前起作用,且where後面不能使用「聚合函數」;
「Having」是一個過濾聲明,所謂過濾是在查詢資料庫的結果返回之後進行過濾,即在結果返回之後起作用,並且having後面可以使用「聚合函數」。
2.使用的角度:
where後面之所以不能使用聚合函數是因為where的執行順序在聚合函數之前。
(1)資料庫中having的用法擴展閱讀
處理系統:
資料庫是一個單位或是一個應用領域的通用數據處理系統,它存儲的是屬於企業和事業部門、團體和個人的有關數據的集合。資料庫中的數據是從全局觀點出發建立的,按一定的數據模型進行組織、描述和存儲。
其結構基於數據間的自然聯系,從而可提供一切必要的存取路徑,且數據不再針對某一應用,而是面向全組織,具有整體的結構化特徵。
資料庫中的數據是為眾多用戶所共享其信息而建立的,已經擺脫了具體程序的限制和制約。不同的用戶可以按各自的用法使用資料庫中的數據。
多個用戶可以同時共享資料庫中的數據資源,即不同的用戶可以同時存取資料庫中的同一個數據。數據共享性不僅滿足了各用戶對信息內容的要求,同時也滿足了各用戶之間信息通信的要求。
主要特點:
1、實現數據共享
數據共享包含所有用戶可同時存取資料庫中的數據,也包括用戶可以用各種方式通過介面使用資料庫,並提供數據共享。
2、減少數據的冗餘度
同文件系統相比,由於資料庫實現了數據共享,從而避免了用戶各自建立應用文件。減少了大量重復數據,減少了數據冗餘,維護了數據的一致性。
3、數據的獨立性
數據的獨立性包括邏輯獨立性(資料庫中資料庫的邏輯結構和應用程序相互獨立)和物理獨立性(數據物理結構的變化不影響數據的邏輯結構)。
4、數據實現集中控制
文件管理方式中,數據處於一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關系。利用資料庫可對數據進行集中控制和管理,並通過數據模型表示各種數據的組織以及數據間的聯系。
5、數據一致性和可維護性,以確保數據的安全性和可靠性
主要包括:①安全性控制:以防止數據丟失、錯誤更新和越權使用;②完整性控制:保證數據的正確性、有效性和相容性;③並發控制:使在同一時間周期內,允許對數據實現多路存取,又能防止用戶之間的不正常交互作用。
6、故障恢復
由資料庫管理系統提供一套方法,可及時發現故障和修復故障,從而防止數據被破壞。資料庫系統能盡快恢復資料庫系統運行時出現的故障,可能是物理上或是邏輯上的錯誤。比如對系統的誤操作造成的數據錯誤等。
㈡ sql中「having」的用法是什麼
這個是用在聚合函數的用法。當我們在用聚合函數的時候,一般都要用到GROUP BY 先進行分組,然後再進行聚合函數的運算。運算完後就要用到HAVING 的用法了,就是進行判斷了。
㈢ 資料庫中having函數是什麼作用
HAVING用戶在使用SQL語言的過程中可能希望解決的一個問題就是對由sum或其它集合函數運算結果的輸出進行限制。例如,我們可能只希望看到Store_Information數據表中銷售總額超過1500美圓的商店的信息,這時我們就需要使用HAVING從句。語法格式為:
SELECT "column_name1", SUM("column_name2")
FROM "table_name"
GROUP BY "column_name1"
HAVING (arithematic function condition)
(GROUP BY從句可選)
由此,我們可以使用如下命令實現上述查詢目的:
SELECT store_name, SUM(sales)
FROM Store_Information
GROUP BY store_name
HAVING SUM(sales) > 1500
查詢結果顯示為:
store_name SUM(Sales)
Los Angeles $1800
小註:
SQL語言中設定集合函數的查詢條件時使用HAVING從句而不是WHERE從句。通常情況下,HAVING從句被放置在SQL命令的結尾處
㈣ sql中having用法
HAVING語句通常與GROUP BY語句聯合使用,用來過濾由GROUP BY語句返回的記錄集。
HAVING語句的存在彌補了WHERE關鍵字不能與聚合函數聯合使用的不足。
語法:
SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;
同樣使用本文中的學生表格,如果想查詢平均分高於80分的學生記錄可以這樣寫:
SELECT id, COUNT(course) as numcourse, AVG(score) as avgscore
FROM student
GROUP BY id
HAVING AVG(score)>=80;
在這里,如果用WHERE代替HAVING就會出錯。
數據操縱
數據操縱語言是完成數據操作的命令,一般分為兩種類型的數據操縱。
1、數據檢索(常稱為查詢):尋找所需的具體數據。
2、數據修改:插入、刪除和更新數據。
數據操縱語言一般由 INSERT(插入)、 DELETE(刪除)、 UPDATE(更新)、 SELECT(檢索,又稱查詢)等組成。由於 SELECT經常使用,所以一般將它稱為查詢(檢索)語言並單獨出現。
㈤ 資料庫having 語句是怎麼使用的
having是一種特殊的條件語句,用在有group by的統計查詢中,對統計結果設置條件。例如:
selectitem_name,count(1)ascnt
fromtable_name
groupbyitem_name
havingcount(1)>2
即只取記錄個數大於2的item_name(注: SQL語句未經過實測)。
㈥ SQL語言中的having代表什麼意思
having 用在SQL語句中,用於掉不符合條件的組。
having 子句中的每一個元素也必須出現在select列表中。有些資料庫例外,如oracle.
having子句和where子句都可以用來設定限制條件以使查詢結果滿足一定的條件限制。
having子句限制的是組,而不是行。where子句中不能使用聚集函數,而having子句中可以。
㈦ SQL中Having和where的用法
這個是用在聚合函數的用法。當我們在用聚合函數的時候,一般都要用到groupby先進行分組,然後再進行聚合函數的運算。運算完後就要用到having的用法了,就是進行判斷了,例如說判斷聚合函數的值是否大於某一個值等等。
selectcustomer_name,sum(balance)
frombalance
groupbycustomer_name
havingbalance>200;
這個是銀行資料庫的例子
㈧ 資料庫中having 和where有什麼區別
Having是篩選組,where是篩選記錄。
可以這樣理解:Having是先分組在進行篩選,而where是先篩選再進行分組。
對於有Group by子句的SQL語句,切記與Having組合使用。但不一定要有Having子句。
一般情況下分組篩選的時候用Having,其他情況下用where。
select class_num,count(*) from student where score>=85
group by class_num having count(*)>1
查詢有多個學生的成績大於等於85分班級編號。(也就是說如果一個班級的學生成績大於85那麼他就查詢出來)。
where針對每一條記錄進行篩選,而Having對班級的分組,count(*)>1計算多於兩個的班級。
㈨ 資料庫中,select where group by having 執行順序
Group
By
和
Having,
Where
,Order
by這些關鍵字是按照如下順序進行執行的:Where,
Group
By,
Having,
Order
by。
一、使用count(列名)當某列出現null值的時候,count(*)仍然會計算,但是count(列名)不會。
二、數據分組(group
by
):
select
列a,聚合函數(聚合函數規范)
from
表明
where
過濾條件
group
by
列a
group
by
字句也和where條件語句結合在一起使用。當結合在一起時,where在前,group
by
在後。即先對select
xx
from
xx的記錄集合用where進行篩選,然後再使用group
by
對篩選後的結果進行分組。
三、使用having字句對分組後的結果進行篩選,語法和where差不多:having
條件表達式
需要注意having和where的用法區別:
1.having只能用在group
by之後,對分組後的結果進行篩選(即使用having的前提條件是分組)。
2.where肯定在group
by
之前,即也在having之前。
3.where後的條件表達式里不允許使用聚合函數,而having可以。
四、當一個查詢語句同時出現了where,group
by,having,order
by的時候,執行順序和編寫順序是:
1.執行where
xx對全表數據做篩選,返回第1個結果集。
2.針對第1個結果集使用group
by分組,返回第2個結果集。
3.針對第2個結果集中的每1組數據執行select
xx,有幾組就執行幾次,返回第3個結果集。
4.針對第3個結集執行having
xx進行篩選,返回第4個結果集。
5.針對第4個結果集排序。
拓展資料
當我們看到一個類似上述的包含了where,
group
by,
having,
order
by等關鍵字的SQL時,我們要首先要知道其執行順序是怎樣的,才能判斷出其所表達的含義;
下面列出其執行順序:
1.
根據where子句選擇行;
2.
根據group
by
子句組合行;
3.
根據having子句篩選組;
4.
根據order
by子句中的分組函數的結果對組進行排序,order
by必須使用分組函數或者使用Group
by子句中指定的列;
下面看一個例子:
我們現在知道,其執行順序如下:
1.基於Where
Rating>1
篩選出符合條件的行;
2.基於group
by
CategoryName
對篩選的結果進行分組;
3.為每個CategoryName組計算Count(*)
4.
基於having
CategoryName
like
'A%'留下符合條件的組
5.
根據order
by
的條件對剩下的行組進行排序,SQL中的count(*)也是分組函數。
㈩ having和group by的區別
區別:
1.having:用於對where和group by查詢出來的分組經行過濾,查出滿足條件的分組結果。它是一個過濾聲明,是在查詢返回結果集以後對查詢結果進行的過濾操作。
2.group by:對select查詢出來的結果集按照某個欄位或者表達式進行分組,獲得一組組的集合,然後從每組中取出一個指定欄位或者表達式的值。在說group by的時候,我們還需要了解聚合函數,聚合函數是SQL語言中一種特殊的函數。
(10)資料庫中having的用法擴展閱讀:
group by,where,having 是資料庫查詢中最常用的幾個關鍵字。在工作中,時常用到,當一個語句中同時含有where、group by 、having及聚集函數時,執行順序如下:
執行where子句查找符合條件的數據;使用group by 子句對數據進行分組;對group by 子句形成的組運行聚集函數計算每一組的值;最後用having 子句去掉不符合條件的組。需要注意的是,having 子句中的每一個元素也必須出現在select列表中。有些資料庫例外,如oracle。