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