搜尋
首頁資料庫SQL常見的sql查詢語句有哪些
常見的sql查詢語句有哪些Oct 26, 2020 am 10:06 AM
sql查詢語句

常見的sql查詢語句有:1、檢視表格結構【SQL>DESC emp;】;2、查詢所有欄位【SQL>SELECT * FROM emp】;3、查詢指定欄位【SQL>SELECT empmo ,】;4、查詢指定行【SQL>SELECT * FROM】。

常見的sql查詢語句有哪些

常見的sql查詢語句有:

一、簡單查詢語句

1. 檢視表格結構

SQL>DESC emp;

2. 查詢所有欄位

SQL>SELECT * FROM emp;

3. 查詢指定列

SQL>SELECT empmo, ename, mgr FROM emp;

SQL>SELECT DISTINCT mgr FROM emp; 只顯示結果不同的項目

4. 查詢指定行##

SQL>SELECT * FROM emp WHERE job='CLERK';

5 . 使用算術表達式

SQL>SELECT ename, sal*13+nvl(comm,0)  FROM emp;

nvl(comm,1)的意思是,如果comm中有值,則nvl(comm,1)=comm; comm中無值,則nvl(comm ,1)=0。

SQL>SELECT ename, sal*13 nvl(comm,0) year_sal FROM emp; (year_sal為別名,可依別名排序)

SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82';

#6. 使用like操作符(%,_)

%表示一個或多個字符,_表示一個字符,[charlist]表示字符列中的任何單一字符,[^charlist]或[!charlist]不在字符列中的任何單一字元。

SQL>SELECT * FROM emp WHERE ename like 'S__T%';

7. 在where條件中使用In

SQL>SELECT * FROM emp WHERE job IN ('CLERK','ANALYST');

8. 查詢欄位內容為空/非空的語句

SQL>SELECT * FROM emp WHERE mgr IS/IS NOT NULL;

9. 使用邏輯操作符號

SQL>SELECT * FROM emp WHERE (sal>500 or job='MANAGE') and ename like 'J%';

10. 將查詢結果按字段的值進行排序

SQL>SELECT * FROM emp ORDER BY deptno, sal DESC;

(按部門升序,並依薪酬降序)


11. 使用case ... when ... then ... end處理查詢結果

SQL>SELECT CASE a WHEN "original_a" THEN "新命名Aa" WHEN "original_b" THEN "新命名Bb" END AS XXX;

選擇表中的a字段並命名為XXX,當a的內容為original_a時,內容展示為「新命名Aa」。

 12. 格式化日期資料

SQL>SELECT DATE_FORMAT(start_time,"%Y-%m-%d") as "时间";

#二、複雜查詢

1. 資料分組(max ,min,avg,sum,count)

SQL>SELECT MAX(sal),MIN(age),AVG(sal),SUM(sal) from emp;
SQL>SELECT * FROM emp where sal=(SELECT MAX(sal) from emp));
SQL>SELEC COUNT(*) FROM emp;

2. group by(用於對查詢結果的分組統計) 和having子句(用於限制分組顯示結果)

SQL>SELECT deptno,MAX(sal),AVG(sal) FROM emp GROUP BY deptno;
SQL>SELECT deptno, job, AVG(sal),MIN(sal) FROM emp group by deptno,job having AVG(sal)<2000;

對於資料分組的總結:

a. 分組函數只能出現在選取清單、having、order by子句中(不能出現在where)

b. 如果select語句中同時包含有group by, having, order by,那麼它們的順序就是group by, having, order by。

c. 在選擇列中如果有列、表達式和分組函數,那麼這些列和表達式必須出現在group by子句中,否則就是會出錯。也即:SELECT子句中的列名必須為分組列或列函數

使用group by不是使用having的前提條件。

3. 多表查詢

