1. 程式人生 > >SQL中SELECT語句詳解

SQL中SELECT語句詳解

本篇文章講述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,其中 ‘_’ 佔一位 ‘%’佔多位。

  • 查詢名字中有 ‘清’ 字的記錄
  • 可以有三種表示方式,結果等價
    1. 包含’清’: %清%
    2. 第二位為’清’:_清%
    3. 倒數第二位為’清’:%清_
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 語句也可以用逗號隔開,表示如果上一個條件相同,接下來的排序方式。