Oracle數據庫查詢基本數據
----------------------------------------------------------------
--找出EMP表
select * from EMP;
--選擇在部門30中員工的所有信息
select * from emp where deptno = 30;
--列出職位為MARTIN的員工的編號,姓名
select empno,ename from emp where job = ‘MANAGER‘;
--找出獎金高於工資的員工
select * from emp where comm>sal;
--找出每個員工獎金和工資的總和
select sal+comm,ename from emp;
--找出部門10中的經理(MANAGER)和部門20中的普通員工(CLERK)
select * from emp where (deptno=10 and job=‘MANAGER‘) or (deptno=20 and job=‘CLERK‘);
--找出部門10中既不是經理也不是普通員工,而且工資大於等於2000的員
select * from emp where deptno=10 and job not in(‘MANAGER‘,‘CLERK‘) and sal>=2000;
--找出有獎金的員工的不同工作
select distinct job from emp where comm is not null and comm>0;
--找出沒有獎金或者獎金低於500的員工
select * from emp where comm is null or comm<500;
--顯示雇員姓名,根據其服務年限,將最老的雇員排在前面
select ename from emp order by hiredate;
select ename from emp order by hiredate desc; --desc 從高到低
---------------------------------------------------------------------
--upper 字母全部大寫
select upper(ename) from emp;
select * from emp where ename=upper(‘smith‘);
--lower 字母全部小寫
select lower(ename) from emp;
select * from emp;
--initcap 首字母大寫
select initcap(ename) from emp;
--concat 合並多個數組
select concat (ename,job) from emp;
--substr 截取字符串長度
--substr(String,start,length)
--string 指定要截取的字符串
--start 必須,指定在字符串的何處開始 正數從指定位置開始 復位從尾數開始 零從第一個字符開始
--length 可選,指定要截取的字符串長度,默認時時結束之前的全部字符
select ename,
substr (ename,-3), --從倒數第三個位置開始,截取之後的字符
substr (ename,-3,2), --從倒數第三個位置開始,截取之後的兩個長度的字符
substr (ename,length(‘ename‘)-3), --設定一個五個長度的字符‘ename‘ (5-3)從第二個位置開始截取
substr (ename,length(‘ename‘)-3,2), --設定一個五個長度的字符‘ename‘ (5-3)從第二個位置開始截取2個字符長度
substr (ename,length(ename)-3), --從下標零開始倒數第三個位置開始,截取之後的字符
substr (ename,length(ename)-3,2) --從下標從零開始倒數三個位置開始,截取之後的兩個長度的字符
from emp;
--length 獲取字符串長度
select length (ename) from emp;
--replace 替換字符 將A換成C
select replace (ename,‘A‘,‘C‘) from emp;
--instr 查找裏面某一個數據的位置 ’字符’區分大小寫
select instr (ename,‘S‘)from emp;
--lpad 左側填充
select ename,
lpad (ename,5,‘*‘), --從左側開始 用‘*‘將字符長度填充夠5個長度
lpad (ename,5,‘網盤‘) --不能識別漢語
from emp;
--rpad 右側填充
select rpad (ename,5,‘*‘) from emp; --從右側開始 用‘*‘將字符長度填充夠5個長度
--trim 過濾 過濾收尾空格
select trim (‘ loyer ‘) from emp;
--round 四舍五入
select round (sal,-1) from emp; --將倒數第一個位置的數值四舍五入
--trunc 將數字截尾取整
select trunc (sal) from emp;
--mod 取余
select mod (sal,300) from emp;
---------------------------------------------------------------------------
-- months_between 兩個日期相差的月數 sysdate代表系統時間 hiredate入職時間
select hiredate from emp;
select hiredate, months_between (sysdate,hiredate) from emp;
--add_moths 向指定日期你中加上若幹月數
select add_months (sysdate,1) from emp;
--next_day 指定周內裏的一個日期 取值1-7
select next_day (sysdate,7) from emp;
--last_day 本月的最後一天
select last_day (sysdate) from emp;
--round日期四舍五入 24小時制 時間過半會進成第二天
select round (sysdate) from emp;
--trunc日期截斷 精確到小時會自動去掉
select trunc (sysdate) from emp;
---------------------------------------------------------------------------
--to_char
select to_char(sysdate,‘yyyy‘) from emp;
select to_char(sysdate,‘yyyy-mm-dd‘) from dual;
select to_char(sal,‘L999,999,999‘) from emp;
select to_char(sysdate,‘D‘) from dual;
---------------------------------------------------------------------------
--找出每個月倒數第三天受雇的員工
select ename from emp where hiredate=last_day(hiredate)-3;
--找出 25 年前雇的員工
select ename from emp where hiredate<=add_months(sysdate,-25*12);
--所有員工名字前加上 Dear ,並且名字首字母大寫
select ‘Dear‘ || initcap(ename) from emp;
--找出姓名為5個字母的員工
select ename from emp where length(ename) =5;
--找出姓名中不帶 R 這個字母的員工
select ename from emp where ename not like ‘%R%‘;
--顯示所有員工的姓名的第一個字
select substr (ename,1,1) from emp;
--顯示所有員工,按名字降序排列,若相同,則按工資升序排序
select sal,ename from emp;
select ename from emp order by ename desc
--找到 2 月份受雇的員
select * from emp where to_char(hiredate,‘fmmm‘)=‘2‘;
Oracle數據庫查詢基本數據