九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Oracle筆記(四) 簡(jiǎn)單查詢(xún)、限定查詢(xún)、數(shù)據(jù)的排序

一、簡(jiǎn)單查詢(xún)

SQL(Structured Query Language) 結(jié)構(gòu)化查詢(xún)語(yǔ)言,是一種數(shù)據(jù)庫(kù)查詢(xún)和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及查詢(xún)、更新和管理關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)。ANSI(美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì))聲稱(chēng),SQL是關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的標(biāo)準(zhǔn)語(yǔ)言。

Oracle數(shù)據(jù)庫(kù)之所以發(fā)展的很好,主要也是因?yàn)镺racle是全世界最早采用SQL語(yǔ)句的數(shù)據(jù)庫(kù)產(chǎn)品。

SQL功能強(qiáng)大,概括起來(lái),它可以分成以下幾組:

  • DML(Data Manipulation Language) 數(shù)據(jù)操作語(yǔ)言,用于檢索或者修改數(shù)據(jù)
  • DDL(Data Definition Language) 數(shù)據(jù)定義語(yǔ)言,用于定義數(shù)據(jù)的結(jié)構(gòu),創(chuàng)建、修改或者刪除數(shù)據(jù)庫(kù)對(duì)象
  • DCL(Data Control Language) 數(shù)據(jù)控制語(yǔ)言,用于定義數(shù)據(jù)庫(kù)的權(quán)限

簡(jiǎn)單查詢(xún)指的是查詢(xún)出一張表中的所有的數(shù)據(jù),簡(jiǎn)單查詢(xún)的語(yǔ)法如下:

SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名]]FROM 表名稱(chēng) [別名];

范例:查詢(xún)dept表的全部記錄

SELECT * FROM dept;

范例:查詢(xún)出每個(gè)雇員的編號(hào)、姓名、基本工資

SELECT empno, ename, sal FROM emp;

范例:查詢(xún)出每個(gè)雇員的職位

SELECT job FROM emp;

這個(gè)時(shí)候發(fā)現(xiàn)查詢(xún)出來(lái)的job內(nèi)容中出現(xiàn)了重復(fù)的數(shù)據(jù),而之所以數(shù)據(jù)會(huì)有重復(fù),主要的原因是現(xiàn)在沒(méi)有消除掉重復(fù)記錄,可以使用DISTINCT消除掉所有的重復(fù)內(nèi)容:

SELECT DISTINCT job FROM emp;

但是對(duì)于重復(fù)數(shù)據(jù),指的是一行中的每個(gè)列的記錄都重復(fù),才叫重復(fù)數(shù)據(jù)。

范例:查詢(xún)出每個(gè)雇員的姓名、職位

SELECT DISTINCT ename, job FROM emp;

在進(jìn)行簡(jiǎn)單查詢(xún)的操作之中,也可以使用各個(gè)數(shù)學(xué)的四則運(yùn)算符。

范例:要求顯示每一個(gè)雇員的姓名、職位、基本年薪

SELECT ename, job, sal*12 FROM emp;

但是這個(gè)時(shí)候顯示列上出現(xiàn)了一個(gè)“SAL*12”,這個(gè)肯定是顯示的查詢(xún)列,但是這個(gè)列名稱(chēng)不方便瀏覽,所以此時(shí)可以起一個(gè)別名。

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

但是對(duì)于別名,建議不要使用中文,只要是程序的開(kāi)發(fā),都要回避中文。

范例:由于公司的福利很高,每個(gè)月都有200元的飯食補(bǔ)助以及100元車(chē)費(fèi)補(bǔ)貼,這個(gè)時(shí)候的年薪

SELECT ename, job, (sal+300)*12 income FROM emp;

范例:公司每年的年底都會(huì)多發(fā)一個(gè)月的基本工資

SELECT ename, job, (sal+300)*12+sal income FROM emp;

在簡(jiǎn)單查詢(xún)中也可以使用“||”連接查詢(xún)的字段。

范例:觀察“||”的使用

SELECT empno || ',' || ename FROM emp;

