4、select基本查詢

查詢(select)

select執(zhí)行順序

select 字段
from 表名
where ……
group by ……
having ……
order by ……
limit ……

?執(zhí)行順序

  1. 執(zhí)行where語句過濾原始數(shù)據(jù)
  2. 執(zhí)行g(shù)roup by進(jìn)行分組
  3. 執(zhí)行having對分組數(shù)據(jù)進(jìn)行操作
  4. 執(zhí)行select選出數(shù)據(jù)
  5. 執(zhí)行order by排序
  6. 執(zhí)行l(wèi)imit選出數(shù)據(jù)

若是連接查詢暖侨,則先經(jīng)過on產(chǎn)生中間表剧蚣,再經(jīng)過where進(jìn)行過濾提前,最后再由having進(jìn)行篩選

select相關(guān)

select * from emp; #與java等關(guān)聯(lián)時吗货,不建議使用*,不容易維護(hù)
select sal*12 as yearsal from emp; #as可將字段重命名
select ename,sal from emp; #多個字段用逗號隔開

1狈网、查詢條件

運算符 說明
= 等于
<>或!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between...and... 兩個值之間宙搬,包含邊界,等同于 >= and <=
is null 為null (is not null 不可空)
and 并且
or 或者
in 包含在內(nèi)(not in 不包含在內(nèi))
not 取非拓哺,主要用在is或in中
like 模糊查詢勇垛,支持%或匹配,%匹配任意個字符士鸥,一個下劃線匹配一個字符

2闲孤、排序

select * from emp order by deptno,job;多個字段用逗號分開,先排前面再根據(jù)后面細(xì)排
select * from emp order by deptno asc;asc表示升序烤礁,是默認(rèn)排序讼积,可不寫
select * from emp order by deptno desc;desc表示降序
select * from emp order by 3;不建議使用字段編號肥照,不健壯,不方便維護(hù)

3勤众、單行處理函數(shù)

單行處理函數(shù)舆绎,也叫數(shù)據(jù)處理函數(shù)

函數(shù) 說明
Lower 轉(zhuǎn)換小寫
upper 轉(zhuǎn)換大寫
left 截取字符串左邊部分,left(字符串,長度)
right 截取字符串右邊部分们颜,right(字符串,長度)
substr 取子串(substr(被截取的字符串吕朵,起始下標(biāo),截取的長度))
length 取長度
trim 去空格窥突,可去除首尾空格努溃,不會去除中間空格。rtrim(去掉右側(cè))阻问,ltrim(去掉左側(cè))
str_to_date 將字符串轉(zhuǎn)換成日期梧税,具體格式str_to_date (字符串,匹配格式)
date_format 格式化日期
format 設(shè)置千分位则拷,format(數(shù)據(jù),小數(shù)位數(shù))
round 四舍五入 round(數(shù)字,小數(shù)位數(shù))
rand() 生成隨機(jī)數(shù)
ifnull 可以將null轉(zhuǎn)換成一個具體值ifnull(原始數(shù)據(jù),替換后的數(shù)據(jù))
concat() 拼接字符串,concat(字段1,'字符串',字段2,'字符串')
select lower(ename) from emp;//名字小寫
select upper(job) from emp;//job大寫
select * from emp where substr(ename,1,1)='M';//名字M開頭的員工
select length(ename) from emp;//名字長度
select * from emp where job=trim('  MANAGER  ');//去除首位空格曹鸠,因此能查出結(jié)果
select * from emp where hiredate=str_to_date('02-20-1981',%m-%d-%Y);//查詢此日期入職員工
select empno, ename, date_format(hiredate, '%Y-%m-%d %H:%i:%s') as hiredate from emp;//將入職日期格式化
select empno, ename, Format(sal, 2) from emp;//薪水加入千分位并保留兩位小數(shù)
select round(123.56,1);//四舍五入煌茬,保留一位小數(shù)
select * from emp order by rand() limit 2;//隨機(jī)抽取記錄數(shù)
select ifnull(comm,0) from emp;//comm如果有null,替換為0

4彻桃、日期和時間

常用日期和時間處理函數(shù)

函數(shù) 說明
AddDate() 增加一個日期(天坛善,周等),AddDate('日期',interval 數(shù)字 單位)或AddDate('日期',數(shù)字)--此時默認(rèn)為day
AddTime() 增加一個時間(時邻眷,分等)眠屎,AddTime('hh:mm:ss.xxxxx','hh:mm:ss.xxxxx')
DateDiff() 計算兩個日期之差
now() 返回當(dāng)前日期和時間
CurDate() 返回當(dāng)前日期
CurTime() 返回當(dāng)前時間
Date() 返回日期時間的日期部分
Time() 返回日期時間的時間部分
Year() 返回一個日期的年份部分
Month() 返回一個日期的月份部分
Day() 返回一個日期的天數(shù)部分
Hour() 返回一個時間的小時部分
Minute() 返回一個時間的分鐘部分
Second() 返回一個時間的秒部分
DayOfWeek() 對于一個日期,返回其星期幾

日期格式說明

日期格式 說明
%Y 4位年份
%y 2位年份
%m 月份(01......12)
%c 月份(1......12)
%H 小時(00......23)
%h 小時(01......12)
%i 分鐘(00......59)
%S或%s 秒(00......59)
%r 時間肆饶,12小時制(hh:mm:ss [AP]M)
%T 時間改衩,24小時制(hh:mm:ss)

5、case語句

case...when...then...else...end
case具有兩種格式驯镊,簡單case函數(shù)與case搜索函數(shù)
a葫督、簡單case函數(shù)
?格式
??case 列名
??when 條件值1 then 選擇項1
??when 條件值2 then 選擇項2
??......
??else 默認(rèn)值 end
select ename,deptno,(case deptno when 10 then 'aaaa' when 20 then 'bbbb' else 'cccc' end) as col from emp;

