1. 程式人生 > >MySQL單表查詢詳解

MySQL單表查詢詳解

一、between……and……操作符
1、查詢薪水為1600到3000的員工(第一種方式:採用>= 、<=) 
例如:select empno,ename,sal from emp where sal >= 1600 and sal <= 3000; 
 
2、查詢薪水為1600到3000的員式(第二種方式:採用between…and…) 
例如:select empno,ename,sal from emp where sal between 1600 and 3000; 
 
注:關亍between … and … 它是包含最大值和最小值的 
3、between … and … 同樣也可用在字元上,用在字元上區間為:前閉後開; 
例如: select ename from emp where ename between “A”and “F”; 


二、is null
Null 為空,它不是一個數值,不是一個空串,為null可以設定這個欄位不填值,如果查詢為null的欄位,採用is null。 
1、查詢津貼為空的員工 
錯誤: select empno,ename,comm from emp where comm = null; 
 
原因:以上無法查詢出符合條件的資料,因為null型別比較特殊,必須使用 is 來比較 
正確:select empno,ename,comm from emp where comm is null; 
 
2、查詢津貼不為空的員工 
例如:select empno,ename,comm from emp where comm is not null; 


三、and:表示並且,表示所有查詢條件必須滿足
1、查詢工作崗位為“MANAGER”並且薪水大於2500的員工 
例如:select empno,ename,job,sal from emp where job =„MANAGER‟ and sal > 2500; 


四、or:只要滿足條件即可,相當於包含
1、查詢出 job 為 SALESMAN 和 job為MANAGER的員工 
例如: select ename,job from emp where job = “SALESMAN”or job = “MANAGER”; 


五、and不or表示式的優化級
and的優先順序高於or 
1、查詢薪水大於1800,並且部門編號為20或30的員工 
例如: 錯誤:select * from emp sal>1800 and deptno=20 or deptno = 30; 
 
分析:以上輸出的結果不是是我們預期的結果,薪水小於1800的也查出來了,原因是表示式的優先順序導致的,首先SQL語句過濾了 sal > 1800 and deptno = 20,然後再將deptno = 30的員工合併過來,所以是不正確的 
正確: select * from emp where sal>1800 and (deptno=20 or deptno=30); 
 
注: 關亍運算子的問題不用死記硬背,沒有把握的儘量採用括號;

六、 in:表示包含的意思,完全可以採用or來表示,採用in會更簡潔一些。
1、. 查詢出Job為 SALESMAN 和 Job為 MANAGER 的員工 
例如: select ename,job from emp where job in (“SALESMAN”,“MANAGER”); 
 
2、查詢出薪水為1600和3000的員工 
例如: select ename,sal from emp where sal in (1600,3000); 
 
3、查詢出薪水不是1600和3000的員工 
例如: select ename,sal from emp where sal not in (1600,3000); 


七、not
1、第一種寫法:查詢出薪水不是1600和薪水不是3000的員工 
例如: select ename,sal from emp where sal <> 1600 and sal <> 3000; 
 
2、第二種寫法:查詢出薪水不是1600和薪水不是3000的員工 
例如: select ename,sal from emp where not (sal = 1600 or sal = 3000); 
 
3、第三種寫法:查詢出薪水不是1600和薪水不是3000的員工 
例如: select ename,sal from emp where sal not in (1600,3000); 
 
4、查詢出津貼不為null的員工 
例如: select * from emp where comm is not null; 


八、Like :可以實現模糊查詬,like支援%和下劃線匹配
1、查詢以姓名以 M 開頭的所有員工‘M%’ 
例如: select ename from emp where ename like “M%”; 
 
2、查詢姓名以N結尾的所有員工‘%N’ 
例如: select ename from emp where ename like “%N”; 
 
3、查詢姓名中包含O的所有員工‘%O%’ 
例如: select ename from emp where ename like “%O%”; 
 
4、查詢姓名中第二個字元為A的所有員工‘_A%’ 
例如: select ename from emp where ename like “_A%”; 
 
5、查詢姓名中倒數第二個字元為E的所有員工‘%E_’ 
例如: select ename from emp where ename like “%E_”; 
 
6、查詢姓名中第三個字元為N的所有員工姓名‘__R%’ 
例如: select ename from emp where ename like “R%”;