由于“,”屬于原樣輸出的字符串,所以必須使用“ ' ”括起來(lái),即:在SQL語(yǔ)句之中,“ ' ”表示的是字符串。

范例:要求現(xiàn)在的數(shù)據(jù)庫(kù)按照如下的格式顯示:

“雇員編號(hào)是:7369的雇員姓名是:SMITH,基本工資是:800,職位是:CLERK!”

現(xiàn)在相當(dāng)于查找:empno、ename、sal、job字段,并且使用“||”進(jìn)行連接。

SELECT '雇員編號(hào)是:' || empno || '的雇員姓名是:' || ename  || ',基本工資是:' || sal || ',職位是:' || job || '! ' 雇員信息 FROM emp;

一定要記住,別名上的內(nèi)容不要使用“ ' ”括起來(lái),而只有在SELECT子句之中出現(xiàn)的內(nèi)容使用“ ' ”。

二、限定查詢(xún)

在之前的簡(jiǎn)單查詢(xún)中,是將所有的記錄進(jìn)行顯示,但是現(xiàn)在可以對(duì)顯示的記錄進(jìn)行過(guò)濾的操作,而這就屬于限定查詢(xún)的工作了,限定查詢(xún)就是在之前語(yǔ)法的基礎(chǔ)上增加了一個(gè)WHERE子句,用于指定限定條件,此時(shí)語(yǔ)法如下:

SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名]]FROM 表名稱(chēng) [別名][WHERE 條件(S)];

在WHERE子句之后可以增加多個(gè)條件,最常見(jiàn)的條件就是基本的關(guān)系運(yùn)算:>、>=、<、<=、!=(<>)、BETWEEN、AND、LIKE、IN、IS NULL、AND、OR、NOT;

1、關(guān)系運(yùn)算

范例:要求查詢(xún)出基本工資高于1500的所有雇員信息

SELECT * FROM emp WHERE sal>1500;

范例:查詢(xún)出所有職位是辦事員的雇員信息

SELECT * FROM emp WHERE job='clerk';

這個(gè)時(shí)候沒(méi)有返回相應(yīng)的查詢(xún)結(jié)果,主要原因是在Oracle數(shù)據(jù)庫(kù)中,所有的數(shù)據(jù)都是區(qū)分大小寫(xiě)的,所以代碼修改如下:

SELECT * FROM emp WHERE job='CLERK';

以上只是操作了一個(gè)條件,現(xiàn)在也可以操作多個(gè)條件,而這多個(gè)條件之間可以使用AND或OR進(jìn)行連接操作。

范例:查詢(xún)工資在1500~3000之間的全部雇員信息

SELECT * FROM empWHERE sal>=1500 AND sal<=3000;

范例:查詢(xún)出職位是辦事員,或者是銷(xiāo)售人員的全部信息

SELECT * FROM empWHERE job='CLERK' OR job='SALESMAN';

范例:查詢(xún)出職位是辦事員,或者是銷(xiāo)售人員的全部信息,并且要求這些雇員的工資大于1200

SELECT * FROM empWHERE (job='CLERK' OR job='SALESMAN') AND sal>1200;

范例:查詢(xún)所有不是辦事員的雇員信息

SELECT * FROM emp WHERE job<>'CLERK';SELECT * FROM emp WHERE job!='CLERK';SELECT * FROM emp WHERE NOT job='CLERK';

2、范圍判斷:BETWEEN…AND…

“BETWEEN 最小值 AND 最大值”,表示的是一個(gè)范圍的判斷過(guò)程。

范例:要求查詢(xún)出基本工資在1500~3000的雇員信息

SELECT * FROM empWHERE sal BETWEEN 1500 AND 3000;

范例:現(xiàn)在也可以對(duì)BETWEEN…AND…操作求反

SELECT * FROM empWHERE NOT sal BETWEEN 1500 AND 3000;

“BETWEEN…AND…”操作符不光只是針對(duì)于數(shù)字有用,對(duì)于日期也同樣有用。

范例:要求查詢(xún)出在1981年雇傭的全部雇員信息