b、case搜索函數(shù)
?格式
??case
??when 列名(=,<,>)條件值1 then 選擇項1
??when 列名(=,<,>)條件值2 then 選擇項2
??......
??else 默認(rèn)值 end
select ename,deptno,(case when deptno=10 then 'aaaa' when deptno=20 then 'bbbb' else 'cccc' end) as col from emp;
注意:Case函數(shù)只返回第一個符合條件的值板惑,剩下的Case部分將會被自動忽略

6橄镜、多行處理函數(shù)

多行處理函數(shù),又叫分組函數(shù)冯乘、聚合函數(shù)洽胶,聚合函數(shù)可在select中一起使用

函數(shù) 說明
count 取得記錄數(shù)
sum 求和
avg 求平均
max 求最大值
min 求最小值

注意:分組函數(shù)自動忽略空值,無需where排除裆馒,且分組函數(shù)不能使用在where關(guān)鍵字后面

select count(*) from emp;//取得記錄總數(shù)
select count(distinct(job)) from emp;//取得不同job數(shù)姊氓,distinct關(guān)鍵字可去重
select sum(sal+ifnull(comm,0)) from emp;//計算薪資總數(shù)丐怯,因為sum不計算含null記錄,因此要先判空
select avg(sal) from emp;//取得平均薪水
select max(sal) from emp;//取得最大薪水
select ename,min(str_to_date(hiredate,'%Y-%m-%d')) from emp;//取得最早入職員工

7他膳、分組查詢

涉及到分組查詢的主要是兩個關(guān)鍵字:group by與having
group by進(jìn)行分組
having對分組后的數(shù)據(jù)再進(jìn)行過濾
SQL語句中若有g(shù)roup by 語句响逢,那么在select語句后面只能跟分組函數(shù)+參與分組的字段
能在where中過濾的數(shù)據(jù),盡量在where中過濾棕孙,效率較高舔亭,having的過濾是專門對分組之后的數(shù)據(jù)進(jìn)行過濾的

select job,deptno,sum(sal) from emp group by job,deptno;//工作與部門進(jìn)行分組,計算工資和

8蟀俊、去重

使用關(guān)鍵字distinct去掉重復(fù)記錄

# 列出所有不同的職位
select distinct job from emp;
# 查出所有部分都設(shè)置有什么職位
select distinct deptno,job from emp;   #distinct必須放在所有字段之前钦铺,表示后面字段不全部一致時的結(jié)果
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肢预,隨后出現(xiàn)的幾起案子矛洞,更是在濱河造成了極大的恐慌,老刑警劉巖烫映,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沼本,死亡現(xiàn)場離奇詭異,居然都是意外死亡锭沟,警方通過查閱死者的電腦和手機(jī)抽兆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族淮,“玉大人辫红,你說我怎么就攤上這事∽@保” “怎么了贴妻?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝙斜。 經(jīng)常有香客問我名惩,道長,這世上最難降的妖魔是什么孕荠? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任绢片,我火速辦了婚禮,結(jié)果婚禮上岛琼,老公的妹妹穿的比我還像新娘底循。我一直安慰自己,他們只是感情好槐瑞,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布熙涤。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祠挫。 梳的紋絲不亂的頭發(fā)上那槽,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機(jī)與錄音等舔,去河邊找鬼骚灸。 笑死,一個胖子當(dāng)著我的面吹牛慌植,可吹牛的內(nèi)容都是我干的甚牲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蝶柿,長吁一口氣:“原來是場噩夢啊……” “哼丈钙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起交汤,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤雏赦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后芙扎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體星岗,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年戒洼,在試婚紗的時候發(fā)現(xiàn)自己被綠了俏橘。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡施逾,死狀恐怖敷矫,靈堂內(nèi)的尸體忽然破棺而出例获,到底是詐尸還是另有隱情汉额,我是刑警寧澤,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布榨汤,位于F島的核電站蠕搜,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏收壕。R本人自食惡果不足惜妓灌,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜜宪。 院中可真熱鬧虫埂,春花似錦、人聲如沸圃验。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斧散,卻和暖如春供常,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸡捐。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工栈暇, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人箍镜。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓源祈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鹿寨。 傳聞我的和親對象是個殘疾皇子新博,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.簡介 數(shù)據(jù)存儲有哪些方式?電子表格脚草,紙質(zhì)文件赫悄,數(shù)據(jù)庫。 那么究竟什么是關(guān)系型數(shù)據(jù)庫馏慨? 目前對數(shù)據(jù)庫的分類主要是...
    喬震閱讀 1,726評論 0 2
  • 轉(zhuǎn)換函數(shù) 數(shù)值轉(zhuǎn)字符 字符轉(zhuǎn)數(shù)值 日期字符轉(zhuǎn)數(shù)值 to_number(str)SELECT 100+'10' ...
    雷爺_fefc閱讀 387評論 0 0
  • 字符函數(shù) 練習(xí): 1.在hello的左右兩邊各添加5個’*’,返回‘*****hello*****’(三種方法實現(xiàn)...
    Rannio閱讀 3,229評論 0 1
  • 引出 ?請思考如下問題埂淮? –查詢所有員工的每個月工資總和,平均工資写隶? –查詢工資最高和最低的工資是多少倔撞? –查詢公...
    C_cole閱讀 7,293評論 0 3
  • 目標(biāo) 聚合函數(shù) 分組函數(shù) 子查詢 多行子查詢 引出 ?請思考如下問題? –查詢所有員工的每個月工資總和慕趴,平均工資痪蝇?...
    wqjcarnation閱讀 4,153評論 0 6