JAVA 微職位:SQL的簡單查詢

一、SQL的簡單查詢數據庫

一、掌握SQL查詢的基本語法oracle

二、SQL進行查詢的各類操做ide

SELECT [DISTINCT]*| 列[列名],列[列別名],...搜索引擎

FROM 表名稱[別名];spa

執行順序:一、FROM 二、SELECT索引

範例:查詢emp表中的所有記錄:SELECT * FROM emp ;開發

FROM子句肯定數據來源,SELECT子句控制所須要的數據列範例:進行數據的投影--控制所須要顯示的數字符串


據列:查詢每一個僱員的編號姓名工資it

SELECT empno,ename,sal*12 FROM emp ;class

再簡單查詢之中也支持四則運算

範例:如今要求查詢每一個僱員的編號姓名基本年薪(月工資是sal,年薪*12)

SELECT empno ,ename ,sal*12 FROM emp ;

部分的列名稱很差看,能夠進行別名設置


SELECT empno,ename,sal*12 income FROM emp ;


SELECT empno 僱員編號,ename 姓名,sal*12 年薪 FROM emp ;

若是想開發正常,儘可能別用漢語

還支持數據鏈接操做,使用 」||」連接

SELECT empno || ename FROM emp ;(普通數字直接編寫)

SELECT empno || 1 FROM emp ;(字符串使用單引號聲明)

SELECT empno || 'hello' FROM emp; 

實現格式化的輸出操做:SELECT '編號:' || empno || ',姓名:' || ename FROM emp ;

DISTINCT關鍵字,去除重複內容

查詢全部僱員的職位信息:

SELECT job FROM emp ;

SELECT DISTINCT job FROM emp ;

SELECT DISTINCT ename,job FROM emp ;

總結:簡單查詢中的最大特徵在於:控制數據列,可是他沒法進行數據行的控制。


二、SQL的限定查詢

一、SQL語句的執行順序

二、限定符號的使用

若是想對所選的數據行進行控制,那麼能夠利用WHERE子句完成

SELECT [DISTINCT] * | 列[別名],列[別名]... 

FROM 表名稱[別名]

[WHERE 限定條件(s)];

執行順序

一、FROM 肯定數據來源

二、WHERE 篩選數據行

三、SELECT 選出所須要的數據列,最後被執行

關係運算:>、<...

範圍運算:BETWHERE...END;

空判斷:IS NULL、IS NOT NULL;

IN判斷:IN 、NOTIN 、 exists()(複雜查詢);

模糊查詢:LIKE、NOTLIKE.

以上限定符只能判斷一次,若是出現若干個限定符、須要進行限定符連接,使用邏輯運算:AND(與)、 OR(或)、 NOT(非);

一、關係運算符

範例:查詢工資低於1200的僱員

SELECT *

FROM emp 

WHERE sal<1200 ;

範例:查詢工資3000的僱員

SELECT *

FROM emp 

WHERE sal=3000 ;

範例:查詢Smith的僱員信息(在oracle數據庫中,數據區分大小寫)

SELECT *

FROM emp 

WHERE ename='SMITH' ;

對於不等於有2個符號:!=、<>;

範例:查詢職位不是辦事員的僱員(職位是job的字段、辦事員的職位名稱CLERK)

SELECT *

FROM emp 

WHERE job<>'CLERK' ;


SELECT *

FROM emp 

WHERE job!='CLERK' ;

二、邏輯運算

邏輯運算能夠保證鏈接多個條件,主要使用AND/OR完成。

範例:要求查詢出不是辦事員但工資低於3000的僱員信息

SELECT *

FROM emp 

WHERE job<>'CLERK' AND sal<3000 ;

範例:查詢不是辦事員也不是銷售的僱員信息

SELECT *

FROM emp 

WHERE job<>'CLERK' AND job<>'SALESMAN' ;

範例:查詢出職位是辦事員,或者工資低於1200的僱員

SELECT *

