number:數字型別 包含整數和小數 12 -13,11.2
**varchar2:**字串型別 包含漢字,字母和符號, 需要用單引號包裹 『abc』 『a』 『e』
date:時間型別
number(5):表示是數字型別,長度是5位
number(5,2):長度為5位,最多2位小數 123.45 123.4—123.40 123–123.00
number(3,1):長度3位,小數字1位 12.3 1.2 0.1
時間格式需要to_date()函式處理,
例子:to_date(『20191106』,『yyyymmdd』) 其中』'20191106』是字串格式的日期,'yyyymmdd』是時間格式,時間格式需要跟字串保持格式一致;
範例: select to_date(『20191106』,『yyyymmdd』) from dual;
dual:是偽表; select 1 from dual; 返回 1
select sysdate from dual;–返回系統當前時間;
定義:查詢表中滿足特定條件的資料
語法: select * from 表名 where 條件(列名=值);
where:關鍵字, 可以理解為 條件是
範例: select * from emp where job=『clerk』;–查詢emp表中job是clerk的所有人的資訊;
=(相比於》,包含邊界)範例:<=(相比於<,包含邊界)
<> !=(盡量寫第一種)
between…and…按照範圍取值,但包含兩頭的邊界.
select * from emp where sal between 1100 and 3000;–找出sal值在1100-3000範圍之間的資料(包含1100和3000)
判斷為空:is null;
判斷不為空: is not null
select * from emp where sal is null;–查詢emp表中sal欄位為空的
select * from emp where comm is not null;–查詢emp表中comm欄位不為空的所有資料;
判斷空格:
select * from emp where job=』 『;–判斷乙個空格的情況
select * from emp where job=』 『;–判斷兩個空格
select * from emp where job=』 ';–判斷三個空格
範例:
select * from emp where sal>1600;–查詢emp表中sal值大於1600的所有資料
select * from emp where sal>=1600;–查詢emp表中sal值大於等於1600的所有資料
練習:
查詢emp表中ename是smith的人的deptno和mgr;
select deptno, mgr from emp where ename=『smith』;
查詢emp表中job是manager的人的資訊;
select * from emp where job=『manager』;
查詢emp表中sal是1250的人的ename和deptno;
select ename, deptno, sal from emp where sal=1250;
查詢emp表中comm是1000的所有人的資訊;
select * from emp where comm=1000;
查詢emp表中deptno是30的ename和mgr
select ename, mgr, deptno from emp where deptno=30;
查詢emp表中sal值大於2450的所有資料;
select * from emp where sal>2450;
查詢emp表中comm值小於1000的所有資料;
select * from emp where comm<1000;
查詢emp表中comm值大於等於1000的所有資料;
select * from emp where comm>=1000;
查詢emp表中sal小於等於3000的所有資料;
select * from emp where sal<=3000;
查詢emp表中deptno不等於10的所有人資訊;
select * from emp where deptno<>10;
and:
定義:需要同時滿足兩個或者以上的條件時,條件之間用and連線. and是關鍵字,表示同時滿足前後的條件;
語法: select * from 表名 where 條件1 and 條件2;
範例:select * from emp where deptno=10 and job=『president』;–查詢emp表中deptno是10並且job是president.
or:
定義:需要滿足兩個或多個條件中任意乙個時,用or連線. or是關鍵字,表示滿足任一條件即可;
語法:select * from 表名 where 條件1 or 條件2;
範例:select * from emp where deptno=10 or deptno=20;–查詢emp表中deptno是10或者20的所有資料;
in():
定義:可以理解為多個or的簡單寫法. 即字段值在in後所有的值範圍內的資料都會展示;
語法: select * from 表名 where 列名 in(值1, 值2, 值3);
範例:select * from emp where deptno in(10,20);–查詢部門編號為10或者20的所有人的資訊.
select * from emp where job in(『clerk』,『salesman』,『analyst』);–查詢工種是clerk, salesman或者analyst的所有人資訊;
優先順序: and>or
select *
from emp
where
deptno = 10 and job = 『manager』
ordeptno = 20 and job = 『manager』;
練習:
1.查詢工資大於1000的員工資訊;
select * from emp where sal>1000;
2.找出部門10中所有經理(job是manager的為經理)和部門20中的所有辦事員(job是clerk的是辦事員)的詳細資料;
select * from emp where deptno=10 and job=『manager』 or deptno=20 and job=『clerk』;
3.請從表emp中查詢工種是職員clerk或經理manager的雇員姓名、工資;
select ename, sal from emp where job=『clerk』 or job=『manager』
4.請在emp表中查詢部門號在10-30之間的雇員的姓名、部門號、工資、工作;
select ename, deptno, sal, job from emp where deptno>=10 and deptno<=30;
5.查詢工資在1000~3000之間的雇員所在部門的所有人員資訊;
select * from emp where sal>=1000 and sal<=3000;
6.查詢工作是clerk的員工資訊;
select * from emp where job=『clerk』;
7.查詢表emp中所有的工資大於等於2000的雇員姓名;
select * from emp where sal>=2000;
8.查詢10號和20號部門的員工資訊;
select * from emp where deptno=10 or deptno=20;
9.查詢emp表中所有員工的資訊,要求查詢結果列名用中文顯示;
select ename 員工姓名, empno 員工編號, sal 工資, mgr 管理員編號, deptno 部門編號, job 工種, hiredate 入職日期, comm 佣金 from emp;
10.找出不收取佣金(comm)或收取的佣金低於100的雇員;
select * from emp where comm is null or comm<100;
資料庫的查詢排序 分組查詢及篩選
查詢排序 語法 order by 字段 asc desc asc 順序,正序。數值 遞增,字母 自然順序 a z desc 倒序,反序。數值 遞減,字母 自然反序 z a 預設情況下,按照插入記錄順序排序 select from student 需求 按照id順序排序 select from stu...
oracle資料庫篩選備份
篩選備份 mdata01資料導到sdata02 1.給使用者授予許可權 grant connect,resource,dba to username grant read,write on directory dpdata to username 2.檢視資料庫dba directories目錄 s...
資料庫之查詢優化
1 來自pg文件 postgresql使用的是基於成本的優化器 cost based optimizer 理論上基於成本的優化器會計算使用者輸入的查詢語句的每個合法的查詢計畫的執行成本,然後從中選擇成本最小的計畫作為執行查詢語句的 最終計畫。在實際應用中,查詢語句的合法的 查詢計畫的個數是隨查詢複雜...