zoukankan      html  css  js  c++  java
  • select into from 和 insert into select 的用法和区别

    select into from 和 insert into select都是用来复制表,两者的主要区别为: 

    select into from 要求目标表不存在,因为在插入时会自动创建。

    insert into select from 要求目标表存在.

    备份表数据: create table emp as select * from scott.emp

    还原表数据:insert into emp select * from scott.emp

     

    1. 复制表结构及其数据:

    create table table_name_new as select * from table_name_old

    2. 只复制表结构:

    create table table_name_new as select * from table_name_old where 1=2;

    或者:

    create table table_name_new like table_name_old

    3. 只复制表数据:

    如果两个表结构一样:

    insert into table_name_new select * from table_name_old

    如果两个表结构不一样:

    insert into table_name_new(column1,column2...) select column1,column2... from table_name_old

    pasting

     

    一、INSERT INTO SELECT语句

    1、语句形式为

    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的字段外,还可以插入常量。

     

                          

        --1.创建测试表

        create TABLE Table1

        (

             a varchar(10),

             b varchar(10),

             c varchar(10),

             CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED

             (

                 a ASC

             )

        ) ON [PRIMARY]

     

        create TABLE Table2

        (

             a varchar(10),

             c varchar(10),

             d int,

             CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED

             (

                 a ASC

             )

        ) ON [PRIMARY]

        GO

     

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

        GO

        select * from Table2

     

        --3.INSERT INTO SELECT语句复制表数据

        Insert into Table2(a, c, d) select a,c,5 from Table1

        GO

     

        --4.显示更新后的结果

        select * from Table2

        GO

     

        --5.删除测试表

        drop TABLE Table1

        drop TABLE Table2

                   

    二、SELECT INTO FROM语句

    语句形式为:SELECT vale1, value2 into Table2 from Table1

    要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中 。

    --1.创建测试表

                                 create TABLE Table1

        (

             a varchar(10),

             b varchar(10),

             c varchar(10),

             CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED

             (

                 a ASC

             )

        ) ON [PRIMARY]

        GO

     

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

        GO

     

        --3.SELECT INTO FROM语句创建表Table2并复制数据

         select a,c INTO Table2 from Table1

        GO

     

        --4.显示更新后的结果

         select * from Table2

        GO

     

        --5.删除测试表

         drop TABLE Table1

         drop TABLE Table2

     

     

  • 相关阅读:
    Codeforces Round #343 (Div. 2) B. Far Relative’s Problem 暴力
    Codeforces Round #343 (Div. 2) A. Far Relative’s Birthday Cake 水题
    Educational Codeforces Round 8 F. Bear and Fair Set 最大流
    Educational Codeforces Round 8 E. Zbazi in Zeydabad 树状数组
    Educational Codeforces Round 8 D. Magic Numbers 数位DP
    Educational Codeforces Round 8 C. Bear and String Distance 贪心
    Educational Codeforces Round 8 B. New Skateboard 暴力
    Educational Codeforces Round 8 A. Tennis Tournament 暴力
    BZOJ 4032: [HEOI2015]最短不公共子串 后缀自动机 暴力
    BZOJ 4031: [HEOI2015]小Z的房间 高斯消元 MartixTree定理 辗转相除法
  • 原文地址:https://www.cnblogs.com/originate918/p/6738737.html
Copyright © 2011-2022 走看看