ORACLE日常語句記錄
阿新 • • 發佈:2018-11-08
–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