1,sql函式的介紹
2,單行函式
3,多表查詢
sql函式的介紹
1,什麼是sql函式?
2,兩種sql函式:
單行函式和多行函式
單行函式
1,大小寫控制函式
----initcap(ename)首字母大寫 ,upper(大寫),lower(小寫)----
select a.* from emp a where initcap(a.ename)= 『james』 and upper(a.ename) = 『james』
2,字元控制函式
例子:----名字中有a的全部替換0----
select replace(a.ename,『a』,『0』) ename from emp a
----薪水為5位,若不夠5位從左邊開始用0新增----
select lpad(a.sal,『5』,『0』) sal from emp a
3,數字函式
----round:四捨五入----
select round(45.625, 2) from dual; -->45.63
----trunc:截斷----
select trunc(45.625, 2) from dual; -->45.62
----mod:求餘----
select mod(500, 300) from dual; -->200
4,日期
----查詢員工表中沒有部門號的員工,部門號寫沒有部門----
select a.ename,nvl(to_char(a.mgr),『沒有部門』) job from emp a;
----查詢部門中無獎金的獎金為1,有獎金的加0.5----
select a.ename,nvl2(a.comm,a.comm+0.5,1) from emp a
7,條件表示式
-----查詢部門號為10,20,30的員工資訊,部門為10列印1.1倍工資,其他部門列印1.2倍工資(case)----
select a.ename,a.deptno,case a.deptno when 10 then a.sal * 1.1 else a.sal * 1.2 end new_sal from emp a ;
-----(decode)----
select a.ename,a.deptno,decode(a.deptno,10,a.sal * 1.1,a.sal * 1.2) new_sal from emp a ;
----1,列印出 「2023年03月12日 09:05:08」 格式的當前系統的日期和時間(注意: 使用雙引號向日期中新增字元)
select to_char(sysdate, 『yyyy"年"mm"月"dd"日" hh:mi:ss』) from dual; ----> 2023年03月12日 09:05:08
----2,格式化數字: 1234567.89 為 1,234,567.89
select to_char(1234567.89, 『999,999,999.99』) from dual;
----3,字串轉為數字時,若字串中沒有特殊字元, 可以進行隱式轉換:
select 『1234567.89』 + 100 from dual;
----4,若字串中有特殊字元, 例如 『1,234,567.89』, 則無法進行隱式轉換, 需要使用 to_number() 來完成
select to_number(『1,234,567.89』, 『999,999,999.99』) + 100 from dual; ----> 1234667.89
----5,對於把日期作為查詢條件的查詢, 一般都使用 to_date() 把乙個字串轉為日期, 這樣可以不必關注日期格式
select a.ename,a.hiredate from emp a where a.hiredate = to_date(『1981-2-20』,『yyyy-mm-dd』);
----6,查詢每個月月末倒數第 2 天入職的員工的資訊
select a.* from emp a where a.hiredate = last_day(a.hiredate) - 2;
----7,計算公司員工的年薪
select a.*,a.sal * 12 + nvl(a.comm,0) 年薪 from emp a;
多表查詢
1,笛卡兒積
省略連線條件
連線條件無效
所有表中的所有行互相連線
可以在 where 加入有效的連線條件。
2,表的別名
select e.employee_id,
e.last_name,
e.department_id,
d.department_id,
d.location_id
from employees e, departments d
where e.department_id = d.department_id
3,連線多個表4,非等值連線
select a.ename, a.sal, b.
level
from emp a, sal_grades b
where a.sal between b.low_sal and hight_sal;
5,內連線和外連線例(右外連線):
select
*from emp a, dept b where a.deptno(+)
= b.deptno;
6,自然連線7,on 子句建立連線
select employee_id, city, department_name
from employees e
join departments d
on d.department_id = e.department_id
join locations l
on d.location_id = l.location_id;
8,自連線例如:
select m.
*from employees e, employees m
where e.manager_id = m.employee_id and e.last_name =
'chen'
9,左(右)外連線和滿外連線下一章,(3)oracle——————分組函式,子查詢,建立和管理表和資料處理 Oracle學習(2 單行函式
1.字元函式 lower,upper,initcap 將單詞的首字母大寫,其餘的小寫 concat 將字串連線在一起 substr 提取字串中的某一部分 length,返回字串的長度 instr 在字串中查詢某字串首次出現的位置 lpad 以右對齊的方式填充字元型資料,rpad 以左對齊的方式填充字...
oracle之單行函式之多表查詢值之課後練習
26.多表連線查詢時,若兩個表有同名的列,必須使用表的別名對列名進行引用,否則出錯 27.查詢出公司員工的 last name,department name,city select last name,department name,city from departments d,employee...
Oracle入門(十三A2)之單行函式
一 函式介紹 功能 改變資料輸出形式或進行資料運算輸出 二 單行函式 函式格式 函式說明 abs n 返回n的絕對值 floor n 返回小於等於n的最大整數 ln n 返回n的自然對數,n必須大於0 log n1,n2 返回以n1為底n2的對數 exp n 返回e的n次冪,e 2.71828183...