(2)Oracle 單行函式和多表查詢

2021-10-03 19:06:01 字數 3921 閱讀 4522

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...