Oracle之快速复制表-yellowcong

来源:互联网 发布:mac上qq截图快捷键 编辑:程序博客网 时间:2024/06/07 05:09

我们可以通过CREATE TABLE 表名 AS SELECT 语句这个方法,快速的创建一个数据结构一模一样,但是就名称不一样的表了,其中还有SELECT INTO FROM的方法,也可以快速创建表,但是对于Mysql这种方式不支持,他们都支持快速插入数据INSERT INTO SELECT的语法

快速创建表

通过CREATE TABLE 表名 AS SELECT 语句 命令,直接就将表结构数据,都复制粘贴过来了

CREATE TABLE USER AS SELECT * FROM users ;

这里写图片描述

案例

案例

通过created table的方式创建表,然后删除表

    -- 1.创建测试表    CREATE TABLE Table1    (         a VARCHAR(10),         b VARCHAR(10),         c VARCHAR(10)    ) ;    -- 2.创建测试数据    INSERT INTO Table1 VALUES('赵','asds','90');    INSERT INTO Table1 VALUES('钱','asds','100');    INSERT INTO Table1 VALUES('孙','asds','80');    INSERT INTO Table1 VALUES('李','asds',NULL);    -- 3.添加新表    CREATE TABLE table2 AS SELECT * FROM Table1;    -- 4、查看结果    SELECT * FROM TABLE2 ;    -- 5、删除表    DROP TABLE table1;    DROP TABLE table2 ;

快速插入数据之 INSERT INTO SELECT

通过INSERT INTO SELECT语句,可以快速的插入数据,实现自己想要的数据插入,不需要通过一条一条的插,基本语法

Insert into Table2(field1,field2,…) select value1,value2,… from Table1

2、注意地方:

(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在

(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:
Insert into Table2(field1,field2,…) values (select value1,value2,… from Table1)

(4)由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

案例

通过insert into select 来插入自己查询的数据

    -- 1.创建测试表    CREATE TABLE Table1    (         a VARCHAR(10),         b VARCHAR(10),         c VARCHAR(10)    ) ;    CREATE TABLE Table2    (         a VARCHAR(10),         c VARCHAR(10),         d INT    ) ;    -- 2.创建测试数据    INSERT INTO Table1 VALUES('赵','asds','90');    INSERT INTO Table1 VALUES('钱','asds','100');    INSERT INTO Table1 VALUES('孙','asds','80');    INSERT INTO Table1 VALUES('李','asds',NULL);    SELECT * FROM Table2    -- 3.INSERT INTO SELECT语句复制表数据    INSERT INTO Table2(a, c, d) SELECT a,c,5 FROM Table1;    -- 4.显示更新后的结果    SELECT * FROM Table2;    -- 5.删除测试表    DROP TABLE Table1;    DROP TABLE Table2;

快速创建表 之SELECT INTO FROM

通过SELECT a,b INTO table2 FROM table1;,这个方法创建表,对于Oracle可以,但是对于Mysql,还是只支持CREATE TABLE AS 的方式,其中AS 可以不写

    -- 1.创建测试表    CREATE TABLE Table1    (         a VARCHAR(10),         b VARCHAR(10),         c VARCHAR(10)    ) ;    -- 2.创建测试数据    INSERT INTO Table1 VALUES('赵','asds','90');    INSERT INTO Table1 VALUES('钱','asds','100');    INSERT INTO Table1 VALUES('孙','asds','80');    INSERT INTO Table1 VALUES('李','asds',NULL);    -- 3.添加新表    -- MYSQL 不支持 select INTO FROM         SELECT a,b INTO table2 FROM table1;     -- 这种CREATE TABLE AS的方法,Mysql支持    CREATE TABLE TABLE2 (SELECT A,B FROM TABLE1) ;    -- 4、查看结果    SELECT * FROM TABLE2 ;    -- 5、删除表    DROP TABLE table1;    DROP TABLE table2 ;
原创粉丝点击