時(shí)間范圍:1981-01-01~1981-12-31,使用hiredate字段表示雇傭日期;

hiredate字段上的內(nèi)容可以使用字符串表示:’01-1月-1981’~’31-12月-81’

SELECT * FROM empWHERE hiredate BETWEEN '01-1月-1981' AND '31-12月-81';

3、判斷是否為空:IS (NOT) NULL

使用此語(yǔ)法可以判斷某一個(gè)字段上的內(nèi)容是否是“null”,但是null和數(shù)字0以及空字符串是兩個(gè)概念。

范例:查詢(xún)出所有領(lǐng)取獎(jiǎng)金的雇員信息

SELECT * FROM empWHERE comm IS NOT NULL;SELECT * FROM empWHERE NOT comm IS NULL;

范例:查詢(xún)出所有不領(lǐng)取獎(jiǎng)金的雇員

SELECT * FROM empWHERE comm IS NULL;

4、指定范圍的判斷:IN操作符

IN操作符表示的是指定一個(gè)查詢(xún)的范圍,例如,現(xiàn)在有如下一個(gè)查詢(xún)要求:

范例:查詢(xún)出雇員編號(hào)是7369、7566、7799的雇員信息

如果按照最早的做法,使用OR操作完成;

SELECT * FROM empWHERE empno=7369 OR empno=7566 OR empno=7799;

如果現(xiàn)在使用了新的操作符IN的話(huà),則代碼簡(jiǎn)單了;

SELECT * FROM empWHERE empno IN (7369,7566,7799);

而如果現(xiàn)在使用的是NOT IN呢?則表示不在指定的范圍之中。

SELECT * FROM empWHERE empno NOT IN (7369,7566,7799);

注意點(diǎn):關(guān)于NOT IN的問(wèn)題

如果現(xiàn)在使用了IN操作符,查詢(xún)的范圍之中存在了null,不影響查詢(xún);

SELECT * FROM emp WHERE empno IN(7369,7566,null);

如果現(xiàn)在使用的是NOT IN操作符,如果查詢(xún)范圍之中有了null則表示的就是查詢(xún)?nèi)繑?shù)據(jù)。

SELECT * FROM emp WHERE empno NOT IN(7369,7566,null);

對(duì)于這個(gè)限制,現(xiàn)在先作為特點(diǎn)記住,以后會(huì)講解為什么NOT IN之中不能出現(xiàn)null。

5、模糊查詢(xún):LIKE子句

LIKE子句的功能是提供了模糊查找的操作,例如:某些程序上出現(xiàn)的搜索操作,都屬于LIKE子句的實(shí)現(xiàn),但是必須提醒的,搜索引擎上的查詢(xún)可不是LIKE。

但是要想使用LIKE子句則必須認(rèn)識(shí)兩個(gè)匹配符號(hào):

匹配單個(gè)字符:_;             ->  1個(gè)

匹配任意多個(gè)字符:%;      ->  0個(gè)、1個(gè)、多個(gè)

范例:要求查詢(xún)雇員姓名中以字母A開(kāi)頭的全部雇員信息

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

范例:要求查詢(xún)出雇員姓名中第二個(gè)字母是A的全部雇員信息

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

范例:要求查詢(xún)出雇員姓名中帶有字母A的雇員

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

現(xiàn)在也可以使用NOT操作,對(duì)操作進(jìn)行求反的功能:

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

但是對(duì)于LIKE子句,不一定只能在字符串?dāng)?shù)據(jù)上表示,可以在任意的數(shù)據(jù)上表示:

SELECT * FROM emp WHERE ename LIKE '%1%' OR hiredate LIKE '%1%' OR sal LIKE '%1%';

說(shuō)明:關(guān)于LIKE子句的使用

在開(kāi)發(fā)之中,數(shù)據(jù)庫(kù)的模糊查詢(xún)肯定使用LIKE子句,但是在使用LIKE子句的時(shí)候有一個(gè)最大的注意點(diǎn):如果在模糊查詢(xún)上不設(shè)置任何的查詢(xún)關(guān)鍵字的話(huà)('%%')則表示查詢(xún)?nèi)坑涗洠?/p>

