查詢語句express
一.子查詢函數
where型子查詢:把內層查詢的結果做爲外層查詢的比較條件code
二.exists 對象
存在即保留排序
三.函數 字符串
單行函數:一條數據返回一個結果string
多行函數|組函數|聚合函數:多條數據返回一個結果it
3-1.日期函數io
sysdate | current_date:以date類型返回當前的日期模板
sysdate +|- ** :幾天後或幾天前的時刻
add_months(d,x):返回加上x月後的日期d的值
LAST_DAY(d):返回的所在月份的最後一天
Months_between(date1,date2):返回date1和date2之間月的數目
Next_day(sysdate,’星期一’):下一個星期一的時間
3-2.日期對象與字符串之間的轉換
to_date(‘字符串’,識別日期字符串模板):
設定一個特定的時間(用一個特定的時間字符串轉換爲日期):
例:select to_date('2019-07-30 10:11:13','yyyy-mm-dd hh24:mi:ss') from dual;
例:select to_date('2019年07月30日 10:11:13','yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;
To_char():將日期轉爲特殊格式的字符串:
例:select to_char(sysdate,'yyyy"年"mm"月"dd"日" hh24:mi:ss') from dual;
3-3.其餘函數
nvl(string1,string2)->若是string1位null,則結果爲string2的值
decode(condition,case1,express1,case2,express2,…casen,expressn,expression)
decode(判斷字段,檢驗字段值1,結果1,檢驗字段值2,結果2..,默認值)
四.組函數
--對肯定的結果集使用函數得結果
--注意:1.select後 組函數不能和非組函數或分組字段一塊兒使用
2.where 不能使用組函數
3.組函數僅在選擇列表和Having字句中有效
--說明:1.組信息與單條記錄不能同時查詢
2.組函數不能用在where中,能使用的地方select having
3.null不參與運算
經常使用函數
Count() sum() max() min() avg()
五.分組
--select 數據 from 數據源 where 行過濾條件 group by 分組字段 having 組過濾信息 order by 排序字段
--執行順序:from—where—group by—having—select—order by
group by:分組
1) select出現分組函數,就不能使用非分組信息,能夠使用group by字段
2) group by字段 能夠不出現select中,反之select除組函數外的,其餘字段必須出如今group by中
過濾組 having:
where:過濾行記錄,不能使用組函數 having:過濾組,能夠使用組函數
--先過濾再分組:
select max(sal) from emp where deptno in(10,30) group by deptno ;
--先分組再過濾:
select max(sal),deptno from emp group by deptno having deptno in(10,30);
六.rowid 和 rownum 都是僞列
rowid :
--rowid至關於表中每一條記錄的地址,數據插入到列表中的時候就已經存在,後續不會改變
--去重,沒有主鍵,沒有惟一的字段,能夠存在多條數據重複,想達到去重,能夠使用rowid
rownum : 會根據返回記錄生成一個序列化的數字 必須排序,不能直接取大於1的數
七.92語法
1.笛卡爾積 : 交叉相乘
2.等值鏈接:能夠是兩個表中相同字段作鏈接,能夠是不一樣字段作鏈接,但類型要保持一致
例:select * from emp,dept where emp.deptno=dept.deptno;
3.非等值鏈接:
例:select * from emp,salgrade where sal between losal and hisal;
4.自鏈接:特殊的等值鏈接(來自於同一張表)
5.外鏈接: 看+和,主表在,的左邊就叫左外鏈接 主表在,的右邊叫右鏈接