1. 程式人生 > >oracle資料庫的簡單查詢語句

oracle資料庫的簡單查詢語句

1、簡單的查詢語法

select [distinct] *| [as] [列別名],列名稱 [as] [列別名]
from 表名稱 [表別名]
[where 條件(s)]
[order by 排序的欄位 | 列索引號 asc|desc,排序的欄位2 asc|desc ...]...;
執行順序:
1、先執行from子句,確定要檢索資料的來源
2、執行where子句,使用限定符對資料進行過濾
3、執行select子句,確定要檢索出的資料列
4、執行order by子句排序


distinct:去除重複的列,當查詢兩條記錄的所有的列都相同時才會去除重複

例項:

--查詢emp表中的資料
SELECT * FROM emp; --查詢出公司員工編號,姓名,工作 select empno,ename,job from emp; --起別名 select job as jobs from emp; --去除重複的行記錄 select distinct job as jobs from emp; --查詢出年工資,每天的工資 select empno,ename,sal*12 Annual_salary,sal/30 day_salary from emp;

2、select子句後面編寫常量

1、字串常量:使用"'"宣告,如:"se"
2、數字常量:直接輸出數字,如:4532
3、日期: 4、單引號:(')

例項:

--增加貨幣單位的常量
select empno as 僱員編號,ename as 僱員姓名,(sal+200)*12+5000 as 年薪,'¥' 貨幣 from emp;
--連線符||的使用
select '編號:' || empno||' 的僱員姓名是:'||ename 僱員資訊 from emp;

3、限定查詢
3.1常用的限定查詢運算子

NO 函式名稱 描述
關係運算符
,<,>=,<=,=,!=,<>
進行大小或相等的比較,不等於:!=和<>
判斷null is null,is not null 判斷某一列的內容是否為null
邏輯運算子 and,or,not and:與,or:或,not:非
範圍查詢 between最小值and最大值 在指定範圍內查詢,查詢結果為:最小值<=內容<=最大值
列表範圍查詢 in 通過in可以指定一個範圍的查詢
模糊查詢 like 對欄位進行模糊匹配

3.2 限定查詢的例項

--工資高於1200的所有與員工的資訊
select * from emp where sal >1200;
--查詢出所有業務員(CLEARK)僱員的資訊
select * from emp where job='CLERK'
--查詢出10部門中的激勵或者20部門中業務員的資訊
select * from emp 
where (deptno=20 and job='CLEARK') OR (deptno=10 and job='MANAGER')
--查詢出在1981年僱傭的全部僱員資訊
select *
from emp
where hiredate between '01-1月-1981' and '31-12月-1981'
--查詢出佣金不為空的資訊
select *
from emp
where comm is not null;
select * 
from emp
where not comm is null;
--in的指定範圍的查詢
select * 
from emp
where empno in(7369,7788,7566);
--現在查詢除了7369,7788,7566之外的僱員的資訊
select * 
from emp
where empno not in(7369,7788,7566);

4、模糊查詢like,not like
百分號(%):可匹配任意型別和長度(可以匹配0位,1位或多位長度)的字元
下劃線(_):匹配單個任意字元,通常來限制表示式的字元長度
例項:

--查詢出僱員姓名以S開頭的所有僱員的資訊
select * 
from emp
where ename like 'S%'
--查詢出第二個字母是M的全部僱員資訊
select * 
from emp
where ename like '_M%'
-- 查詢出姓名中任意位置包含字母F的僱員資訊
select * 
from emp
where ename like '%F%'
--找出10部門中所有的經理(MANAGER),部門20中所有的業務員(CLEARK),既不是經理又不是業務員但薪金大於2000元的所有員工的詳細資料並且要求這些僱員的西寧中包含字母S或字母K
select * from emp
where ((deptno=10 and job='MANAGER')or (deptno=20 and job='CLERK')
or (job not in ('MANAGER','CLEARK')and sal >2000))
and(ename like '%S%' or ename like '%K%')

5、對結果進行排序

--排序的查詢語句
select empno,ename,sal,job 
from emp
order by 3 desc
--order by sal desc

--按照工資由高到低排序,工資相等的話按照僱傭日期由早到晚進行排序
select * from emp
order by sal desc,hiredate asc;