oracle資料庫的簡單查詢語句
阿新 • • 發佈:2019-01-25
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;