一例驹、選擇限定數(shù)據(jù)行
- 選擇限定數(shù)據(jù)行的作用
將需要檢索的數(shù)據(jù)從所有數(shù)據(jù)中進(jìn)行分離仗岸,
- 例如:在員工表中檢索所有在10部門的員工
- 選擇限定數(shù)據(jù)行的語(yǔ)法
- 使用WHERE子句可以返回限定的數(shù)據(jù)行
- 語(yǔ)法:
SELECT [DISTINCT] {* | column | expression…} FROM table WHERE condition(s)
- WHERE子句緊跟在FROM子句之后
- condition(s)表示條件表達(dá)式悲雳,
通常格式為:列名 比較操作符 要比較的值
- 比較操作符
比較操作符:
= > >= < <= <>(!=)
等于 大于 大于等于 小于 小于等于 不等于
二、使用WHERE子句
- 比較數(shù)值型數(shù)據(jù)
- 例如:
SELECT ename,job,deptno FROM emp WHERE deptno = 10;
- 比較字符型數(shù)據(jù)
- 字符型數(shù)據(jù)作為被比較的值時(shí)姑廉,必須用單引號(hào)引起來
- 字符型數(shù)據(jù)區(qū)分大小寫
- 例如:
SELECT ename,job,deptno FROM emp WHERE job = 'CLERK';
- 比較日期型數(shù)據(jù)
- 日期型數(shù)據(jù)作為被比較的值時(shí)塑娇,必須使用單引號(hào)引起來
- 日期型數(shù)據(jù)是區(qū)分日期的表達(dá)形式的仗哨,默認(rèn)的日期形式DD-MM-YY
- 例如:
SELECT ename,job,deptno FROM emp WHERE hiredate >'01-1月-85';
三、特殊比較運(yùn)算符
- BETWEEN..AND..運(yùn)算符
- 表示:判斷要比較的值是否在某個(gè)范圍內(nèi)
- 例如:
SELECT ename,sal FROM emp WHERE sal BETWEEN 1000 AND 1500;
- IN(集合列表)運(yùn)算符
- 表示:判斷要比較的值是否和集合列表中的任何一個(gè)值相等
- 例如:
SELECT empno,ename,sal,mgr FROM emp WHERE mgr IN( 7902, 7566,7788);
- LIKE運(yùn)算符
- 表示:判斷要比較的值是否滿足部分匹配铅辞,也叫模糊查詢厌漂。模糊查詢中有兩個(gè)通配符
- % 代表零或任意更多的字符
- _ 代表一個(gè)字符
單獨(dú)使用:- 例如:
SELECT ename FROM emp WHERE ename LIKE 'S%';
組合使用:
- 例如:
SELECT ename FROM emp WHERE ename LIKE '_L%';
- 可以使用ESCAPE標(biāo)識(shí)實(shí)現(xiàn)對(duì)“%”和“_”的查找
- 例如:查詢JOB以“MAN_”開頭的雇員信息
SELECT ename,job FROM emp WHERE job LIKE 'MAN@_%' ESCAPE '@';
- IS NULL運(yùn)算符
- 表示:判斷要比較的值是否為空值NULL
- 例如:
SELECT ename,mgr FROM emp WHERE mgr IS NULL;
四、邏輯運(yùn)算符
當(dāng)需要和多個(gè)條件表達(dá)式進(jìn)行比較時(shí)巷挥,需要使用邏輯運(yùn)算符把多個(gè)表達(dá)式連接起來桩卵,邏輯運(yùn)算符包括AND、OR倍宾、NOT雏节,邏輯表達(dá)式的結(jié)果為TRUE,F(xiàn)ALSE高职,NULL钩乍。
- 邏輯與(AND)
用來連接多個(gè)條件表達(dá)式。如果每一個(gè)條件表達(dá)式的結(jié)果都為TRU個(gè)表達(dá)式的結(jié)果才為TRUE怔锌。
- AND:要求兩個(gè)條件都為真寥粹,結(jié)果才為真。
- 例如:
SELECT empno,ename,job,sal FROM emp WHERE sal >= 1100 AND job = 'CLERK';
- 邏輯或(OR)
用來連接多個(gè)條件表達(dá)式埃元。只要有一個(gè)條件表達(dá)式的結(jié)果為TRUE涝涤,整個(gè)表達(dá)式的結(jié)果就為TRUE。
- OR:只需要兩個(gè)條件中的一個(gè)為真岛杀,結(jié)果就返回真阔拳。
- 例如:
SELECT empno,ename,job,sal FROM emp WHERE sal >= 1100 OR job = 'CLERK';
- 邏輯非(NOT)
用來對(duì)條件表達(dá)式取反。TRUE取反為FALSE类嗤,F(xiàn)ALSE取反為TRUE糊肠。
- NOT運(yùn)算符還可以和BETWEEN…AND、LIKE遗锣、IS NULL一起使用
- WHERE deptno NOT IN (10,20)
- WHERE sal NOT BETWEEN 3000 AND 5000
- WHERE ename NOT LIKE ‘ D% ’
- WHERE mgr IS NOT NULL
- 例如:
SELECT ename,job FROM emp WHERE job NOT IN ('CLERK' ,'MANAGER','ANALYST');
- 運(yùn)算符的優(yōu)先級(jí)
括號(hào)的優(yōu)先級(jí)高于其他操作符货裹,可以強(qiáng)制改變優(yōu)先權(quán)。
- 優(yōu)先級(jí)順序如下:
算術(shù)運(yùn)算符> 連接運(yùn)算符>比較運(yùn)算符>特殊比較運(yùn)算符>邏輯非>邏輯與>邏輯或- 例如1:
SELECT ename,job,sal FROM emp WHERE job = 'SALESMAN' OR job = 'PRESIDENT' AND sal > 1500;
- 例如2:
SELECT ename,job,sal FROM emp WHERE (job ='SALESMAN' OR job = 'PRESIDENT') AND sal > 1500;
注意比較結(jié)果有什么不同
五精偿、ORDER BY 子句
- 使用ORDER BY子句
- 使用ORDER BY子句能過對(duì)查詢結(jié)果集進(jìn)行排序弧圆,語(yǔ)法結(jié)構(gòu)如下:
- 語(yǔ)法:
SELECT [DISTINCT] {* | column | expression…} FROM table WHERE condition(s) ORDER BY {列名|表達(dá)式|列別名|列序號(hào)} [ASC | DESC]
- 可以按照列名,表達(dá)式笔咽,列別名墓阀,結(jié)果集的列序號(hào)排序
- ASC:升序,默認(rèn)值
- DESC:降序
- ORDER BY 子句必須寫在SELECT語(yǔ)句的最后
- 排序規(guī)則(以升序?yàn)槔?/li>
- 數(shù)字升序排列小值在前拓轻,大值在后。即按照數(shù)字大小順序有小到大排序经伙。
- 日期升序排列相對(duì)較早的日期在前扶叉,較晚的日期在后勿锅。例如:‘01-SEP-06’在‘01-SEP-07’前。
- 字符升序排列按照字母由小到大的順序排列枣氧。即由A-Z排序溢十;中文升序按照字典順序排序。
- 空值在升序排列中排在最后达吞,子降序排列中排在最開始张弛。
1> 按照列名排列
- 例如1:
SELECT ename,deptno,sal,hiredate FROM emp ORDER BY hiredate;
- 例如2:
SELECT ename,deptno,sal,hiredate FROM emp ORDER BY hiredate DESC; //注意:默認(rèn)的情況下是升序
2>按照列別名排序
- 例如:
SELECT ename,deptno,sal*12 AS annsal FROM emp ORDER BY annsal;
3>多列參與排序
- 參與排序的多列都可以指定升序或者降序
- ORDER BY子句中可以寫沒在SELECT列表中出現(xiàn)的列
- 例如:
SELECT ename,deptno,sal FROM emp ORDER BY deptno,sal DESC;
4>按照結(jié)果集序列號(hào)排序
- ORDER BY子句后列名可以用數(shù)字來代替,這個(gè)數(shù)字是SELECT語(yǔ)句后列的順序號(hào)酪劫。
- 例如:
SELECT ename,deptno,sal FROM emp ORDER BY 2,3 DESC;