Oracle筆記
1.當前用戶
show user;
2.sql語句
DML語句(數據操作語言)Insert、Update、 Delete、Merge
DDL語句(數據定義語言)Create、Alter、 Drop、Truncate
DCL語句(數據控制語言)Grant、Revoke
事務控制語句Commit 、Rollback、Savepoint
3.count
如果數據庫表的沒有數據,count(*)返回的不是null,而是0
4.case 語句
demo
Select avg(sal),avg(nvl(comm,0)), (case when avg(nvl(comm,0))>300 then ‘獎金不錯‘ when avg(nvl(comm,0))<100 then ‘獎金較差‘ else ‘獎金一般‘ end) as 獎金狀況 from emp group by job order by job desc,avg(sal) desc;
結果
AVG(SAL) AVG(NVL(COMM,0)) 獎金狀況 ---------- ---------------- ----1400 550 獎金不錯 5000 0 獎金較差 2758.33333 0 獎金較差 1037.5 0 獎金較差 3000 0 獎金較差
5.mysql沒有這幾個功能
INTERSECT 交集
MINUS 返回差異的記錄
6.topN,這個跟mysql有點不一樣
select * from (select * from emp order by sal desc)
where rownum <= 5 order by sal desc;
7.分頁,第一種比第二種要好一些
select * from (select rownum no,e.* from (select * from emp order by sal desc) e where rownum<=5 ) where no>=3; select * from (select rownum no,e.* from (select * from emp order by sal desc) e) where no>=3 and no<=5;
列出員工表中每個部門的員工數(員工數必須大於3),和部門名稱
select d.* ,ed.cou from dept d,(select deptno,count(*) cou from emp group by deptno having count(*)>3) ed where d.deptno=ed.deptno;
8.Oracle主要數據類型
Char,nchar,varchar2,nvarchar2,number(),date,blob(binary二進制流的大對象),clob(文件大對象)
1、 由於char是以固定長度的,所以它的速度會比varchar2快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉
2、 Varchar2一般適用於英文和數字,Nvarchar2適用中文和其他字符,其中N表示Unicode常量,可以解決多語言字符集之間的轉換問題
3、 Number(4,2) 指的是整數占2位,小數占2位(99.994可以。99.995不行,因為是四舍五入)
4、 Number默認為38位
9.清空表中數據
Truncate table student;
10.條件約束
age NUMBER CHECK(age BETWEEN 0 AND 150)
外鍵
pid NUMBER REFERENCES person(pid) ON DELETE CASCADE;
Oracle筆記