`

insert 多条记录,且自动创建表操作

    博客分类:
  • sql
阅读更多
引用

Insert可以使一个表新增一个或多个记录的用法:


INSERT INTO:新增一个记录。 

INSERT INTO…SELECT:新增多个记录。 

一、INSERT INTO 

新增一个记录的INSERT INTO语法如下: 

INSERT INTO 表 [(字段1[,字段2[, ...]])] 
VALUES (值1[,值2[, ...])

select 字段1,字段2,....into 自动创建的表名 from 已存在的表名称

如:select avg(smoney) as '平均业绩',sprovince as '地区' into newtalbe from tableName group by sprovince;

新增的记录,将依照指定字段排列的顺序插入对应的值,譬如值1将被插入至字段1,值2将被插入至字段2,依此类推。 

若未指定 (字段1[,字段2[, ...]]) ,将依照表所定义的字段排列的顺序插入对应的值,在VALUES 子句必须包含表中的每一字段值。 

值间须使用逗点分隔,文字字段须使用单用引号 ('值') 括起来。 

二、Insert Into...Select 

若要新增多个记录,可以使用INSERT INTO…SELECT,语法如下: 

INSERT INTO 表 [IN 外部资料库] [(字段1[,字段2[, ...]])] 
SELECT [表.]字段1[, 字段2[, ...] 
FROM 表 

如果表包含一个主索引,须确定新增到主索引字段的值是唯一的且不可为Null值。 

原表的字段为自动编号类型时,如果您要将新增记录重新编号,就不要在查询之中包含自动编号字段。若要保持原字段中的值,则将自动编号加在查询之中。 

INSERT INTO将所新增的记录加入原有的表之中。若要建立一个新的表,可以使用 SELECT... INTO 的语句。

------------------------------

Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少。但我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INTO SELECT 表复制语句了。

      1.INSERT INTO SELECT语句

       语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

      [color=red]要求目标表Table2必须存在,由于目标表Table2已经存在[/color],所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下:

INSERT INTO SELECT语句复制表数据
   --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

      2.SELECT INTO FROM语句

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

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

SELECT INTO FROM创建表并复制表数据
   --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--------------------------------------------select into 和 insert into select 两种表复制语句之间的差别 

select * into destTbl from srcTbl 

insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl 

以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的。 

第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。 

第二句(insert into select from)要求目标表(destTbl)存在,由于目标表已经存在,所以我们除了插入源表(srcTbl)的字段外,还可以插入常量,如例中的:5。
分享到:
评论

相关推荐

    SQL Server 之 SET IDENTITY_INSERT

    上述代码展示了如何使用`SELECT`语句结合`SET IDENTITY_INSERT`来插入多条记录,并且显式指定了标识列的值。 7. **注意事项**: - 每次启用`IDENTITY_INSERT`时,只针对当前数据库中的指定表有效。 - 在更改标识...

    ORACLE表自动按月分区步骤

    最后,通过插入一条新记录(测试时使用,生产环境不建议操作),来验证分区表是否能够根据新数据的日期自动创建新的分区及其对应的索引。 ```sql INSERT INTO USER_ORDER (ID, CREATE_TIME) VALUES (1, ADD_MONTHS...

    MySql练习1:创建数据库表news.zip

    1. `id`:这是一个自动递增的整数字段,通常作为主键,确保每条记录的唯一性。 2. `title`:存储新闻标题,使用VARCHAR类型,长度为255个字符,且不允许为空。 3. `content`:存储新闻内容,使用TEXT类型,可以容纳...

    触发器生成数据库表操作日志

    【触发器生成数据库表操作日志】是一种技术手段,用于记录数据库中特定数据表的DML(数据操作语言)变化,如INSERT、DELETE和UPDATE操作。这种做法在数据库管理中非常常见,尤其对于审计和追踪数据变更历史至关重要...

    mysql创建表向表中插入数据实例

    2. 插入数据 (`INSERT INTO`),可以一次插入多条记录。 3. 更新数据 (`UPDATE`),用于修改表中已存在的记录。 4. 删除数据 (`DELETE FROM`),用于从表中移除满足特定条件的记录。 通过这个实例,我们可以了解到在...

    mybatis自动sql生成插件源码

    4. **查询(Select)**: 可能支持多种查询方式,如根据主键获取单条记录,根据条件获取多条记录等,动态构建WHERE子句。 `builder`目录通常包含了MyBatis中的Builder模式实现,这使得创建复杂对象变得更加简单和...

    Set IDENTITY _INSERTY用法

    接下来尝试直接插入一条记录,其中包含了 `id` 字段的值: ```sql INSERT INTO products (id, product) VALUES (3, 'gardenshovel'); ``` **结果分析:** 如果没有先执行 `SET IDENTITY_INSERT products ON`,那么...

    CI框架AR操作(数组形式)实现插入多条sql数据的方法.doc

    此处,`insert_batch()`方法自动生成的SQL语句能够一次性地将多条记录插入到指定的数据库表中。这不仅提升了数据插入的效率,而且相比单条插入方式,也减少了数据库的访问次数和操作时间。 在CodeIgniter框架中,...

    触发器

    例如,如果我们想要在用户试图插入新记录到`employees`表时检查他们的薪水是否超出预算,我们可以创建一个`BEFORE INSERT`触发器: ```sql CREATE TRIGGER check_salary_before_insert BEFORE INSERT ON employees ...

    自动生成Delphi操作数据库的代码

    在实际应用中,此工具可能还支持生成事务处理代码,确保多条数据库操作的原子性。这包括BEGIN TRANSACTION、COMMIT和ROLLBACK语句,以及错误处理机制,以确保在发生错误时能正确回滚更改。此外,代码生成器可能还会...

    MySQL触发器(教程).md

    触发器`before_order_insert`被设计为在向`orders`表中插入新记录之前执行,它会向`audit_log`表中插入一条记录,指示一条INSERT操作正在对`orders`表进行。 在编写触发器时,为了包含多条语句,需要使用`DELIMITER...

    WP操作创建本地数据库实例

    对于涉及多条记录的操作,可以使用`BeginTransaction`、`Commit`和`Rollback`方法进行事务处理,确保数据的一致性。 10. **性能优化** 为了提高性能,可以考虑使用SQLite的批处理操作,一次性处理多个插入或更新...

    MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解.docx

    - 插入多条记录:`INSERT INTO tablename (column1, column2, ...) VALUES (value1, value2, ...), (value1, value2, ...), ...;` - 省略列名:如果列有默认值或自动增长,可以省略列名。 - 空 VALUES:`INSERT ...

    数据库-MySQL创建表

    其中,`id`列被设置为主键,确保每条记录的唯一性。 接下来,我们创建一个学生-课程系统,包括三个表:`Student`, `Course`, 和 `SC`。 1. **创建`Student`表** ```sql CREATE TABLE Student ( Sno CHAR(9) ...

    sqlserver自动增长字段设置方法.rar

    这个特性使得我们无需手动为每条记录指定唯一的ID,系统会自动生成。 设置自动增长字段的步骤如下: 1. 创建新表: 在创建新表时,可以定义一个字段为自动增长类型。例如,创建一个名为`Employees`的表,包含`...

    MySQL数据库INSERT、UPDATE、DELETE以及REPLACE语句的用法详解.pdf

    - MySQL还允许一次性插入多条记录,通过在VALUES后面列出多个值对,用逗号分隔,例如`INSERT INTO tablename (column1, column2) VALUES (value1, value2), (value3, value4), ...;` - 注意,VALUES后的值数量和...

    sql表记录生成sql语句

    标题提到的"sql表记录生成sql语句"是一个功能,它允许用户从现有数据库表中自动生成一系列`INSERT INTO`语句,以便在其他地方复用这些数据。这个过程可以极大地提高工作效率,避免手动编写大量繁琐的SQL代码。 `...

    mysql的数据库与表的创建.rar

    此外,`PRIMARY KEY`是表的一个特殊约束,它定义了表中唯一标识每条记录的字段。在上面的`employees`表中,`id`被设为主键,确保每行数据的唯一性。 在实际应用中,可能还需要对表进行更多的操作,如插入数据(`...

    保持两表数据一致的触发器事例.pdf

    当一次操作涉及多条记录时,触发器不能依赖于变量来获取`inserted`或`deleted`临时表的字段值。这些临时表在DML操作后自动创建,分别包含了新插入、被更新或被删除的记录。因此,触发器的逻辑应基于这些表而不是...

    MySQL创建和管理数据库(教程).md

    表中的主键字段用于唯一标识表中的每条记录,并且可以设置为自动增长,从而方便记录的添加与管理。在创建表时,用户需要根据实际的数据存储需求来设计表结构。 数据的增删改查是数据库操作中最为常见的功能。在...

Global site tag (gtag.js) - Google Analytics