SQL中SELECT語句詳解
阿新 • • 發佈:2019-01-07
本篇文章講述SQL語句中的SELECT查詢語句,以供參考,如有錯誤或不當之處還望大神們告知。
簡單查詢SELECT-FROM
用於無條件查詢單張表中的行或列
假設有表如圖所示
- 查詢名字叫 ‘葉清逸’ 的記錄:
select * from T_USER where u_name = '葉清逸' ;
查詢結果:
- 查詢一個或多個屬性,u_name,u_age,u_score:
select u_name,u_age,u_score from T_USER ;
查詢結果:
AS關鍵字
- 使用AS給查詢結果取別名(AS也可以省略):
--可加""也可不加 如果不加雙引號預設字母大寫 如果需要小寫字母或別名由多個字母組成則需要加上雙引號。
--AS也可省略。
select
u_name as 名字,
u_age as "年齡" ,
u_score 成績
from T_USER ;
查詢結果:
算數運算子
- SELECT中可以對數字和日期進行加減乘除運算
select u_name , u_score , u_score+10 , u_score-10 , u_score*2 , u_score/2
from T_USER ;
執行結果:
連線符 “||”
SQL中的連線符”||” 可將結果連線起來為一列
- 將u_name 和“的成績為” u_score 連線起來
select
u_name || '的成績為' || u_score as 成績
from T_USER ;
查詢結果:
條件查詢SELECT-WHERE
SQL中可以用SELECT-WHERE進行條件查詢
比較運算 ‘<’ ‘<=’ ‘>’ ‘>=’ ‘!=’
SQL中可以使用 條件運算子 ‘<’ ‘<=’ ‘>’ ‘>=’ ‘!=’ 過濾查詢結果中的某些行,多個條件之間可以用 ‘and’ 連線。
- 查詢T_USER表中成績大於等於60分的學生
select u_name , u_score
from T_USER
where u_score >= 60 ;
查詢結果:
與條件 (AND,BETWEEN)
查詢A-B區間
- 查詢T_USER表中成績大於等於60分且小於等於80分的學生
- AND寫法
select u_name , u_score
from T_USER
where u_score >60 and u_score <80
- BETWEEN寫法
select u_name , u_score
from T_USER
where u_score between 60 and 80 ;
查詢結果:
或條件(OR,IN)
SQL中用於或運算的關鍵字OR和IN
- 查詢分數大於90分或者小於60分的記錄-OR
select u_name , u_score
from T_USER
where u_score >90 or u_score <60 ;
執行結果:
- 查詢成績為100,98,65的學生-IN
select u_name , u_score
from T_USER
where u_score in(100,98,65) ;
執行結果:
非條件(!=,NOT)
- 查詢名字不叫 ‘葉清逸’ 的記錄
- !=寫法
select *
from T_USER
where u_name != '葉清逸' ;
- NOT寫法
select *
from T_USER
where u_name not like '葉清逸' ;
查詢結果:
模糊查詢LIKE
SQL中可以使用模糊查詢like,其中 ‘_’ 佔一位 ‘%’佔多位。
- 查詢名字中有 ‘清’ 字的記錄
- 可以有三種表示方式,結果等價
- 包含’清’: %清%
- 第二位為’清’:_清%
- 倒數第二位為’清’:%清_
select *
from T_USER
where u_name like '%清%' ;
查詢結果:
注:若要查詢資料含有’_’ 關鍵字 則需使用 escape定義一個轉義字元。如:like ‘%#_%’ escape ‘#’
查詢排序ORDER BY
SQL中可以對查詢結果進行排序,DESC表示按從大到小排序,ASC表示按從小到大排序,預設為從小到大排序。
- 將T_USER表按成績從大到小排序
select *
from T_USER
order by u_score desc ;
查詢結果:
ORDER BY 語句也可以用逗號隔開,表示如果上一個條件相同,接下來的排序方式。