SQL>SELECT e.name,e.sal,d.dname FROM emp e, dept d WHERE e.deptno=d.deptno order by d.deptno;
SQL>SELECT e.ename,e.sal,s.grade FROM emp e,salgrade s WHER e.sal BETWEEN s.losal AND s.hisal;
Select a.*, b.x, c.y from a
  left outer join (Select * from tablex where condition1)b
  on a.id=b.id
  left outer join (Select * from tabley where condition2)c
  on a.id=c.id
where condition3;

以選出的資料為新表進行左連接查詢;取自:https://q.cnblogs.com/q /67530/

4. 自連接(指同一張表的連接查詢)

SQL>SELECT er.ename, ee.ename mgr_name from emp er, emp ee where er.mgr=ee.empno;

5. 子查詢(嵌入到其他sql語句中的select語句,也叫巢狀查詢)

5.1 單行子查詢

SQL>SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM emp where ename=&#39;SMITH&#39;);

查詢表中與smith同部門的人員名字。因為傳回結果只有一行,所以用「=」連接子查詢語句


5.2 多行子查詢

SQL>SELECT ename,job,sal,deptno from emp WHERE job IN (SELECT DISTINCT job FROM emp WHERE deptno=10);

查詢表中與部門號為10的工作相同的員工的姓名、工作、薪水、部門號碼。因為傳回結果有多行,所以用「IN」連接子查詢語句。


in與exists的區別: exists() 後面的子查詢被稱做相關子查詢,它是不傳回列表的值的。只是傳回一個ture或false的結果,其運作方式是先執行主查詢一次,再去子查詢裡查詢與其對 應的結果。如果是ture則輸出,反之則不輸出。再根據主查詢中的每一行去子查詢裡去查詢。 in()後面的子查詢,是傳回結果集的,換句話說執行次序和 exists()不一樣。子查詢先產生結果集,然後主查詢再去結果集去找符合要求的欄位清單去。符合要求的輸出,反之則不輸出。

5.3 使用ALL

SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ALL (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MAX(sal) FROM emp WHERE deptno=30);

查詢所有薪資比部門號碼為30號的員工薪資都高的員工的姓名、薪水和部門號碼。以上兩個語句在功能上是一樣的,但執行效率上,函數會高 得多。


5.4 使用ANY

SQL>SELECT ename,sal,deptno FROM emp WHERE sal> ANY (SELECT sal FROM emp WHERE deptno=30);或SQL>SELECT ename,sal,deptno FROM emp WHERE sal> (SELECT MIN(sal) FROM emp WHERE deptno=30);

查詢薪水比部門號碼為30號的任一員工薪資高(只要比某一員工薪資高即可)的員工的姓名、薪水和部門號。以上兩個語句在功能上是 一樣的,但執行效率上,函數會高很多。


5.5 多列子查詢

