星辰日月00

欲多则心散,心散则志衰,志衰则思不达也!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

5.含有子查询的DML语句
在数据操作语言中可以使用子查询语句,完成操作过程较复杂,功能较强的DML操作。
(1)插入数据INSERT语句中使用子查询
将某表的数据查询子集插入到另一个表中。
语句格式:INSERT INTO <table_name> [(column_name [, column_name, ...])] subquery
--subquery用于指定表提供数据的子查询
--建立计算机专业学生students_computer表:
CREATE TABLE students_computer(
 student_id NUMBER(5) CONSTRAINT student_computer_pk PRIMARY KEY,
 monitor_id NUMBER(5),
 name VARCHAR2(10) NOT NULL,
 sex VARCHAR2(6),
 dob DATE,
 specialty VARCHAR2(10)
);
INSERT INTO students_computer
 (SELECT * FROM students WHERE specialty = '计算机'); --默认选定指定表或视图的所有列
(2)更新数据UPDATE语句中使用子查询
利用子查询结果修改表中的数据。
语句格式:UPDATE <table_name> SET [(column_name [, column_name, ...])] = subquery
注意:column_name指定的列的数据类型和个数,必须要与子查询列的数据类型和个数完全匹配。
UPDATE teachers SET bonus =
  (SELECT AVG(bonus) FROM teachers)
  WHERE bonus IS NULL;
(3)删除数据DELETE语句中使用子查询
语句格式:DELETE FROM <table_name> WHERE [(column_name [, column_name, ...])] = subquery
--subquery结果作为删除表中数据的条件。
DELETE FROM teachers
 WHERE wage > (SELECT 1.1*AVG(wage) FROM teachers);

posted on 2012-03-04 16:58  星辰日月00  阅读(266)  评论(0编辑  收藏  举报