oracle 學習筆記(五)

來源:互聯網
上載者:User

標籤:

1.集合運算:

UNION運算子返回兩個集合去掉重複元素後的所有記錄。

例:查詢屬於部門10與部門20的所有員工資訊。

select * from emp where deptno=10union select * from emp where deptno=20;

UNIONALL 返回兩個集合的所有記錄,包括重複的。

例:查詢工資在500~1500或在1000~2000範圍的員工資訊(這是兩個工資層級)。

select * from emp where sal between 500 and 1500 union all select * from emp where salbetween 1000 and 1500

INTERSECT運算子返回同時屬於兩個集合的記錄。

例:查詢工資在500~1500又在1000~2000範圍的員工資訊(這是兩個工資層級)。

select * from emp where sal between 500 and 1500intersect select * from emp where salbetween 1000 and 1500

MINUS返回屬於第一個集合,但不屬於第二個集合的記錄。

例:查詢屬於500~1500但不屬於1000~2000範圍的員工資訊。

select * from emp where sal between 500 and 1500minus select * from emp where salbetween 1000 and 1500

2.多表查詢

等值串連:只有兩張表中的資料沒有null值的時候才顯示 如果左表或者右表中查出的資料有Null值 不予顯示
例:查詢員工資訊,要求顯示員工的編號,姓名,月薪和部門名稱
select e.empno,e.ename,e.sal,d.dname
from emp e,dept d
where e.deptno=d.deptno;

不等值串連:
例:查詢員工的工資層級:編號 姓名 月薪和層級
select e.empno,e.ename,e.sal,s.grade
from emp e,salgrade s
外串連:
左外串連:where e.deptno=d.deptno  當串連條件不成立時,等號左邊所代表的表的資訊仍然顯示
右外串連:where e.deptno=d.deptno  當串連條件不成立時,等號右邊所代表的表的資訊仍然顯示
左外串連的寫法: where e.deptno=d.deptno(+)
右外串連的寫法: where e.deptno(+)=d.deptno
實現上面的效果:
select d.deptno,d.dname,count(e.empno)
from emp e,dept d
where e.deptno(+)=d.deptno
group by d.deptno,d.dname
order by 1;

自串連:利用表的別名,將同一張表視為多張表
例:查詢員工資訊:xxx的老闆是yyy
select e.ename||‘的老闆是‘||b.ename
from emp e, emp b
 where e.mgr=b.empno;

使用SQL99標準的串連查詢(JOIN..ON..)
內串連
只返回滿足串連條件的資料(兩邊都有的才顯示)。
select e.*, d.*
from emp e
inner join dept d
on e.deptno=d.deptno
-- 也可以省略inner關鍵字。
左外串連
左邊有值才顯示。
select e.*, d.*
from emp e
left outer join dept d
on e.deptno=d.deptno
-- 也可以省略outer關鍵字
右外串連
右邊邊有值才顯示。
select e.*, d.*
from emp e
right outer join dept d
on e.deptno=d.deptno
-- 也可以省略outer關鍵字
滿外聯結
任一邊有值就會顯示。
select e.*, d.*
from emp e
full outer join dept d
on e.deptno=d.deptno
-- 也可以省略outer關鍵字
交叉串連:
叉集,就是笛卡爾積
select e.*, d.*
from emp e
cross join dept d
-- 沒有串連條件

3.DML,Data Manipulation Language,資料操作語言
插入資料(Insert into):
插入全部列
插入部分列
插入空值
使用 & 變數(建立指令碼)
例:
SQL> insert into emp (empno, ename, sal) values (&empno, &ename, &sal)
SQL> insert into emp (empno, ename, sal) values (&empno, ‘&ename‘, &sal)
SQL> update emp set ename=‘&new_name‘ where empno=&empno
SQL> select empno,ename,&col from emp;
可以在命令列sqlplus或是iSQL*Plus中示範。
從其它表中拷貝資料
insert into mytable 
select mycolums from ...
更新資料(Update)
刪除資料(Delete)
刪除所有的記錄:
Delete 效率高
Truncate 效率低
4.事務:
事務是由完成若干項工作的DML語句組成的
儲存點
設定交易隔離等級:
QL99標準是有4個隔離等級,但Oracle只支援2個:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
set feedback on 設定開啟每次執行完語句之後列印結果資訊
set feedback off 不列印結果資訊
set timing on oracle的記錄時間開啟
set timing off 記錄時間關閉

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

oracle 學習筆記(五)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.