麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > Oracle > 正文

oracle基本查詢用法入門示例

2020-07-26 13:25:59
字體:
來源:轉載
供稿:網友

本文實例講述了oracle基本查詢用法。分享給大家供大家參考,具體如下:

一、基本select語句

SELECT *|{[DISTINCT] column|expression [alias], ...}FROM table;

例如:

--查詢所有數據select * from emp;--查詢指定列數據select empno,ename,sal from emp;--算數運算符(+ - * /)select ename,sal,sal+30 from emp;--使用括號select ename,sal,12*(sal+30) from emp;--定義空值--(空值是無效的,未指定,未知的或不可預知的值,空值不是空格或是0)select ename,job,sal,comm from emp;--空值的數學運算--包含空值的數學表達式的值都為空值select ename,12*sal+comm from emp;--列的別名--別名使用雙引號,AS可以省略select deptno as "no",ename as "name" from emp;--連接符,把列與列,列與字符連接在一起select deptno || '--' || ename from emp;--字符串--日期和字符只能在單引號中出現select 'hello ' || ename from emp;--刪除重復行select distinct deptno from emp;--顯示表結構desc[ribe] tablename;

二、過濾和排序

SELECT *|{[DISTINCT] column|expression [alias], ...}FROM table[WHERE condition(s)];

例如:

--查詢指定條件數據select deptno,ename from emp where deptno=10;--字符串和日期包含在單引號中--字符串大小寫敏感,日期格式敏感select ename,job,deptno from emp where ename='King';--比較運算符(= > < <= >= <> !=)select ename,sal from emp where sal<1500;--其他比較運算符--BETWEEN ... AND ... 在兩個值之間包含邊界--IN(set) 等于值列表中的一個--LIKE 模糊查詢--IS NULL 空值select ename,sal,deptno from emp where deptno in(10,30);select ename,sal,comm from emp where comm is null;--邏輯運算(AND OR NOT)select ename,sal from emp where deptno=10 and sal>1500;

排序

ORDER BY 字段 [DESC|ASC]

例如:

select ename,sal from emp order by sal desc;--多列排序--先按第一列排序,如果相同,則按第二列排序,以此類推select * from emp order by sal desc,hiredate desc;

三、單行函數

1、字符函數

--LOWER 轉換小寫--UPPER 轉換大寫--INITCAP 首字母大寫select lower(ename) from emp;--CONCAT 接接字符串--SUBSTR 截取字符串--LENGTH 字符串長度--INSTR 查找字符串--LPAD 左邊填充字符--RPAD 右邊填充字符--TRIM([leading|trailing|both] 字符串1 from 字符串2) --TRIM可以刪除兩邊空格,也可刪除其他字符--REPLACE 替換字符串select concat('aa','bb') from emp;select substr('abcdefg', 2, 3) from emp;select length('test...') from emp;select instr('hello world', 'w') from emp;select lpad(sal, '10', '0') from emp;select rpad(sal, '10', '*') from emp;select trim(' test ') from emp;--從尾部刪除字符串*號select trim(trailing '*' from '**1212121**') from emp;--把字符串中的22替換成88select replace('11223344', '22', '88') from emp;

2、數字函數

--ROUND 四舍五入--TRUNC 截斷--MOD 求余select round(25.533,2) from dual;select trunc(25.323,2) from dual;select mod(8, 3) from dual;

3、日期

oracle中日期型數據實際含有兩個值:日期和時間。

默認格式為:DD-MON-RR

--返回系統時間select sysdate from dual;--兩個日期相減,返回日期之間相差的天數select ename,(sysdate-hiredate) / 7 "weeks" from emp;--MONTHS_BETWEEN 兩日期相差月數--ADD_MONTHS 指定日期加上若干月數--NEXT_DAY 指定日期的下一個日期--LAST_DAY 本月的最后一天--ROUND 日期四舍五入--TRUNC 日期截斷select months_between(sysdate,hiredate) from emp;

4、顯式數據類型轉換

--TO_CHAR(date, 'format_model')--把日期轉換成字符串select to_char(sysdate, 'YYYY MM DD HH:MI:SS') from dual;--TO_CHAR(number, 'format_model')select ename,sal,to_char(sal, '$99,999.00') from emp;--TO_NUMBER(char[,'format_model'])--TO_DATE(char[,'format_model'])

通用函數,適用于任何數據類型,也適用于空值

NVL(expr1,expr2)NVL2(expr1,expr2,expr3)NULLIF(expr1,expr2)COALESCE(expr1,expr2,...)

5、條件表達式

在sql語句中使用if-then-else邏輯
case表達式,sql99語法,類似basic,比較繁鎖
decode函數,oracle自已語法,類似java,比較簡潔

CASE expr WHEN comparison_expr1 THEN return_expr1     [WHEN comparison_expr2 THEN return_expr2      WHEN comparison_expr3 THEN return_expr3      ELSE else_expr]END
DECODE(col|expression, search1, result1           [,search2, result2, ..., ]           [,defautl])
select ename,sal,decode(round(sal/1000),1, '一倍',2, '二倍',3, '三倍','不知倍數') from emp;

6、函數嵌套

單行函數可以嵌套,嵌套函數的執行是由內到外。

四、分組函數

分組函數作用于一組數據,并對一組數據返回一個值。
常用組函數

--AVG--COUNT--MAX--MIN--SUMselect sum(sal) as "total" from emp;select max(sal) from emp;select count(*) from emp where deptno=10;select count(distinct deptno) from emp;

