复制表 :
1、select into from 与 insert into from
(创建Table2,并从Table1复制内容)
SELECT field1,field2 INTO Table2 FROM Table1
( Table2已经存在,只是从Table1复制内容 )
INSERT INTO Table2(field1,field2,...) SELECT value1,value2,... FROM Table1
2、create table as
(创建Table2,并从Table1复制内容)
CREATE Table2 (field1,field2,...) AS SELECT (field1,field2,... ) FROM Table1
求:并集、交集、补集合
---------union、union all 并集------------------
--union 会去掉重复数据
select * from table1
union / union all
select * from table2
---------union、union all 并集-----------------
----------intersect 交集 ------------------
select * from table1
intersect
select * from table2
----------intersect 交集 ------------------
----------Oracle 补集 minus ------------------
select * from table1
minus
select * from table2
----------Oracle 补集 minus ------------------
----------SQLServer2005 补集 except ------------------
select * from table1
except
select * from table2
----------SQLServer2005 补集 except ------------------
----------------------级联 update-------------------------------------------------------------------------------------------
SQLServer:
update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式
例如:
UPDATE table_A t1
SET t1.name = t12.name
FROM table_B t2
INNER JOIN table_A
ON (table_B.id = table_A.id);
实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的
Oracle :
写法一:
UPDATE table_A t1
SET t 1.name = (SELECT tt.name FROM table_B tt WHERE tt.pid = t1.id)
WHERE EXISTS (SELECT 1 FROM table_B t2 WHERE t2.pid = t1.id)
或
UPDATE table_1 a
SET t1.name= (SELECT tt.name FROM table_B tt WHERE tt.pid = t1.id)
WHERE t1.id=(SELECT t2.pid FROM table_B t2 WHERE t2.pid = t1.id)
写法二:
UPDATE table_A t1
SET (t1.name,t1.dept) = (SELECT t2.name, t2.dept FROM table_B t2 WHERE t2.pid = t1.id)
WHERE EXISTS (SELECT 1 FROM table_B t2 WHERE t2.pid = t1.id);
或
UPDATE table_A t1
SET (t1.name,t1.dept) = (SELECT t2.name, t2.dept FROM table_B t2 WHERE t2.pid = t1.id)
WHERE t1.id=(SELECT t2.pid FROM table_B t2 WHERE t2.pid = t1.id)
积累中... ...