1. 程式人生 > >ORACLE日常語句記錄

ORACLE日常語句記錄

–asc 按升序排列

select t.amount,ROWNUM from T_STUDENT  T order by T.times asc

–desc 按降序排列

select t.amount,ROWNUM from T_STUDENT  T order by T.times desc  

–類似

select * from T_STUDENT  where username like '三%'

–選擇多個條件的資料

select * from T_STUDENT  where username in('張三','張三9')

–選擇多個條件的資料

select * from T_STUDENT  where username in(SELECT username FROM T_STUDENT )

–是空判斷

select * from T_STUDENT  where age is null

–非空判斷

select * from T_STUDENT  where age is not null

–select的查詢語句可支援多層

select * from T_STUDENT  where (SELECT age FROM T_STUDENT  WHERE AGE=78)=AGE

–複製表的結構及資料

create  table T_STUDENT as select * from T_STUDENT2

–distinst rows 兩個表的資料記錄全部合併顯示但是去除重select t.username, t.age from T_STUDENT t
union
select t.username, t.age from T_STUDENT t
–all rows 兩個表的資料記錄全部合併顯示

select t.username, t.age from T_STUDENT t
union all
select t.username, t.age from T_STUDENT t

– left join inner join right join 左聯結 內聯結 右聯結
– left join (左聯接) 返回包括左表中的所有記錄和右表中聯結欄位相等的記錄
– right join (右聯接) 返回包括右表中的所有記錄和左表中聯結欄位相等的記錄
– inner join (等值連線) 只返回兩個表中聯結欄位相等的行

select t.name,d.pro_name,d.price from USERS t inner JOIN T_ORDER d on d.username_id = t.name
select t.name,d.pro_name,d.price from USERS t,T_ORDER d
where d.username_id(+) = t.name

–分頁

SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM SIXGOD2) A WHERE ROWNUM <= 40 ) WHERE RN >= 1

–分頁第二個方式,可以使用between and的方式做分頁

SELECT * FROM ( SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM T_STUDENT) A ) WHERE RN BETWEEN 2 AND 4

–條件取值decode,類似if else,後面可以寫多個else

select DECODE(T.AGE,78,'張三78',26,'張三26',t.username), t.age from T_STUDENT t

–條件取值case when,類似If else

select case T.AGE when 78 then '張三78' end from SIXGOD2 t

–生成隨機值

select sys_guid() from  dual

–判斷是否為空,如果為空就顯示第二個引數

select NVL (T.USERNAME_ID, ' IS NULL ') from T_ORDER t