分組數據
通過GROUP BY可以將數據分成若干組

select deptno,avg(sal) from emp group by deptno;

(*注意:在select列表中所有未包含在組函數中的列都必須包含在group by中。)

--多列分組select deptno,job,avg(sal) from emp group by deptno,job;

過濾分組
通過HAVING子句對分組進行過濾

select deptno,avg(sal) from emp group by deptno having deptno in(10,20);

(*注意:不能在where子句中使用組函數,having子句中可以。)
嵌套組函數

select max(avg(sal)) from emp group by deptno;

五、多表查詢

oracle的連接  sql99的連接
等值連接        cross joins
不等值連接     natural joins
外連接           using clause
自連接           full or two sided outer joins

SELECT table1.column, table2.columnFROM table1,table2WHERE table1.column1=table2.column2;
--等值連接select d.dname,e.ename,e.sal from emp e, dept d where e.deptno=d.deptno;--多連接條件和and操作符select d.dname,e.ename,e.sal from emp e, dept d where e.deptno=d.deptno and e.deptno=10;

表的別名
1、使用表別名可簡化查詢
2、使用表名前綴可以提高執行效率
3、如果使用了表的別名,則不能再使用表的真名。

--不等值連接--查詢員工部門名稱和工資等級select d.dname, e.ename, e.sal, s.gradefrom emp e, dept d, salgrade swhere e.deptno = d.deptnoand e.sal >= s.losaland e.sal <= s.hisal;

外連接語法
外連接查詢可以查詢不滿足連接條件的數據。
外連接的符號是(+)

SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column(+) = table2.column;SELECT table1.column, table2.columnFROM table1, table2WHERE table1.column= table2.column(+) ;
--查詢部門人數select d.dname, d.deptno, count(e.empno) from emp e, dept d where e.deptno(+) = d.deptno group by d.deptno,d.dname;

自連接

--查詢員工的上級select e.ename as "員工", e2.ename as "上級" from emp e, emp e2 where e.empno = e2.mgr;

使用sql:1999語法連接

SELECT table1.column, table2.columnFROM table1[CROSS JOIN table2] |[NATURAL JOIN table2] |[JOIN table2 USING (column_name)] |[JOIN table2 ON(table1.column_name=table2.column_name)] |[LEFT|RIGHT|FULL OUTER JOIN table2 ON(table1.column_name=table2.column_name)];

使用cross join連接的表產生叉集,叉集和笛卡爾集是相同的。

select e.ename,d.dname from emp e cross join dept d;

使作natural join自然連接,會以兩個表中具有相同名字的列為條件創建等值連接。

select e.ename,d.dname from emp e natural join dept d;

使用using創建連接,用natural join創建等值連接時,可以使用using指定等值連接中需要用到的列。

select e.ename,d.dname from emp e join dept d USING (deptno);

使用on創建連接,可以指定額外的連接條件。

select e.ename,d.dname from emp e join dept d on e.deptno=d.deptno;

使用on創建多表連接

select e.ename, d.dname, e2.enamefrom emp ejoin dept don e.deptno = d.deptnojoin emp e2on e.empno = e2.mgr;

內連接和外連接
在sql:1999中,內連接只返回滿足連接條件的數據。
兩個表在連接過程中除了返回滿足連接條件的行以外,還返回左(右)表中不滿足條件的行,這種稱為左(右)外連接。
兩個表在連接過程中除了返加滿足連接條件的行以外,還返回兩個表中不滿足條件的行,這種連接稱為滿外連接。

--左外連接select e.ename, d.dnamefrom emp eleft outer join dept don e.deptno = d.deptno;
--右外連接,返回右表中不滿足條件的行select e.ename, d.dnamefrom emp eright outer join dept don e.deptno = d.deptno;
--滿外連接select e.ename, d.dnamefrom emp efull outer join dept don e.deptno = d.deptno;

更多關于Oracle相關內容感興趣的讀者可查看本站專題:《Oracle常用函數匯總》、《Oracle日期與時間操作技巧總結》及《php+Oracle數據庫程序設計技巧總結》

希望本文所述對大家Oracle數據庫程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久草在线最新 | 欧美日韩亚洲国产 | 亚洲精品久久久久久下一站 | 天堂在线中文资源 | 毛片免费一区二区三区 | 草莓视频在线导航 | 久久久久久久亚洲精品 | av在线免费观看网 | 午夜丰满少妇高清毛片1000部 | 国产成人高潮免费观看精品 | 久久久久久91 | 中文字幕亚洲视频 | 日本在线不卡一区二区 | www.91操| 欧美在线观看视频网站 | 午夜小视频免费观看 | av电影网站在线 | 国产精品高潮视频 | 久久人人av | chinese xxxx hd pron8 tube | 欧美成人精品h版在线观看 久久久久久三区 | 69av导航| 精品国产乱码久久久久久丨区2区 | 精精国产xxxx视频在线野外 | 伊人在线视频 | 欧洲伊人网 | 日本a∨精品中文字幕在线 被啪羞羞视频在线观看 | 国产精品久久久久久久久久久久久久久 | 黄色网址免费在线播放 | 午夜国产成人 | 久久草在线视频免费 | 成人不卡一区二区 | 欧美日韩在线视频一区 | 久久久久久久.comav | 在线看免费观看av | 夜夜b| chinesexxxx刘婷hd 国产91在线播放九色 | 蝌蚪久久窝 | 欧美一级成人一区二区三区 | 欧美性生活xxxxx | 成人男女免费视频 |