日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

【SQL】SQL(基础查询)、SQL(关联查询)

發(fā)布時(shí)間:2025/3/21 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【SQL】SQL(基础查询)、SQL(关联查询) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

原文鏈接:https://blog.csdn.net/kuangzhixuan/article/details/74299047?utm_source=blogxgwz2

  • SQL(基礎(chǔ)查詢)
  • 1.1. 基本查詢語句

    1.1.1. FROM子句

    SQL查詢語句的語法如下:

    copytextpop-up
    SELECT <, column [alias], …> FROM table;
    SELECT <, column [alias], …> FROM table;
    其中:SELECT用于指定要查詢的列,FROM指定要從哪個(gè)表中查詢。如果要查詢所有列,可以在SELECT后面使用*號,如果只查詢特定的列,可以直接在SELECT后面指定列名,列名之間用逗號隔開。例句如下,查詢dept表中的所有記錄:

    copytextpop-up
    SELECT * FROM dept;
    SELECT * FROM dept;
    1.1.2. 使用別名

    在SQL語句中可以通過使用列的別名改變標(biāo)題的顯示樣式,或者表示計(jì)算結(jié)果的含義,使用語法是列的別名跟在列名后,中間可以加或不加一個(gè)“AS”關(guān)鍵字。例如:

    copytextpop-up
    SELECT empno AS id ,ename “Name”, sal * 12 “Annual Salary” FROM emp;
    SELECT empno AS id ,ename “Name”, sal * 12 “Annual Salary” FROM emp;
    別名可以直接寫,不必用雙引號引起來。但是如果希望別名中區(qū)分大小寫字符,或者別名中包含字符或空格,則必須用雙引號引起來。

    1.1.3. WHERE子句

    在SELECT語句中,可以在WHERE子句中使用比較操作符限制查詢結(jié)果,是可選的。

    當(dāng)查詢條件中和數(shù)字比較,可以使用單引號引起,也可以不用,當(dāng)和字符及日期類型的數(shù)據(jù)比較,則必須用單引號引起。例如查詢部門10下的員工信息:

    copytextpop-up
    SELECT * FROM empWHERE deptno = 10;
    SELECT * FROM empWHERE deptno = 10;
    查詢職員表中職位是’SALESMAN’的職員:

    copytextpop-up
    SELECT ename, sal, job FROM emp WHERE job = ‘SALESMAN’;
    SELECT ename, sal, job FROM emp WHERE job = ‘SALESMAN’;

    圖-1 用where子句定義查詢條件

    1.1.4. SELECT子句

    如果只查詢表的部分列,需要在SELECT后指定列名,例如:

    copytextpop-up
    SELECT empno, ename, sal, job FROM emp;
    SELECT empno, ename, sal, job FROM emp;

    圖-2查詢指定的列

    1.2. 查詢條件

    1.2.1. 使用>, <, >=, <=, !=, <>, =

    在WHERE子句中的查詢條件,可以使用比較運(yùn)算符來做查詢。比如:查詢職員表中薪水低于2000元的職員信息:

    copytextpop-up
    SELECT ename, sal FROM emp WHERE sal< 2000;
    SELECT ename, sal FROM emp WHERE sal< 2000;
    查詢職員表中不屬于部門10的員工信息(!=等價(jià)于<>):

    copytextpop-up
    SELECT ename, sal, job FROM emp WHERE deptno != 10;
    SELECT ename, sal, job FROM emp WHERE deptno != 10;
    查詢職員表中在2002年1月1號以后入職的職員信息,比較日期類型數(shù)據(jù):

    copytextpop-up
    SELECT ename, sal, hiredate FROM emp
    WHERE hiredate>to_date(‘2002-1-1’,‘YYYY-MM-DD’);
    SELECT ename, sal, hiredate FROM emp
    WHERE hiredate>to_date(‘2002-1-1’,‘YYYY-MM-DD’);
    1.2.2. 使用AND,OR關(guān)鍵字

    在SQL操作中,如果希望返回的結(jié)果必須滿足多個(gè)條件,應(yīng)該使用AND邏輯操作符連接這些條件,如果希望返回的結(jié)果滿足多個(gè)條件之一即可,應(yīng)該使用OR邏輯操作符連接這些條件。例如:查詢薪水大于1000并且職位是’CLERK’的職員信息:

    copytextpop-up
    SELECT ename, sal, job FROM emp
    WHERE sal> 1000 AND job = ‘CLERK’;
    SELECT ename, sal, job FROM emp
    WHERE sal> 1000 AND job = ‘CLERK’;
    查詢薪水大于1000或者職位是’CLERK’的職員信息:

    copytextpop-up
    SELECT ename, sal, job FROM emp
    WHERE sal> 1000 OR job = ‘CLERK’;
    SELECT ename, sal, job FROM emp
    WHERE sal> 1000 OR job = ‘CLERK’;
    1.2.3. 使用LIKE條件(模糊查詢)

    當(dāng)用戶在執(zhí)行查詢時(shí),不能完全確定某些信息的查詢條件,或者只知道信息的一部分,可以借助LIKE來實(shí)現(xiàn)模糊查詢。LIKE需要借助兩個(gè)通配符:

    %:表示0到多個(gè)字符
    _:標(biāo)識單個(gè)字符
    這兩個(gè)通配符可以配合使用,構(gòu)造靈活的匹配條件。例如查詢職員姓名中第二個(gè)字符是‘A’的員工信息:

    copytextpop-up
    SELECT ename, job FROM emp WHERE ename LIKE ‘_A%’;
    SELECT ename, job FROM emp WHERE ename LIKE ‘_A%’;

    圖-3 模糊查詢的結(jié)果

    1.2.4. 使用IN和NOT IN

    在WHERE子句中可以用比較操作符IN(list)來取出符合列表范圍中的數(shù)據(jù)。其中的參數(shù)list表示值列表,當(dāng)列或表達(dá)式匹配于列表中的任何一個(gè)值時(shí),條件為TRUE,該條記錄則被顯示出來。

    IN頁可以理解為一個(gè)范圍比較操作符,只不過這個(gè)范圍是一個(gè)指定的值列表,NOT IN(list) 取出不符合此列表中的數(shù)據(jù)記錄。例如查詢職位是MANAGER或者CLERK的員工:

    copytextpop-up
    SELECT ename, job FROM emp WHERE job IN (‘MANAGER’, ‘CLERK’);
    SELECT ename, job FROM emp WHERE job IN (‘MANAGER’, ‘CLERK’);
    查詢不是部門10或20的員工:

    copytextpop-up
    SELECT ename, job FROM emp WHERE deptno NOT IN (10, 20);
    SELECT ename, job FROM emp WHERE deptno NOT IN (10, 20);
    1.2.5. BETWEEN…AND…

    BETWEEN…AND…操作符用來查詢符合某個(gè)值域范圍條件的數(shù)據(jù),最常見的是使用在數(shù)字類型的數(shù)據(jù)范圍上,但對字符類型和日期類型數(shù)據(jù)也同樣適用。例如查詢薪水在1500-3000之間的職員信息:

    copytextpop-up
    SELECT ename, sal FROM emp
    WHERE sal BETWEEN 1500 AND 3000;
    SELECT ename, sal FROM emp
    WHERE sal BETWEEN 1500 AND 3000;
    1.2.6. 使用IS NULL和IS NOT NULL

    空值NULL是一個(gè)特殊的值,比較的時(shí)候不能使用”=”號,必須使用IS NULL,否則不能得到正確的結(jié)果。例如查詢哪些職員的獎(jiǎng)金數(shù)據(jù)為NULL:

    copytextpop-up
    SELECT ename, sal, comm FROM emp
    WHERE comm IS NULL;
    SELECT ename, sal, comm FROM emp
    WHERE comm IS NULL;
    1.2.7. 使用ANY和ALL條件

    在比較運(yùn)算符中,可以出現(xiàn)ALL和ANY,表示“全部”和“任一”,但是ALL和ANY不能單獨(dú)使用,需要配合單行比較操作符>、>=、<、<=一起使用。其中:

    ANY : 大于最小
    < ANY:小于最大
    ALL:大于最大
    < ALL:小于最小
    例如,查詢薪水比職位是“SALESMAN”的人高的員工信息,比任意一個(gè)SALESMAN高都行:

    copytextpop-up
    SELECT empno, ename, job, sal, deptno
    FROM emp
    WHERE sal> ANY (
    SELECT sal FROM emp WHERE job = ‘SALESMAN’);
    SELECT empno, ename, job, sal, deptno
    FROM emp
    WHERE sal> ANY (
    SELECT sal FROM emp WHERE job = ‘SALESMAN’);
    1.2.8. 查詢條件中使用表達(dá)式和函數(shù)

    當(dāng)查詢需要對選出的字段進(jìn)行進(jìn)一步計(jì)算,可以在數(shù)字列上使用算術(shù)表達(dá)式(+、-、*、/)。表達(dá)式符合四則運(yùn)算的默認(rèn)優(yōu)先級,如果要改變優(yōu)先級可以使用括號。

    算術(shù)運(yùn)算主要是針對數(shù)字類型的數(shù)據(jù),對日期類型的數(shù)據(jù)可以做加減操作,表示在一個(gè)日期值上加或減一個(gè)天數(shù)。

    查詢條件中使用字符串函數(shù)UPPER,將條件中的字符串變大寫后再參與比較:

    copytextpop-up
    SELECT ename, sal, job FROMempWHERE ename = UPPER(‘rose’);
    SELECT ename, sal, job FROMempWHERE ename = UPPER(‘rose’);
    查詢條件中使用算數(shù)表達(dá)式,查詢年薪大于10w元的員工記錄:

    copytextpop-up
    SELECT ename, sal, job FROM empWHERE sal * 12 >100000;
    SELECT ename, sal, job FROM empWHERE sal * 12 >100000;
    1.2.9. 使用DISTINCT過濾重復(fù)

    數(shù)據(jù)表中有可能存儲(chǔ)相同數(shù)據(jù)的行,當(dāng)執(zhí)行查詢操作時(shí),默認(rèn)情況會(huì)顯示所有行,不管查詢結(jié)果是否有重復(fù)的數(shù)據(jù)。當(dāng)重復(fù)數(shù)據(jù)沒有實(shí)際意義,經(jīng)常會(huì)需要去掉重復(fù)值,使用DISTINCT實(shí)現(xiàn)。例如查詢員工的部門編碼,包含所有重復(fù)值:

    copytextpop-up
    SELECT deptno FROM emp;
    SELECT deptno FROM emp;
    查詢員工的部門編碼,去掉重復(fù)值:

    copytextpop-up
    SELECT DISTINCT deptno FROM emp;
    SELECT DISTINCT deptno FROM emp;
    DISTINCT后面的列可以組合查詢,下例查詢每個(gè)部門的職位,去掉重復(fù)值。注意是deptno和job聯(lián)合起來不重復(fù):

    copytextpop-up
    SELECT DISTINCT deptno, job FROM emp;
    SELECT DISTINCT deptno, job FROM emp;

    圖-4用distinct去掉重復(fù)的列

    1.3. 排序

    1.3.1. 使用ORDER BY字句

    對查詢出的數(shù)據(jù)按一定規(guī)則進(jìn)行排序操作,使用ORDER BY子句。語法如下:

    copytextpop-up
    SELECT <, column [alias], …>
    FROM table
    [WHERE condition(s)]
    [ORDER BY column [ASC | DESC]] ;
    SELECT <, column [alias], …>
    FROM table
    [WHERE condition(s)]
    [ORDER BY column [ASC | DESC]] ;
    注意,ORDER BY必須出現(xiàn)在SELECT中的最后一個(gè)子句。下例對職員表按薪水排序:

    copytextpop-up
    SELECT ename, sal
    FROM emp
    ORDER BY sal;
    SELECT ename, sal
    FROM emp
    ORDER BY sal;

    圖-5用ORDER BY將查詢結(jié)果排序

    1.3.2. ASC和DESC

    排序時(shí)默認(rèn)按升序排列,即由小及大,ASC用來指定升序排序,DESC用來指定降序排序。

    因?yàn)镹ULL值視作最大,則升序排列時(shí),排在最后,降序排列時(shí),排在最前。如果不寫ASC或DESC,默認(rèn)是ASC,升序排列。例如,按員工的經(jīng)理升序排序:

    copytextpop-up
    SELECT empno, ename, mgr FROM emp
    WHERE deptno = 10 ORDER BY mgr;
    SELECT empno, ename, mgr FROM emp
    WHERE deptno = 10 ORDER BY mgr;
    降序排列,必須指明,按員工的薪水倒序排序:

    copytextpop-up
    SELECT ename, sal FROM emp
    ORDER BY sal DESC;
    SELECT ename, sal FROM emp
    ORDER BY sal DESC;
    1.3.3. 多個(gè)列排序

    當(dāng)以多列作為排序標(biāo)準(zhǔn)時(shí),首先按照第一列進(jìn)行排序,如果第一列數(shù)據(jù)相同,再以第二列排序,以此類推。多列排序時(shí),不管正序還是倒序,每個(gè)列需要單獨(dú)設(shè)置排序方式。

    下例對職員表中的職員排序,先按照部門編碼正序排列,再按照薪水降序排列:

    copytextpop-up
    SELECT ename, deptno, sal FROM emp
    ORDER BY deptno ASC, sal DESC;
    SELECT ename, deptno, sal FROM emp
    ORDER BY deptno ASC, sal DESC;
    1.4. 聚合函數(shù)

    1.4.1. 什么是聚合函數(shù)

    查詢時(shí)需要做一些數(shù)據(jù)統(tǒng)計(jì),比如:查詢職員表中各部門職員的平均薪水,各部門的員工人數(shù)。當(dāng)需要統(tǒng)計(jì)的數(shù)據(jù)并不能在職員表里直觀列出,而是需要根據(jù)現(xiàn)有的數(shù)據(jù)計(jì)算得到結(jié)果,這種功能可以使用聚合函數(shù)來實(shí)現(xiàn),即:將表的全部數(shù)據(jù)劃分為幾組數(shù)據(jù),每組數(shù)據(jù)統(tǒng)計(jì)出一個(gè)結(jié)果。

    因?yàn)槭嵌嘈袛?shù)據(jù)參與運(yùn)算返回一行結(jié)果,也稱作分組函數(shù)、多行函數(shù)、集合函數(shù)。用到的關(guān)鍵字:

    GOURP BY 按什么分組
    HAVING 進(jìn)一步限制分組結(jié)果
    1.4.2. MAX和MIN

    用來取得列或表達(dá)式的最大、最小值,可以用來統(tǒng)計(jì)任何數(shù)據(jù)類型,包括數(shù)字、字符和日期。例如獲取機(jī)構(gòu)下的最高薪水和最低薪水,參數(shù)是數(shù)字:

    copytextpop-up
    SELECT MAX(sal) max_sal, MIN(sal) min_sal
    FROM emp;
    SELECT MAX(sal) max_sal, MIN(sal) min_sal
    FROM emp;
    計(jì)算最早和最晚的入職時(shí)間,參數(shù)是日期:

    copytextpop-up
    SELECT MAX(hiredate) max_hire, MIN(hiredate) min_hire
    FROM emp;
    SELECT MAX(hiredate) max_hire, MIN(hiredate) min_hire
    FROM emp;
    1.4.3. AVG和SUM

    AVG和SUM函數(shù)用來統(tǒng)計(jì)列或表達(dá)式的平均值和和值,這兩個(gè)函數(shù)只能操作數(shù)字類型,并忽略NULL值。例如獲得機(jī)構(gòu)下全部職員的平均薪水和薪水總和:

    copytextpop-up
    SELECT AVG(sal) avg_sal, SUM(sal) sum_sal FROM emp;
    SELECT AVG(sal) avg_sal, SUM(sal) sum_sal FROM emp;
    1.4.4. COUNT

    COUNT函數(shù)用來計(jì)算表中的記錄條數(shù),同樣忽略NULL值。例如獲取職員表中一共有多少名職員記錄:

    copytextpop-up
    SELECT COUNT() total_num FROM emp;
    SELECT COUNT() total_num FROM emp;
    獲得職員表中有多少人是有職位的(忽略沒有職位的員工記錄)

    copytextpop-up
    SELECT COUNT(job) total_job FROM emp;
    SELECT COUNT(job) total_job FROM emp;
    1.4.5. 聚合函數(shù)對空值的處理

    聚合函數(shù)忽略NULL值。即當(dāng)emp表中的某列有NULL值,比如某新入職員工沒有薪水,比較兩條語句的結(jié)果:

    copytextpop-up
    SELECT AVG(sal) avg_sal FROM emp;
    SELECT AVG(NVL(sal,0)) avg_sal FROM emp;
    SELECT AVG(sal) avg_sal FROM emp;
    SELECT AVG(NVL(sal,0)) avg_sal FROM emp;
    1.5. 分組

    1.5.1. GROUP BY子句

    上面的例子都是以整個(gè)表作為一組。如果希望得到每個(gè)部門的平均薪水,而不是整個(gè)機(jī)構(gòu)的平均薪水,需要把整個(gè)數(shù)據(jù)表按部門劃分成一個(gè)個(gè)小組,每個(gè)小組中包含一行或多行數(shù)據(jù),在每個(gè)小組中再使用分組函數(shù)進(jìn)行計(jì)算,每組返回一個(gè)結(jié)果。語法如下:

    copytextpop-up
    SELECT <, column [alias], …>
    FROM table [WHERE condition(s)]
    [GROUP BY group_by_expression]
    [HAVING group_condition]
    [ORDER BY column [ASC | DESC]] ;
    SELECT <, column [alias], …>
    FROM table [WHERE condition(s)]
    [GROUP BY group_by_expression]
    [HAVING group_condition]
    [ORDER BY column [ASC | DESC]] ;
    其中劃分的小組有多少,最終的結(jié)果集行數(shù)就有多少。

    1.5.2. 分組查詢

    圖-6分組查詢

    1.5.3. HAVING字句

    HAVING子句用來對分組后的結(jié)果進(jìn)一步限制,比如按部門分組后,得到每個(gè)部門的最高薪水,可以繼續(xù)限制輸出結(jié)果。必須跟在GROUP BY后面,不能單獨(dú)存在。例如查詢每個(gè)部門的最高薪水,只有最高薪水大于4000的記錄才被輸出顯示:

    copytextpop-up
    SELECT deptno, MAX(sal) max_sal FROM emp
    GROUP BY deptno HAVING MAX(sal) >4000;
    SELECT deptno, MAX(sal) max_sal FROM emp
    GROUP BY deptno HAVING MAX(sal) >4000;
    1.6. 查詢語句的執(zhí)行順序

    當(dāng)一條查詢語句中包含所有的子句,執(zhí)行順序依下列子句次序:

    FROM 子句:執(zhí)行順序?yàn)閺暮笸啊挠业阶蟆?shù)據(jù)量較少的表盡量放在后面。
    WHERE子句:執(zhí)行順序?yàn)樽韵露稀挠业阶蟆⒛苓^濾掉最大數(shù)量記錄的條件寫在WHERE 子句的最右。
    GROUP BY:執(zhí)行順序從左往右分組,最好在GROUP BY前使用WHERE將不需要的記錄在GROUP BY之前過濾掉。
    HAVING 子句:消耗資源。盡量避免使用,HAVING 會(huì)在檢索出所有記錄之后才對結(jié)果集進(jìn)行過濾,需要排序等操作。
    SELECT子句:少用號,盡量取字段名稱。ORACLE 在解析的過程中, 通過查詢數(shù)據(jù)字典將號依次轉(zhuǎn)換成所有的列名, 消耗時(shí)間。
    ORDER BY子句:執(zhí)行順序?yàn)閺淖蟮接遗判?#xff0c;消耗資源。
    2. SQL(關(guān)聯(lián)查詢)

    2.1. 關(guān)聯(lián)基礎(chǔ)

    2.1.1. 關(guān)聯(lián)的概念

    實(shí)際應(yīng)用中所需要的數(shù)據(jù),經(jīng)常會(huì)需要查詢兩個(gè)或兩個(gè)以上的表。這種查詢兩個(gè)或兩個(gè)以上數(shù)據(jù)表或視圖的查詢叫做連接查詢,連接查詢通常建立在存在相互關(guān)系的父子表之間。語法如下:

    copytextpop-up
    SELECT table1.column, table2.column
    FROM table1, table2
    WHERE table1.column1 = table2.column2;
    SELECT table1.column, table2.column
    FROM table1, table2
    WHERE table1.column1 = table2.column2;
    或者:

    copytextpop-up
    SELECT table1.column, table2.column
    FROM table1JOIN table2
    ON(table1.column1 = table2.column2);
    SELECT table1.column, table2.column
    FROM table1JOIN table2
    ON(table1.column1 = table2.column2);
    2.1.2. 笛卡爾積

    笛卡爾積指做關(guān)聯(lián)操作的每個(gè)表的每一行都和其它表的每一行做組合,假設(shè)兩個(gè)表的記錄條數(shù)分別是X和Y,笛卡爾積將返回X * Y條記錄。當(dāng)兩個(gè)表關(guān)聯(lián)查詢時(shí),不寫連接條件,得到的結(jié)果即是笛卡爾積。例如:

    copytextpop-up
    SELECT COUNT() FROM emp; --14條記錄
    SELECT COUNT() FROM dept; --4條記錄
    SELECT emp.ename, dept.dnameFROM emp, dept;–56條記錄
    SELECT COUNT() FROM emp; --14條記錄
    SELECT COUNT() FROM dept; --4條記錄
    SELECT emp.ename, dept.dnameFROM emp, dept;–56條記錄
    2.1.3. 等值連接

    等值連接是連接查詢中最常見的一種,通常是在有主外鍵關(guān)聯(lián)關(guān)系的表間建立,并將連接條件設(shè)定為有關(guān)系的列,使用等號”=”連接相關(guān)的表。例如查詢職員的姓名、職位以及所在部門的名字和所在城市,使用兩個(gè)相關(guān)的列做等值操作:

    copytextpop-up
    SELECT e.ename, e.job, d.dname, d.loc
    FROM emp e, dept d
    WHERE e.deptno = d.deptno;
    SELECT e.ename, e.job, d.dname, d.loc
    FROM emp e, dept d
    WHERE e.deptno = d.deptno;
    2.2. 關(guān)聯(lián)查詢

    2.2.1. 內(nèi)連接

    內(nèi)連接返回兩個(gè)關(guān)聯(lián)表中所有滿足連接條件的記錄。例如查詢員工的名字和所在部門的名字:

    copytextpop-up
    SELECT e.ename, d.dname
    FROM emp e, dept d
    WHERE e.deptno = d.deptno
    SELECT e.ename, d.dname
    FROM emp e, dept d
    WHERE e.deptno = d.deptno
    上面的語法也可以寫為:

    copytextpop-up
    SELECT e.ename, d.dname
    FROM emp e JOIN dept d
    ON(e.deptno = d.deptno);
    SELECT e.ename, d.dname
    FROM emp e JOIN dept d
    ON(e.deptno = d.deptno);
    2.2.2. 外連接

    內(nèi)連接返回兩個(gè)表中所有滿足連接條件的數(shù)據(jù)記錄,在有些情況下,需要返回那些不滿足連接條件的記錄,需要使用外連接,即不僅返回滿足連接條件的記錄,還將返回不滿足連接條件的記錄。比如把沒有職員的部門和沒有部門的職員查出來。外連接的語法如下:

    copytextpop-up
    SELECT table1.column, table2.column
    FROM table1 [LEFT | RIGHT | FULL] JOIN table2
    ON table1.column1 = table2.column2;
    SELECT table1.column, table2.column
    FROM table1 [LEFT | RIGHT | FULL] JOIN table2
    ON table1.column1 = table2.column2;
    了解驅(qū)動(dòng)表的概念。

    圖-7左外連接

    圖-8右外連接

    外連接查詢的例子,Emp表做驅(qū)動(dòng)表:

    copytextpop-up
    SELECT e.ename, d.dname
    FROM emp e LEFT OUTER JOIN dept d
    ON e.deptno = d.deptno;
    SELECT e.ename, d.dname
    FROM emp e LEFT OUTER JOIN dept d
    ON e.deptno = d.deptno;
    Dept表做驅(qū)動(dòng)表:

    copytextpop-up
    SELECT e.ename, d.dname
    FROM emp e RIGHT OUTER JOIN dept d
    ON e.deptno = d.deptno;
    SELECT e.ename, d.dname
    FROM emp e RIGHT OUTER JOIN dept d
    ON e.deptno = d.deptno;
    2.2.3. 全連接

    全外連接是指除了返回兩個(gè)表中滿足連接條件的記錄,還會(huì)返回不滿足連接條件的所有其它行。即是左外連接和右外連接查詢結(jié)果的總和。例如:

    copytextpop-up
    SELECT e.ename, d.dname
    FROM emp e FULL OUTER JOIN dept d
    ON e.deptno = d.deptno;
    SELECT e.ename, d.dname
    FROM emp e FULL OUTER JOIN dept d
    ON e.deptno = d.deptno;

    圖-9 全外連接

    2.2.4. 自連接

    自連接是一種特殊的連接查詢,數(shù)據(jù)的來源是一個(gè)表,即關(guān)聯(lián)關(guān)系來自于單表中的多個(gè)列。表中的列參照同一個(gè)表中的其它列的情況稱作自參照表。

    自連接是通過將表用別名虛擬成兩個(gè)表的方式實(shí)現(xiàn),可以是等值或不等值連接。例如查出每個(gè)職員的經(jīng)理名字,以及他們的職員編碼:

    copytextpop-up
    SELECT worker.empnow_empno, worker.enamew_ename, manager.empnom_empno, manager.enamem_ename
    FROM emp worker join emp manager
    ON worker.mgr = manager.empno;
    SELECT worker.empnow_empno, worker.enamew_ename, manager.empnom_empno, manager.enamem_ename
    FROM emp worker join emp manager
    ON worker.mgr = manager.empno;
    數(shù)據(jù)庫的查詢總結(jié)-----按條件查詢

    作者:羽翼冰藍(lán)
    來源:CSDN
    原文:https://blog.csdn.net/kuangzhixuan/article/details/74299047
    版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!

    總結(jié)

    以上是生活随笔為你收集整理的【SQL】SQL(基础查询)、SQL(关联查询)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。