多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

中國最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2

sql教程

SQL 教程

SQL 高級教程

SQL 函數

  • SQL 主機
  • SQL 總結
  • 實例/測驗

    拓展閱讀

    SQL 子查詢

    閱讀 (2390)

    SQL 子查詢

    子查詢(Sub Query)或者說內查詢(Inner Query),也可以稱作嵌套查詢(Nested Query),是一種嵌套在其他 SQL 查詢的 WHERE 子句中的查詢。

    子查詢用于為主查詢返回其所需數據,或者對檢索數據進行進一步的限制。

    子查詢可以在 SELECT、INSERT、UPDATE 和 DELETE 語句中,同 =、<、>、>=、<=、IN、BETWEEN 等運算符一起使用。

    使用子查詢必須遵循以下幾個規則:

    • 子查詢必須括在圓括號中。
    • 子查詢的 SELECT 子句中只能有一個列,除非主查詢中有多個列,用于與子查詢選中的列相比較。
    • 子查詢不能使用 ORDER BY,不過主查詢可以。在子查詢中,GROUP BY 可以起到同 ORDER BY 相同的作用。
    • 返回多行數據的子查詢只能同多值操作符一起使用,比如 IN 操作符。
    • SELECT 列表中不能包含任何對 BLOB、ARRAY、CLOB 或者 NCLOB 類型值的引用。
    • 子查詢不能直接用在集合函數中。
    • BETWEEN 操作符不能同子查詢一起使用,但是 BETWEEN 操作符可以用在子查詢中。

    SELECT 語句中的子查詢

    通常情況下子查詢都與 SELECT 語句一起使用,其基本語法如下所示:

    SELECT column_name [, column_name ]
    FROM   table1 [, table2 ]
    WHERE  column_name OPERATOR
          (SELECT column_name [, column_name ]
          FROM table1 [, table2 ]
          [WHERE])

    示例:

    考慮 CUSTOMERS 表,表中記錄如下所示:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  8500.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    現在,讓我們試一下在 SELECT 語句中進行子查詢:

    SQL> SELECT * 
         FROM CUSTOMERS 
         WHERE ID IN (SELECT ID 
                      FROM CUSTOMERS 
                      WHERE SALARY > 4500) ;

    上述語句的執行結果如下所示:

    +----+----------+-----+---------+----------+
    | ID | NAME     | AGE | ADDRESS | SALARY   |
    +----+----------+-----+---------+----------+
    |  4 | Chaitali |  25 | Mumbai  |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal  |  8500.00 |
    |  7 | Muffy    |  24 | Indore  | 10000.00 |
    +----+----------+-----+---------+----------+

    INSERT 語句中的子查詢:

    子查詢還可以用在 INSERT 語句中。INSERT 語句可以將子查詢返回的數據插入到其他表中。子查詢中選取的數據可以被任何字符、日期或者數值函數所修飾。

    其基本語法如下所示:

    INSERT INTO table_name [ (column1 [, column2 ]) ]
               SELECT [ *|column1 [, column2 ]
               FROM table1 [, table2 ]
               [ WHERE VALUE OPERATOR ]

    示例:

    考慮與 CUSTOMERS 表擁有相似結構的 CUSTOMERS_BKP 表。現在要將 CUSTOMER 表中所有的數據復制到 CUSTOMERS_BKP 表中,代碼如下:

    SQL> INSERT INTO CUSTOMERS_BKP
         SELECT * FROM CUSTOMERS 
         WHERE ID IN (SELECT ID 
                      FROM CUSTOMERS) ;

    UPDATE 語句中的子查詢:

    子查詢可以用在 UPDATE 語句中。當子查詢同 UPDATE 一起使用的時候,既可以更新單個列,也可更新多個列。

    其基本語法如下:

    UPDATE table
    SET column_name = new_value
    [ WHERE OPERATOR [ VALUE ]
       (SELECT COLUMN_NAME
       FROM TABLE_NAME)
       [ WHERE) ]

    示例:

    假設我們有一份 CUSTOMERS_BKP 表作為 CUSTOMERS 表的備份。

    下面的示例將 CUSTOMERS 表中所有 AGE 大于或者等于 27 的客戶的 SALARY 字段都變為了原來的 0.25 倍:

    SQL> UPDATE CUSTOMERS
         SET SALARY = SALARY * 0.25
         WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP
                       WHERE AGE >= 27 );

    這將影響兩行數據,隨后 CUSTOMERS 表中的記錄將如下所示:

    +----+----------+-----+-----------+----------+
    | ID | NAME     | AGE | ADDRESS   | SALARY   |
    +----+----------+-----+-----------+----------+
    |  1 | Ramesh   |  35 | Ahmedabad |   125.00 |
    |  2 | Khilan   |  25 | Delhi     |  1500.00 |
    |  3 | kaushik  |  23 | Kota      |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai    |  6500.00 |
    |  5 | Hardik   |  27 | Bhopal    |  2125.00 |
    |  6 | Komal    |  22 | MP        |  4500.00 |
    |  7 | Muffy    |  24 | Indore    | 10000.00 |
    +----+----------+-----+-----------+----------+

    DELETE 語句中的子查詢:

    如同前面提到的其他語句一樣,子查詢還可以同 DELETE 語句一起使用。

    其基本語法如下所示:

    DELETE FROM TABLE_NAME
    [ WHERE OPERATOR [ VALUE ]
       (SELECT COLUMN_NAME
       FROM TABLE_NAME)
       [ WHERE) ]

    示例:

    假設我們有一份 CUSTOMERS_BKP 表作為 CUSTOMERS 表的備份。

    下面的示例將從 CUSTOMERS 表中刪除所有 AGE 大于或者等于 27 的記錄:

    SQL> DELETE FROM CUSTOMERS
         WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP
                       WHERE AGE > 27 );

    這將影響兩行數據,隨后 CUSTOMERS 表中的記錄將如下所示:

    +----+----------+-----+---------+----------+
    | ID | NAME     | AGE | ADDRESS | SALARY   |
    +----+----------+-----+---------+----------+
    |  2 | Khilan   |  25 | Delhi   |  1500.00 |
    |  3 | kaushik  |  23 | Kota    |  2000.00 |
    |  4 | Chaitali |  25 | Mumbai  |  6500.00 |
    |  6 | Komal    |  22 | MP      |  4500.00 |
    |  7 | Muffy    |  24 | Indore  | 10000.00 |
    +----+----------+-----+---------+----------+
    關閉
    程序員人生
    主站蜘蛛池模板: 国产一区日韩二区欧美三区 | 国产精品自在线拍国产 | 亚洲第一在线视频 | 性猛交xxxxx按摩欧美 | 国产视频二区在线观看 | 欧美精品一国产成人性影视 | 国产女人18一级毛片视频 | 最近免费中文字幕大全视频 | 亚洲国产成人精彩精品 | 欧美精品18videose×性欧美 | 亚洲欧洲一区二区三区久久 | 欧美精品播放 | 亚洲综合视频在线 | 一级欧美毛片成人 | 最新中文字幕在线观看 | 国产第一区二区三区在线观看 | 欧美成人影院免费观 | 最近中文字幕++中文 | 中文字幕精品视频 | 精品国产一区二区三区在线 | 91久久国产精品 | 久久精品a一国产成人免费网站 | 亚洲tv成人天堂在线播放 | 伊人院 | 欧美日韩精品乱国产 | 手机看片福利视频 | 中文字幕一区二区三区免费看 | 2022国产福利在线观看 | 日韩综合第一页 | www.日本免费 | www.九色.com| 国产福利乳摇在线播放 | 加勒比精品久久一区二区三区 | 国产成人精品第一区二区 | 欧美黑人性生活 | 东方aⅴ免费观看久久av | 欧美日韩久久中文字幕 | 欧美久久综合性欧美 | 亚洲欧美在线观看首页 | 成人在色线视频在线观看免费大全 | 99成人精品 |