代码之家  ›  专栏  ›  技术社区  ›  kupa

1Z0-007试题

  •  2
  • kupa  · 技术社区  · 16 年前

    在哪四个子句中可以使用子查询?(选择四个。)

    B、 在SELECT语句的FROM子句中

    C、 在SELECT语句的GROUP BY子句中

    D、 在SELECT语句的WHERE子句中

    E、 在UPDATE语句的SET子句中

    回答: B、 D、E、F

    但我认为正确的答案是: 但不是 . 不是这样吗???

    4 回复  |  直到 16 年前
        1
  •  4
  •   Lucero    16 年前

    听起来不错。

    你为什么认为A是有效的?INTO正在指定目标行集,该行集不能是子查询。在F中,可以使用返回标量值的子查询。

        2
  •  2
  •   Alin P.    16 年前

    首先,我们必须承认子查询返回一组值元组(行): {(value_1_A, value_1_B, ...), (value_2_A, value_2_B, ...), ...}

    一个 INTO 子句需要一个表名,而不是一组值,因此您不能使用子查询。注意,这与

    F型 -的VALUES子句 INSERT 语句需要的正是我所说的子查询返回的一组值。

    正确的答案是 , 丁 , E类 F型

    下面是有关子查询的更多信息: http://www.techonthenet.com/oracle/subqueries.php

        3
  •  2
  •   kupa    16 年前

    抢劫。。。我发现了一些非常重要的东西,这证明了我的论断。。。

    子查询可以在DML语句中使用,例如 插入 , 删除 ,

    和 合并 . 下面是DML中子查询的一些示例

    声明。

    将所有员工的工资更新为

    对应部门(关联子查询):

    UPDATE employees e1
    
    SET  salary = (SELECT MAX(salary)
    
         FROM  employees e2
    
         WHERE e1.department_id = e2.department_id);
    

    部门中的薪资(使用相关子查询):

    DELETE FROM employees e
    
    WHERE salary < (SELECT AVG(salary) FROM employees
    
          WHERE  department_id = e.department_id);
    

    INSERT INTO employee_archive
    
    SELECT * FROM employees;
    

    要在INSERT语句的VALUES子句中指定子查询,请执行以下操作:

    INSERT INTO departments
    
           (department_id, department_name)
    
    VALUES ((SELECT MAX(department_id)
    
             +10 FROM departments), 'EDP');
    

    . 下面是一个例子:

    DELETE FROM
    
    (SELECT * FROM departments
    
     WHERE department_id < 20)
    
    WHERE department_id = 10;
    
    
    
    
    INSERT INTO (SELECT department_id, department_name
    
    FROM departments
    
    WHERE department_id < 20)
    
    VALUES (35, 'MARKETING');
    

        4
  •  1
  •   Rich Benner    10 年前

    子查询可以在INSERT语句的INTO子句中使用。所以也是正确的答案。

    以下查询有效:

    insert into (select name from emp) 
    values ((select 'sunil' from dual));