SQL是用于訪問和處理數(shù)據(jù)庫的標準計算機語言;
中文:結(jié)構(gòu)化查詢語言;英文全稱:Structured Query Language;
而其中的核心就是查詢。
簡單查詢
SELECT字段,字段,字段...? [SELECT子句]FROMEMP;(數(shù)據(jù)來源)[FROM子句]
以上兩個語句執(zhí)行時,先執(zhí)行FROM子句,再執(zhí)行SELECT子句。
當查詢所有字段信息時可以使用通配符*。
當信息有重復時,可以使用關鍵字DISTINCT來去除重復。
限定查詢
再實際開發(fā)中基本上都會使用限定查詢
SELECT字段,字段,字段...? [SELECT子句]
FROM數(shù)據(jù)來源? [FROM子句]
WHERE過濾條件 [WHERE子句]
WHERE?子句會根據(jù)過濾條件來選擇出滿足條件的數(shù)據(jù)。
1.關系運算符
SELECT*FROM EMP WHERE SAL>1000;
查詢月薪大于1000的員工信息。
SELECT*FROM EMP WHEREE NAME='SMITH';
查詢名為SMITH的員工信息。
SELECT*FROM EMP WHERE JOB<> 'SALESMAN';
查詢工作不是SALESMAN(銷售)所有員工信息。
2.邏輯運算符
SELECT* FROM EMP WHERE SAL>=1500 AND SAL<=3000;
SELECT* FROM EMP WHERE BETWEEN 1500 AND 3000;
以上兩種方式都是查詢所有月薪在1500到3000之間的員工信息;但是這兩種的有區(qū)別的。第一種在數(shù)據(jù)庫中會認為是兩個判斷條件,而第二種(BETWEEN AND?)則只認為是一個判斷條件,所有第二種效率更高一點。
3.空判斷
SELECT* FROM EMP WHERE COMM IS NULL;
查詢沒有傭金的員工信息。
4.IN查詢
SELECT* FROM EMP WHERE EMPNO IN(7788,7654,6329);
查詢員工編號是7788,7654,6329的員工信息。
模糊查詢
在了解模糊查詢之前要先了解通配符_和%;
_:表示任意一個字符;
%:表示任意位數(shù)的任意字符;
同過關鍵字LIKE來實現(xiàn)模糊查詢。
SELECT字段,字段...FROM數(shù)據(jù)來源WHERE模糊查詢的字段LIKE關鍵內(nèi)容
SELECT* FROM EMP WHERE ENAME LIKE 'A%';
查詢姓名以A開頭的員工信息。
SELECT * FROM EMP WHERE ENAME LIKE '%A%';
查詢姓名中含有A的員工信息。
SELECT * FROM EMP WHERE ENAME LIKE'_A%';
查詢姓名第二個字母是A的員工信息。
排序查詢
排序查詢:將結(jié)果按照指定字段進行升序或者降序來顯示,注意指定的字段一般指數(shù)字或者日期。
其關鍵字是?ORDER BY
SELECT字段...FROM數(shù)據(jù)來源WHERE過濾條件ORDER BY排序字段ASC[DESC]
ASC:升序排列(默認); DESC:降序排列。
SELECT * FROM EMP WHERE JOB='SALESMAN' ORDER BY SAL DESC;
工作是銷售并按月薪降序排列員工信息。
多表查詢
如果要從多張數(shù)據(jù)表中查詢數(shù)據(jù),那么就會用到多表查詢,多表查詢也叫做連接查詢。
SELECT字段...FROM數(shù)據(jù)源,數(shù)據(jù)源...WHERE過濾條件ORDER BY排序字段ASC[DESC]
當多表查詢時,會產(chǎn)生笛卡爾積。即查詢出的數(shù)據(jù)量是各個數(shù)據(jù)源的數(shù)據(jù)量的乘積。這樣的數(shù)據(jù)含有大量沒用的重復數(shù)據(jù),可以使用WHERE 子句來加過濾條件消除笛卡爾積。
SELECT * FROM EMP,DEPT? (EMP和DEPT是兩張表)
WHERE EMP.DEPTNO=DEPT.DEPTNO;?
通過WHERE使兩張數(shù)據(jù)源中關聯(lián)字段相等來消除笛卡爾積。注意:這里的消除是指不顯示沒用的相關數(shù)據(jù),實際上并沒用真正的去除。所以一般數(shù)據(jù)量比較大時 不要使用多表查詢,會消耗很多性能。
Source:https://www.cnblogs.com/fzxey/p/10883824.html