資料庫查詢語句關鍵字總結
一、select語句(單個表)
1.最簡單的查詢:
select * from [where ]
select column1,column2....from [where]
這裡需要注意的是where子句中條件過濾使用到的關鍵字,比如用到邏輯運算子like 中的’%‘(匹配一個或多個字元)和’_‘(僅匹配一個)等。這個在新聞釋出系統中也有用到。
例如:按標題搜尋:
Select top 10 n.id,n.title,n.createtime,c.[name]
from news n inner join category c on c.caid=c.id
where n.title like '%' + @title + '%'
當然還有很多,例如between,not ,in等關鍵字的使用也很重要。
2.DISTINCT關鍵字
這個關鍵字,主要用來取出列中唯一的值,比如:記錄中的一個欄位值(city)如果有重複(廊坊,北京,廊坊,北京),那麼利用DISTINCT關鍵字取出唯一值,即任何重複的值只計數一次,結果為為:(廊坊,北京)。
select DISTINCT city from [table]
3.使用別名
利用別名可以顯示我們想要的名字,方便閱讀。select city as 城市 from ...
4.group by 和having子句
group by 用來對查詢到的結果集進行分組,必須位於select語句中的from子句或where子句之後。
having子句類似於where子句,緊跟在group by子後,作為一個查詢條件。
與where子句的區別:where子句作用於一條記錄中的查詢條件,而having子句則作用於一列的查詢條件
例如:
select location from citytable where city='北京' --查詢城市名為‘北京’的城市的位置 select city group by city having count(memberId)>=3 --查詢城市成員總數大於等於3的城市,同時按城市名分組
二、多表查詢
1、inner join
要求,查詢的多張表中必須具有相同的匹配項。其中on表示作用的表的條件,n,c 為別名
Select *
From news n
Inner join category c
on c.caid=c.id
要執行的查詢結果必須是在兩張表中同時含有相同的類別號的記錄才會被查詢出來。
例如:以牛腩視訊中例子為例:
category表中id表示新聞類別的id ,而news表中的caid則表示該新聞屬於具體哪個類別
那麼執行上面查詢語句後的結果:
inner join表
可以看到結果為類別號在兩張表中均存在的項。inner join還包括等值聯合和不等值,這主要由on後面的條件決定
2.left join
左外連線:連線時,on條件左邊表所有項均查詢出來,而右邊表中若無匹配項,則以null代替
上面兩張表,執行
select * from category c left join news n on c.id=n.caid
結果為:
3.right join
顧名思義,右外連線結果與left join相反,將右邊表所有項查詢出來,而左邊表中無匹配項的則以null代替。
4.full join
無論左邊還是右邊所有項均返回結果。無對應項以null代替。
三、其它
除了以上涉及到的查詢關鍵字外,還涉及到了巢狀查詢,in關鍵字的使用,對sql記錄進行編號排序後按順序查詢等。利用
SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS Row --Row為別名
以上只是涉及到了一部分的查詢關鍵字的總結,也是經常用到的,逐漸學習,才發現原來的知識還是應該不斷的回憶和應用才能發現它更深一層應用的含義。更多關於資料庫的知識有待進一步實踐總結。