Oracle資料庫(二)常用關鍵字以及函式
阿新 • • 發佈:2022-04-29
常用關鍵字
insert into---插入資料
delete---刪除資料
update---更新一條資料
select---實際工作中儘量不要寫*
set---設定某些屬性
where---給執行的語句加限制條件
--增加資訊 1 insert into p_dept(deptno,dname,loc) values (50,'ceshi','ceshi'); commit; --增加資訊 2 insert into p_dept values (60,'ceshi','ceshi'); commit; --增加資訊 3 insert into p_dept(deptno) values (70); commit; --查詢 select t.*, t.rowid from P_DEPT t select *, t.rowid from P_DEPT select t.deptno from P_DEPT t where t.dname='SALES' --修改deptno為60的資料dname為ceshi2 update P_DEPT t set t.dname='ceshi2' where t.deptno=60 --刪除資料 delete from p_dept e where e.deptno=60; commit;
in---在某個範圍內
--查詢工資是800和3000的
select * from p_emp t where t.sal in (800,3000)
like(%, _)---模糊查詢, %表示任意個字元, _表示單個字元
--查詢name是T 開頭的
select * from p_emp t where t.ename like 'T%'
--查詢name是T 開頭,後面三個字元的
select * from p_emp t where t.ename like 'T___'
order by---(列名或者寫索引:1, 2) ASC正序(預設) DESC倒敘
--按照工資排序 select * from p_emp e order by e.sal --按照職位和工資排序,工資要大到小 select * from p_emp e order by e.job,e.sal desc --按照第一列排序 select * from p_emp e order by 1
group by---按照某幾列分組
having---分組之後的過濾
--按照職位分組
select e.job from p_emp e group by e.job
--按照職位分組,查人數大於2的
select e.job from p_emp e group by e.job having count(*)>2
case...when...---類似於分支
--sex為1=男,0=女 select e.ename 姓名, case e.sex when 0 then '女' when 1 then '男' else '保密' end 性別 from p_emp e --另一種寫法 select e.ename, case when e.sex=0 then '女' when e.sex=1 then '男' else '保密' end from p_emp e
distinct---去除重複
--去重複
select distinct e.job from p_emp e
between...and(閉合區間, 即包括前面的數, 也包括後面的數)
--查工資在800-3000的
select * from p_emp e where e.sal between 800 and 3000
all---表示一個集合中所有的元素
any/some---表示一個集合中任意一個元素
--查詢工資最高的
select * from p_emp t where t.sal >=all(select t1.sal from p_emp t1)
常用函式 to_char---轉換成字元型資料
to_date---轉換成日期型資料
--日期與字元轉換,dual為虛擬表
select to_char(t.hiredate,'yyyy-mm-dd') from p_emp t
select to_date('1994-10-20','yyyy-mm-dd') from dual
--計算時間差
select to_date('1994-10-20','yyyy-mm-dd')-sysdate from dual
--查詢1990之後出生
select * from p_emp t where t.hiredate > to_date('19900101','yyyymmdd')
分組函式:
mod---取餘函式
avg---平均數函式
sum---求和函式
count---計數函式
--計算每個工作的總工資,平均工資,人數 分組
select t.job,sum(t.sal),avg(t.sal),count(t.ename) from p_emp t group by t.job
decode---類似於分支語句的函式
--查詢性別
select e.ename ,decode(e.sex,1,'男',0,'女','保密') from p_emp e
substr---分割字串
--分割name
select substr(e.ename,1) from p_emp e
max---取最大值函式
min---取最小值函式
--查詢最高,最低工資
select max(e.sal) from p_emp e
select min(e.sal) from p_emp e
trunc---取整函式
ceil---向上取整函式
floor---向下取整
--取整,向上,向下 可用於日期
select trunc(12.345) from dual
select trunc(sysdate) from dual
select ceil(12.345) from dual
select floor(12.345) from dual
nvl---過濾空值函式
nvl2---過濾空值函式2
--過濾空值為0,只能處理數字
select nvl(e.comm,0) from p_emp e
select avg(e.comm) from p_emp e --除以不為空的人數
select avg(nvl(e.comm,0)) from p_emp e --除以總人數
--可以處理字串,傳三個引數
select nvl2(e.comm,'為空','不為空') from p_emp e
lower---將字母全部改為小寫
upper---改為大寫
concat---連線兩個字串
? wm_concat---列轉行函式(也屬於分組函式)
--只能連線兩個字串
select concat('aaa','bbb') from dual
select wm_concat() from --不推薦使用,將一列值連結可分租