一、排序查詢
(一)語法
select 查詢串列
from 表
where 篩選條件
order by 排序串列 【asc|desc】
(二)特點
1、asc:升序,如果不寫默認升序
desc:降序
2、排序串列 支持 單個欄位、多個欄位、函式、運算式、別名
3、order by的位置一般放在查詢陳述句的最后(除limit陳述句之外)
二、常見函式
(一)概述
功能:類似于java中的方法
好處:提高重用性和隱藏實作細節
呼叫:select 函式名(實參串列);
(二)單行函式
1、字符函式
concat:連接
substr:截取子串
upper:變大寫
lower:變小寫
replace:替換
length:獲取位元組長度
trim:去前后空格
lpad:左填充
rpad:右填充
instr:獲取子串第一次出現的索引
2、數學函式
ceil:向上取整
round:四舍五入
mod:取模
floor:向下取整
truncate:截斷
rand:獲取亂數,回傳0-1之間的小數
3、日期函式
now:回傳當前日期+時間
year:回傳年
month:回傳月
day:回傳日
date_format:將日期轉換成字符
curdate:回傳當前日期
str_to_date:將字符轉換成日期
curtime:回傳當前時間
hour:小時
minute:分鐘
second:秒
datediff:回傳兩個日期相差的天數
monthname:以英文形式回傳月
4、其他函式
version 當前資料庫服務器的版本
database 當前打開的資料庫
user 當前用戶
password(‘字符’):回傳該字符的密碼形式
md5(‘字符’):回傳該字符的md5加密形式
5、流程控制函式
①if(條件運算式,運算式1,運算式2):如果條件運算式成立,回傳運算式1,否則回傳運算式2
②case情況1
case 變數或運算式或欄位
when 常量1 then 值1
when 常量2 then 值2
…
else 值n
end
③case情況2
case
when 條件1 then 值1
when 條件2 then 值2
…
else 值n
end
(三)分組函式
1、分類
max 最大值
min 最小值
sum 和
avg 平均值
count 計算個數
2、特點
①語法
select max(欄位) from 表名;
②支持的型別
sum和avg一般用于處理數值型
max、min、count可以處理任何資料型別
③以上分組函式都忽略null
④都可以搭配distinct使用,實作去重的統計
select sum(distinct 欄位) from 表;
⑤count函式
count(欄位):統計該欄位非空值的個數
count(*):統計結果集的行數
count(1):統計結果集的行數
效率上:
MyISAM存盤引擎,count()最高
InnoDB存盤引擎,count()和count(1)效率>count(欄位)
⑥和分組函式一同查詢的欄位,要求是group by后出現的欄位
三、分組查詢
(一)語法
select 分組函式,分組后的欄位
from 表
【where 篩選條件】
group by 分組的欄位
【having 分組后的篩選】
【order by 排序串列】
(二)特點
| 使用關鍵字 | 篩選的表 | 位置 | |
|---|---|---|---|
| 分組前篩選 | where | 原始表 | group by的前面 |
| 分組后篩選 | having | 分組后的結果 | group by的后面 |
四、連接查詢
(一)含義
當查詢中涉及到了多個表的欄位,需要使用多表連接
select 欄位1,欄位2
from 表1,表2,...;
笛卡爾乘積:當查詢多個表時,沒有添加有效的連接條件,導致多個表所有行實作完全連接
如何解決:添加有效的連接條件
(二)分類
按年代分類:
sql92:
等值
非等值
自連接
也支持一部分外連接(用于oracle、sqlserver,mysql不支持)
sql99【推薦使用】
內連接:等值、非等值、自連接
外連接:左外、右外、全外(mysql不支持)
交叉連接
(三)SQL92語法
1、等值連接
語法:
select 查詢串列
from 表1 別名,表2 別名
where 表1.key=表2.key
【and 篩選條件】
【group by 分組的欄位】
【having 分組后的篩選】
【order by 排序欄位】
特點:
①一般為表起別名
②多表的順序可以調換
③n表連接至少需要n-1個連接條件
④等值連接的結果是多表的交集部分
2、非等值連接
語法:
select 查詢串列
from 表1 別名,表2 別名
where 非等值的連接條件
【and 篩選條件】
【group by 分組欄位】
【having 分組后的篩選】
【order by 排序欄位】
3、自連接
語法:
select 查詢串列
from 表1 別名,表2 別名
where 等值的連接條件
【and 篩選條件】
【group by 分組欄位】
【having 分組后的篩選】
【order by 排序欄位】
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/259007.html
標籤:其他
上一篇:MyBatis5_動態SQL
下一篇:Manjaro更新后界面變英文