SELECT * FROM emp WHERE ename LIKE '%%' OR hiredate LIKE '%%' OR sal LIKE '%%';

這一個(gè)特點(diǎn)可以幫助用戶(hù)節(jié)約很多的代碼,所以一定要記住。

三、數(shù)據(jù)的排序

當(dāng)數(shù)據(jù)返回查詢(xún)結(jié)果之后,所有的數(shù)據(jù)默認(rèn)情況下是按照雇員編號(hào)排序的,當(dāng)然,現(xiàn)在也可以使用”O(jiān)RDER BY”子句指定所需要的排序的操作列,而這個(gè)時(shí)候的SQL語(yǔ)法如下:

SELECT [DISTINCT] * | 字段 [別名] [,字段 [別名]]FROM 表名稱(chēng) [別名][WHERE 條件(S)][ORDER BY 字段 [ASC|DESC] [,字段 [ASC|DESC],…]];

“ORDER BY”子句是寫(xiě)在所有的SQL語(yǔ)句最后的內(nèi)容,而且對(duì)于排序有以下幾點(diǎn)說(shuō)明:

排序的時(shí)候可以指定多個(gè)排序的字段;

排序的方式有兩種:

  • 升序(ASC):默認(rèn),不寫(xiě)也是升序;
  • 降序(DESC):用戶(hù)需要指定,由大到小排序;

范例:查詢(xún)所有的雇員的信息,要求按照工資排序

SELECT * FROM emp ORDER BY sal;SELECT * FROM emp ORDER BY sal ASC;

范例:進(jìn)行降序排列

SELECT * FROM emp ORDER BY sal DESC;

范例:要求查詢(xún)出所有的雇員信息,按照工資由高到低排序,如果工資相同,則按照雇傭日期由早到晚排序

此時(shí)肯定需要兩個(gè)字段排序:工資(DESC),雇傭日期(ASC);

SELECT * FROM emp ORDER BY sal DESC, hiredate ASC;
SQL> SELECT * FROM emp ORDER BY sal DESC, hiredate ASC;     EMPNO ENAME      JOB              MGR HIREDATE              SAL       COMM     DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ----------      7839 KING       PRESIDENT            17-11月-81           5000                    10      7902 FORD       ANALYST         7566 03-12月-81           3000                    20      7566 JONES      MANAGER         7839 02-4月 -81           2975                    20      7698 BLAKE      MANAGER         7839 01-5月 -81           2850                    30      7782 CLARK      MANAGER         7839 09-6月 -81           2450                    10      7499 ALLEN      SALESMAN        7698 20-2月 -81           1600        300         30      7844 TURNER     SALESMAN        7698 08-9月 -81           1500          0         30      7934 MILLER     CLERK           7782 23-1月 -82           1300                    10      7521 WARD       SALESMAN        7698 22-2月 -81           1250        500         30      7654 MARTIN     SALESMAN        7698 28-9月 -81           1250       1400         30      7876 ADAMS      CLERK           7788 23-5月 -87           1100                    20      7900 JAMES      CLERK           7698 03-12月-81            950                    30      7369 SMITH      CLERK           7902 17-12月-80            800                    20      7788 SCOTT      CLERK           7566 19-4月 -87            800                    20已選擇14行。

對(duì)于排序操作,一般只在需要的地方上使用,而且一定要記住的是,ORDER BY 子句是寫(xiě)在所有的SQL語(yǔ)句的最后的部分。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
oracle限定條件查詢(xún),循序漸進(jìn)學(xué)Oracle之限定查詢(xún)
sql server查詢(xún)(SELECT ,where,distinct,like 查詢(xún),in,is null,group by 和having,order by,as)
oracle學(xué)習(xí)筆記之表的查詢(xún)
數(shù)據(jù)庫(kù)的設(shè)計(jì)與表的管理 oracle筆記
ABAP中SQL的優(yōu)化(轉(zhuǎn))
Oracle 常用SQL技巧收藏
更多類(lèi)似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服