首頁 資料庫 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

熱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.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

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

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

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

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

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

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

sql datetime怎麼用 sql datetime怎麼用 Apr 09, 2025 pm 06:09 PM

DATETIME 數據類型用於存儲高精度的日期和時間信息,範圍為 0001-01-01 00:00:00 至 9999-12-31 23:59:59.9999999,語法為 DATETIME(precision),其中 precision 指定小數點後精度 (0-7),默認為 3。它支持排序、計算和時區轉換功能,但需要注意精度、範圍和時區轉換時的潛在問題。

sql分頁什麼意思 sql分頁什麼意思 Apr 09, 2025 pm 06:00 PM

SQL 分页是一种分段检索大数据集的技术,提高性能和用户体验。使用 LIMIT 子句指定要跳過的記錄數(offset)和要返回的記錄數(limit),例如:SELECT * FROM table LIMIT 10 OFFSET 20;优点包括提高性能、增强用户体验、节省内存和简化数据处理。

sql server怎麼用sql語句創建表 sql server怎麼用sql語句創建表 Apr 09, 2025 pm 03:48 PM

在 SQL Server 中使用 SQL 語句創建表的方法:打開 SQL Server Management Studio 並連接到數據庫服務器。選擇要創建表的數據庫。輸入 CREATE TABLE 語句,指定表名、列名、數據類型和約束。單擊執行按鈕創建表。

sql if語句怎麼用 sql if語句怎麼用 Apr 09, 2025 pm 06:12 PM

SQL IF 語句用於有條件地執行 SQL 語句,語法為: IF (condition) THEN {語句} ELSE {語句} END IF;。條件可以是任何有效的 SQL 表達式,如果條件為真,執行 THEN 子句;如果條件為假,執行 ELSE 子句。 IF 語句可以嵌套,允許更複雜的條件檢查。

sql中declare的用法 sql中declare的用法 Apr 09, 2025 pm 04:45 PM

SQL 中 DECLARE 語句用於聲明變量,即存儲可變值的佔位符。語法為:DECLARE &lt;變量名&gt; &lt;數據類型&gt; [DEFAULT &lt;默認值&gt;];其中 &lt;變量名&gt; 為變量名稱,&lt;數據類型&gt; 為其數據類型(如 VARCHAR 或 INTEGER),[DEFAULT &lt;默認值&gt;] 為可選的初始值。 DECLARE 語句可用於存儲中間

See all articles