1. 程式人生 > >ORALCE的SQL語句整理

ORALCE的SQL語句整理

--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 SIXGOD)
--是空判斷
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 SIXGOD2 as select * from SIXGOD
--distinst rows   兩個表的資料記錄全部合併顯示但是去除重複資料
select t.username, t.age from SIXGOD2 t
union
select t.username, t.age from SIXGOD2 t
--all rows  兩個表的資料記錄全部合併顯示
select t.username, t.age from SIXGOD2 t
union all
select t.username, t.age from SIXGOD2 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 SIXGOD2) A ) WHERE RN BETWEEN 2 AND 4
--條件取值decode,類似if else,後面可以寫多個else
select DECODE(T.AGE,78,'張三78',26,'張三26',t.username), t.age from SIXGOD2 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