Sql Server(2)Select學習
阿新 • • 發佈:2021-07-15
一:學會select查詢
①select語句基本應用:
select子句
指定欄位名
ALL與DISTINCT -------我們平時不寫的話,就代表的是All ,當我們加入Distinct後,就不會出現重複的資料(去重)
使用欄位別名 -----------欄位別名我們只能在我們的select 查詢顯示的時候用,它的使用範圍是受限制的。
使用表別名----------------表別名是不受限制的
where子句 ------------條件
Order by 子句----------排序
GROUP BY子句--------分組
②select的語法
SELECT select_list [INTO new_table] FROM table_source [WHERE search_condition] [GROUP BY group_by_expression] [HAVING search_condition] [ORDER BY order_expression[ASC | DESC] ]
③設定指定的欄位
①*:代表查詢資料表中所有的欄位 示例 查詢JOBS資料表中所有的欄位。 SELECT * FROM JOBS ②column_name:只要查詢資料表中的某些欄位時,就直接將欲查詢的欄位列出,欄位與欄位之間要用逗號相隔。 示例 查詢EMPLOYEE表中的多個欄位。 SELECT fname,lname,minit,emp_id,job_id FROM EMPLOYEE ③expression:利用表示式來指定欄位,表示式的內容可以是欄位名、常數、函式…等的組合 。 示例 利用SQL語法的表示式子句計算書店的利潤。 SELECT title 書名, ((price * ytd_sales) * CAST( ( (100-royalty) / 100.0 ) AS MONEY)) AS 年收入 FROM titles WHERE royalty <> 0
④ALL與Distinct的區別
SELECT子句後加上ALL的功能是指定結果集內可顯示有重複資料的資料列。 而加入DISTINCT引數後,則代表所查詢的結果中如果有重複的多筆資料,將只會顯示一筆資料。 SQL Server 的預設值是ALL,因此通常不須使用ALL引數,只有在不顯示重複資料時才要用DISTINCT來指定。
⑤TOP的使用(Sql server 的)前幾條記錄
引數TOP n [PERCENT] 如果想查詢資料表中的最前面n筆記錄,可以利用TOP n 的指令。(n為介於0到 4294967295 之間的整數。) 示例 使用引數TOP的SELECT查詢語句。 select top 2 * from cv_Po
⑥TOP (PERCENT) 的前百分之幾的資料
如果同時指定 PERCENT,則結果集只輸出頭n個百分比的資料列。以 PERCENT 指定時,n 必須為介於 0 到 100 之間的整數 示例 使用TOP n [PERCENT]的SELECT查詢語句。 select top 20 percent * from cv_Po
⑦習題檢視中有一筆記錄“金額”不等於“單價*數量”,請找出來
找出我們採購過的物料名稱(要求結果集不重複)
二:對From的新的瞭解(SELECT語句加上FROM子句,是用來設定要查詢的資料來源,如資料表名稱、檢視名稱,語法如下:)
SELECT語句加上FROM子句,是用來設定要查詢的資料來源,如資料表名稱、檢視名稱,語法如下: FROM table_name [ [AS] table_alias ] [ ,….n] 或 FROM { table_name1[ [AS] table_alias ] } [ INNER | {{LEFT | RIGHT | FULL } [ OUTER ] } ] JOIN table_name2 [AS] table_alias ] ON search_condition| < table_source > CROSS JOIN<table_source> } [ , … n]
三:內連線,左連線,右連線,全連線
四:兄弟們這個是重點啊(看懂他,會寫的sql會越來越多)底下又有列子
習題:
五:where 的使用
SELECT語句若加上WHERE子句時,是用來設定查詢條件,以便過濾需要的資料。其語法如下: [ WHERE <search_condition> ] 引數: <search_condition>:設定條件 示例 使用WHERE引數指定關聯條件。 USE PUBS SELECT titles.title, titleauthor.title_id FROM titles, titleauthor WHERE titles.title = titleauthor.title_id
①inner join 與where 的區別(一般我們選擇用inner join)
②where與having可以同時存在
select jCode,jName,sum(jQty) from jProduct where jCode like '%0123%' group by jCode,jName having sum(jQty)>100 上面這句的執行過程大致應該是這樣的 先根據where條件子句進行過來 再根據group by子句進行聚合 最後再根據having子句對聚合結果進行過濾
③order by 的使用
如果想將查詢的結果做排序,可使用ORDER BY子句,語法如下: ORDER BY { order_by_expression [ ASC | DESC ]} [ ,...n ] 引數 order_by_expression:設定排序的依據,可用欄位名、欄位別名或欄位值的表示式。來作為排序依據的欄位可以不是SELECT子句所查詢的欄位,但如果是使用SELECT DISTINCT就一定必須是。 另外,我們亦可以使用大於0的整數,來表示所要依照SELECT列表中的第幾個專案值做為排序,例如2,即代表用SELECT的第二個欄位排序。 ASC:以升序的方式或由小至大的方式來排序。但NULL將被視為最小的值。 DESC:以降序的方式或由大至小的方式來排序。但NULL將被視為最小的值。
列:
六:group by 的使用
當需要顯示分組的彙總資料時,就應使用GROUP BY子句。該子句的功能是根據指定的列將表中資料分成多個組後進行彙總 其語法格式為: SELECT column_name1[,…n] FROM table_name WHERE search_condition GROUP BY [ ALL ]colum_name1[,…n] [ HAVING search_condition ]
①:分組的條件
使用GROUP BY分組,每個組在結果集中只有一行。 SELECT子句中指定的列必須是分組欄位,其它欄位要與聚合函式一起使用。 如果包含WHERE子句,則只對滿足WHERE條件的行進行分組彙總。 HAVING子句與Group by一起使用,進一步排除不滿足條件的組。 select 供應商,sum(金額) as '訂貨總金額' from cv_po group by 供應商
②聚合函式
avg:對數值型別的欄位值求平均,忽略 Null 值。 count:對記錄進行計數。 max:返回最大值。 min:返回最小值。 sum:對某個數值型欄位進行求和。
列:
示例2:統計向各個供應商訂貨的次數,找出訂貨次數一次以上的供應商 select FSupplyID,count(*) as 訂貨次數 from po group by FSupplyID Having count(FID)>1