常用函式:
一、概述
功能:類似于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(*):統計結果集的行數
案例:查詢每個部門的員工個數
1 xx 10
2 dd 20
3 mm 20
4 aa 40
5 hh 40
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 排序欄位】
四、SQL99語法
1、內連接
語法:
select 查詢串列
from 表1 別名
【inner】 join 表2 別名 on 連接條件
where 篩選條件
group by 分組串列
having 分組后的篩選
order by 排序串列
limit 子句;
特點:
①表的順序可以調換
②內連接的結果=多表的交集
③n表連接至少需要n-1個連接條件
分類:
等值連接
非等值連接
自連接
2、外連接
語法:
select 查詢串列
from 表1 別名
left|right|full【outer】 join 表2 別名 on 連接條件
where 篩選條件
group by 分組串列
having 分組后的篩選
order by 排序串列
limit 子句;
特點:
①查詢的結果=主表中所有的行,如果從表和它匹配的將顯示匹配行,如果從表沒有匹配的則顯示null
②left join 左邊的就是主表,right join 右邊的就是主表
full join 兩邊都是主表
③一般用于查詢除了交集部分的剩余的不匹配的行
3、交叉連接
語法:
select 查詢串列
from 表1 別名
cross join 表2 別名;
特點:
類似于笛卡爾乘積
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/257860.html
標籤:其他
上一篇:資料庫連接地址的那些事
下一篇:excel表格如何變成Map集合