SQL>SELECT * FROM emp WHERE (job, deptno)=(SELECT job, deptno FROM emp WHERE ename=&#39;SMITH&#39;);

5.6 在from子句中使用子查詢

 SQL>SELECT emp.deptno,emp.ename,emp.sal,t_avgsal.avgsal FROM emp,(SELECT emp.deptno,avg(emp.sal) avgsal FROM emp GROUP BY emp.deptno) t_avgsal where emp.deptno=t_avgsal.deptno AND emp.sal>t_avgsal.avgsal ORDER BY emp.deptno;

5.7 分頁查詢

#資料庫的每行數據都有一個對應的行號,稱為rownum.

SQL>SELECT a2.* FROM (SELECT a1.*, ROWNUM rn FROM (SELECT * FROM emp ORDER BY sal) a1 WHERE ROWNUM<=10) a2 WHERE rn>=6;

指定查詢列、查詢結果排序等,都只需要修改最裡層的子查詢即可。

5.8 用查詢結果建立新表

SQL>CREATE TABLE mytable (id,name,sal,job,deptno) AS SELECT empno,ename,sal,job,deptno FROM emp;

5.9 合併查詢(union 並集, intersect 交集, union all 並集 交集, minus差集)

SQL>SELECT ename, sal, job FROM emp WHERE sal>2500 UNION(INTERSECT/UNION ALL/MINUS) SELECT ename, sal, job FROM emp WHERE job=&#39;MANAGER&#39;;

合并查询的执行效率远高于and,or等逻辑查询。

 5.10 使用子查询插入数据

SQL>CREATE TABLE myEmp(empID number(4), name varchar2(20), sal number(6), job varchar2(10), dept number(2));

先建一张空表;

SQL>INSERT INTO myEmp(empID, name, sal, job, dept) SELECT empno, ename, sal, job, deptno FROM emp WHERE deptno=10;

再将emp表中部门号为10的数据插入到新表myEmp中,实现数据的批量查询。

5.11 使用了查询更新表中的数据

SQL>UPDATE emp SET(job, sal, comm)=(SELECT job, sal, comm FROM emp where ename=&#39;SMITH&#39;) WHERE ename=&#39;SCOTT&#39;;

相关免费学习推荐:SQL视频教程

以上是常見的sql查詢語句有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
SQL(水平,垂直)中的數據劃分的不同類型是什麼?SQL(水平,垂直)中的數據劃分的不同類型是什麼?Mar 13, 2025 pm 02:01 PM

本文討論了SQL中的水平和垂直數據分配,重點是它們對性能和可伸縮性的影響。它比較了它們之間選擇的好處和考慮因素。

如何在SQL中使用匯總功能來匯總數據(總和,AVG,COUNT,MIN,MAX)?如何在SQL中使用匯總功能來匯總數據(總和,AVG,COUNT,MIN,MAX)?Mar 13, 2025 pm 01:50 PM

本文說明瞭如何使用SQL聚合函數(總和,AVG,Count,Min,Max)來匯總數據,詳細說明其用途和差異以及如何在查詢中組合它們。

使用動態SQL的安全風險是什麼?如何減輕它們?使用動態SQL的安全風險是什麼?如何減輕它們?Mar 13, 2025 pm 01:59 PM

本文討論了動態SQL的安全風險,重點是SQL注入,並提供了諸如使用參數化查詢和輸入驗證之類的緩解策略。

SQL中的交易隔離水平有哪些(讀取,讀取,讀取,可重複的讀,可序列化)?SQL中的交易隔離水平有哪些(讀取,讀取,讀取,可重複的讀,可序列化)?Mar 13, 2025 pm 01:56 PM

本文討論了SQL交易隔離級別:讀取,讀取,讀取,可重複的讀取和可序列化。它檢查了他們對數據一致性和性能的影響,並指出更高的隔離確保了更大的一致性,但MA

如何使用SQL遵守數據隱私法規(GDPR,CCPA)?如何使用SQL遵守數據隱私法規(GDPR,CCPA)?Mar 18, 2025 am 11:22 AM

文章討論了用於GDPR和CCPA合規性的SQL,專注於數據匿名,訪問請求和自動刪除過時的數據。(159個字符)

SQL中交易的酸性是什麼?SQL中交易的酸性是什麼?Mar 13, 2025 pm 01:54 PM

本文討論了SQL交易中的酸性(原子能,一致性,隔離,耐用性),對於維持數據完整性和可靠性至關重要。

如何將SQL數據庫確保不受SQL注入等常見漏洞?如何將SQL數據庫確保不受SQL注入等常見漏洞?Mar 18, 2025 am 11:18 AM

本文討論了針對SQL數據庫確保SQL數據庫,例如SQL注入,強調準備好的語句,輸入驗證和常規更新。

如何在SQL中實現數據分區以獲得性能和可伸縮性?如何在SQL中實現數據分區以獲得性能和可伸縮性?Mar 18, 2025 am 11:14 AM

文章討論在SQL中實施數據分區,以提高性能和可伸縮性,詳細的方法,最佳實踐和監視工具。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版