SQL基本查询语句
1.1 Select column1,column2,column3… from table;
● select 指定查詢哪些列的數(shù)據(jù)
● column 指定查詢列
● from 指定查詢哪張表
SELECT district, branch, store FROM tb_store;
1.2 Select distinct column1,column2,column3… from table;
● distinct 指顯示結(jié)果時(shí),是否剔除重復(fù)數(shù)據(jù)
SELECT DISTINCT store FROM tb_store;
1.3 Select * from table;
● * 代表查詢所有列
SELECT * FROM tb_store;
1.4 Select column1 列名1,column2 列名2 from table;
● 表示為查詢出的列定義別名
SELECT district 區(qū)域, branch 分部, store 門店 FROM tb_store;
1.5 Select 語(yǔ)句中可使用表達(dá)式對(duì)查詢的列進(jìn)行運(yùn)算
如:Select column1*column2+column3 from table;
where子句,進(jìn)行過濾查詢
SELECT * FROM tb_store WHERE district = ‘南區(qū)’;
● where 子句經(jīng)常使用的運(yùn)算符
比較運(yùn)算符 >、<、>=、<=、=、<> 大于、小于、大于(小于)等于、不等于
BETWEEN … AND … 顯示在某一區(qū)間的值,包含邊界值
IN(…) 顯示在in列表中的值,例:in(100,200)
LIKE ‘張%’ 模糊查詢,% 代表零個(gè)或多個(gè)任意字符,_ 代表一個(gè)字符
IS (NOT) NULL 判斷是否為空
邏輯運(yùn)算符 AND 多個(gè)條件同時(shí)成立
OR 多個(gè)條件任一成立
NOT 不成立,例:where not(salary>100);
order by 子句排序查詢結(jié)果
Select column1,column2,column3… from table order by column1 asc | desc
● order by后指定的排序的列,排序的列既可是table中的列名,也可以是select 語(yǔ)句后列出的列名,也可以用order by 1,2,3…來表示(數(shù)字表示select后面查詢列的位置序號(hào))
● Asc 升序、Desc 降序,此項(xiàng)缺失的情況下默認(rèn)Asc
SELECT district, branch, store, actual_date
FROM tb_store
WHERE district = ‘南區(qū)’
ORDER BY actual_date; --等同于order by 4
聚合函數(shù)
● count --計(jì)數(shù)
● sum --求和
● avg --求均值
● max/min --最大值/最小值
SELECT district,
COUNT(store), --普通計(jì)數(shù)
COUNT(DISTINCT store), --返回store非空且不重復(fù)的記錄總數(shù)
COUNT(*) --返回總記錄數(shù)
FROM tb_store
WHERE district IN (‘南區(qū)’, ‘北區(qū)’)
GROUP BY district
ORDER BY district;
● 聚合函數(shù)忽略空值
Group by子句
Group by語(yǔ)句通過一定的規(guī)則將一個(gè)數(shù)據(jù)集劃分成若干個(gè)小的區(qū)域,然后針對(duì)若干個(gè)小區(qū)域進(jìn)行數(shù)據(jù)處理。如果在查詢的過程中需要按某一列的值進(jìn)行分組,以統(tǒng)計(jì)該組內(nèi)數(shù)據(jù)的信息時(shí),就要使用group by子句。
group by子句一定要與分組函數(shù)結(jié)合使用,否則沒有意義。
Select column1,column2,sum(column3) from table group by column1,column2;
● 所用包含于SELECT 列表中,而未包含于組函數(shù)中的列都必須包含于 GROUP BY 子句中
使用having 子句過濾
Having和where均可實(shí)現(xiàn)過濾,但having后可以使用合計(jì)函數(shù),having通常跟在group by后,它作用于組。
/取出直銷歷史所有進(jìn)件超過1000的銷售組/
SELECT store, sale_group_no, COUNT(serialno)
FROM tb_credit_approval
WHERE sale_channel = ‘直銷’
GROUP BY store, sale_group_no
HAVING COUNT(serialno) > 1000
ORDER BY 1, 2;
時(shí)間日期相關(guān)函數(shù)
To_date(‘2016-12-01’,’yyyy-mm-dd’) 表示這一天00:00:00
Date’2016-12-01’ 同上
To_date(‘2016-12-01 17:14:15’,’yyyy-mm-dd hh24:mi:ss’) 含時(shí)分秒的日期
Sysdate 獲取當(dāng)前時(shí)間
Add_months(date,n) date加n個(gè)月
Months_between(date1,date2) 兩日期相差的月數(shù)
Last_day(date) 當(dāng)月最后一天
Trunc(date,’mm’) 當(dāng)月第一天
to_char(date,’yyyy-mm’) 獲取年-月
to_char(date,’yyyy’) 獲取年份
Date1-date2 計(jì)算兩日期相差天數(shù)
其他常用函數(shù)
Concat() 或者 || 字符串拼接
Substr(string,position,length) 從string的position開始,截取length個(gè)字符
Nvl(a,b) a字段為空時(shí)返回b字段的值
表連接
● Inner join --內(nèi)連接
SELECT * FROM a INNER JOIN b ON a1 = b1; --on指出關(guān)聯(lián)字段
● Left join --左連接
SELECT * FROM a LEFT JOIN b ON a1 = b1;
● Right join --右連接
SELECT * FROM a RIGHT JOIN b ON a1 = b1;
總結(jié)
- 上一篇: 2019年全国硕士研究生入学统一考试管理
- 下一篇: SQL 基本查询语句