FROM emp 

WHERE job='CLERK' OR sal<1200 ;

除了AND與OR以外,還可使用NOT進行求反。即:true變爲false、false變爲true

範例:觀察NOT操做

SELECT *

FROM emp 

WHERE NOT sal>2000 ;

三、範圍運算:BETWEEN...AND

BETWEEN...AND主要功能是進行範圍插敘

SELECT *

FROM emp 

WHERE 字段|樹枝 BETWEEN 最小值 AND 最大值 ;

範例:輸出工資在1500~3000的全部僱員

SELECT *

FROM emp 

WHERE sal BETWEEN 1500 AND 3000 ;

使用BETWEEN...END是一個運算符,而是用關係與邏輯的組合屬於兩個運算符,天然效率會更高

在oracle中的全部運算符都不收數據類型的控制,在以前使用的是數字進行判斷,那麼除了數字以外也可使用字符串或者日期進行判斷。

範例:查詢出全部在1981年的僱員信息


SELECT *

FROM emp

WHERE hiredate BETWEEN '01-1月-81' AND '31-12月-1981' ;

範例:無聊的字符串範圍


SELECT * FROM emp WHERE ename BETWEEN 'ALLEN' AND 'CLARK' ;

四、空判斷

null是從數據庫定義上來說屬於一個未知的數據,任何一個數字和null進行計算結果仍是爲null

SELECT null + 1 FROM emp ;

null不能使用關係運算判斷。關係能夠判斷的是數據,因此在SQL智能用IS NULL/IS NOT NULL來判斷不爲空

範例:查詢因此領取佣金的僱員信息(comm字段表示佣金,若是領取,comm的內容不是null)

SELECT *

FROM emp

WHERE comm IS NOT NULL ;

五、IN操做符(謂詞IN 核心)

IN指的是根據一個指定的範圍進行數據查詢

範例:查詢出僱員編號是7369.7566.7788.9999的僱員信息

SELECT *

FROM emp

WHERE empno=7369 OR empno=7566 OR empno=7788 OR empno=9999 ;


SELECT *

FROM emp

WHERE empno IN (7369,7566,7788,9999) ;

NOT IN 在使用NOT IN時若是查找的數據範圍內包含NULL值,那麼不會有任何的查詢結果返回,IN操做無此如今

SELECT *

FROM emp

WHERE empno NOT IN (7369,7566,7788,9999) ;


SELECT *

FROM emp

WHERE empno IN (7369,7566,7788,null) ;


SELECT *

FROM emp

WHERE empno NOT IN (7369,7566,7788,null) ;

五、模糊查詢:LIKE(核心)

LIKE能夠實現數據模糊插敘,若是使用LIKE則必須使用以下兩個匹配符號:

「_」匹配任意的一位符號;

「 % 」匹配任意的符號(0位、1位、多位)

範例:查詢全部僱員姓名中一字母A開頭的僱員信息

SELECT *

FROM emp

WHERE ename LIKE 'A%' ;

範例:查詢全部僱員姓名第二個字母是M的因此僱員信息

SELECT *

FROM emp

WHERE ename LIKE '_A%' ;

範例:查詢僱員姓名任意位置上存在A的僱員信息

SELECT *

FROM emp

WHERE ename LIKE '%A%' ;

關於LIKE的兩點說明

一、若是在使用LIKE進行限定查詢的時候,若是沒有設置任何關鍵字,那麼表示查詢所有;


SELECT * FROM emp WHERE ename LIKE '%%' ;

二、LIKE 能夠在任意的數據類型上使用(原生支持)

SELECT * FROM emp 

WHERE ename LIKE '%A%' OR sal LIKE '%1%' OR hiredate LIKE '%81%' ;

雖然全部的數據類型都支持LIKE ,可是每每會在字符串上使用,所見到的大部分系統搜索功能都是此語句實現的。可是不包含搜索引擎的實現。

相關文章
相關標籤/搜索