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

  • 子查询

也称为嵌套查询,位于两个in个一个查询的 WHERE 子句里的查询,它返回的数据通常在主查询里作为一个条件,从而进一步数据库返回的数据

  • 子查询使用遵守的规则

a、子查询必须位于圆括号内

b、子查询的SELECT子句中只能有一个列,除非主查询中的多个列,用于与子查询选中的列相比较

c、子查询不能使用 ORDER BY,不过主查询可以,在查询中,GROUP BY可以起到同 ORDER BY 相同的作用

d、返回多行数据的子查询只能同多值操作符一起使用,比如 IN 操作符

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

f、子查询不能直接在用在集合函数中

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]) 

案例

08015110_12os.png

找除薪水大于4500的数据

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

08015110_zWnv.png

  •  子查询与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)  

 

08015110_EvLR.png

  •  子查询与DELETE语句

语法

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

 

  • 关联子查询

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

 

转载于:https://my.oschina.net/u/1785519/blog/1566332

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值