使用子查询定义未肯定数据

  • 子查询

也称为嵌套查询,位于两个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)]

 

  • 关联子查询

关联子查询是指一个包含对表的引用的子查询,该表也显示在外部查询中。通俗一点来说,就是子查询引用到了主查询的数据

相关文章
相关标签/搜索