使用子查詢定義未肯定數據

  • 子查詢

也稱爲嵌套查詢,位於兩個in個一個查詢的 WHERE 子句裏的查詢,它返回的數據一般在主查詢裏做爲一個條件,從而進一步數據庫返回的數據數據庫

  • 子查詢使用遵照的規則

a、子查詢必須位於圓括號內函數

b、子查詢的SELECT子句中只能有一個列,除非主查詢中的多個列,用於與子查詢選中的列相比較code

c、子查詢不能使用 ORDER BY,不過主查詢能夠,在查詢中,GROUP BY能夠起到同 ORDER BY 相同的做用table

d、返回多行數據的子查詢只能同多值操做符一塊兒使用,好比 IN 操做符語法

e、SELECT 列表中不能包含任何對 BLOB、ARRAY、CLOB 或者 NCLOB類型值的引用引用

f、子查詢不能直接在用在集合函數中im

g、BETWEEN 操做符不能同子查詢一塊兒使用,可是 BETWEEN 操做符能夠在子查詢中數據

  • SELECT 語句中的子查詢

語法查詢

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

案例img

找除薪水大於4500的數據

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

  •  子查詢與INSERT語句

將子查詢返回的數據插入到其餘表中,子查詢選區的數據能夠被任何字符、日期或着數值函數所修飾(DML命令,須要使用COMMIT和ROLLBACK)

語法

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

案例

按照上述的將表全部的數據插入新表
INSERT INTO CUSTOMERS_BKP
SELECT *
FROM CUSTOMERS
WHERE ID IN(
            SELECT ID 
            FROM CUSTOMERS
            )

 

  • 子查詢與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 倍

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

 

  •  子查詢與DELETE語句

語法

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

 

  • 關聯子查詢

關聯子查詢是指一個包含對錶的引用的子查詢,該表也顯示在外部查詢中。通俗一點來說,就是子查詢引用到了主查詢的數據

相關文章
相關標籤/搜索