查看: 49|回复: 0

[数据库编程] SQL学习之CURD操作(INSERT语句)

[复制链接]
  • TA的每日心情
    难过
    2016-4-26 10:45
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2019-7-7 10:26:28 | 显示全部楼层 |阅读模式

    INSERT语句

    INSERT VALUES语句可以将基于指定值的行插入表。

    SQL Server2008增强了VALUES语句的功能,允许在一条语句中指定由逗号隔开的多行记录。例如:

    INSERT INTO T_Order

    VALUES (1,1,'冰箱','2017-01-01'),

    (2,1,'洗衣机','2017-01-01'),

    (3,1,'电视','2017-01-01')

    这个操作是原子操作,这意味这如果有任何一行报错,那么所有行都会插入失败。

    SQL Server2008还增强了VALUES子句的功能,现在可以用它来构建虚拟表(virtual table)。这种功能成为行值构造函数(row value contructor),或表值构造函数(table value contructor)。例如:

    SELECT * FROM

    (VALUES(1,'USA'),(2,'CHI'),(3,'FRA'))

    AS O(ID,COUNTRY)

    它会生成如下表:

    可以使用 INSERT INTO SELECT FROM 高效地将大量行从一个表(例如临时表)传输到按最小方式记录日志的其他表中。按最小方式记录日志可以提高语句的性能,减少在事务期间此操作填充可用事务日志空间的可能性。

    INSERT EXEC语句可以把存储过程或动态SQL批处理返回的结果及插入表中

    SELECT * INTO From 语句的作用是创建一个目标表,并用返回的结果填充它。

    SELECT INTO它可以复制来源的表的基本结构(包括列名,数据结构,是否允许为NULL及IDENTITY属性)和数据。不过它不会复制索引,触发器,约束,如果需要这些东西,你可以手动添加。

    SELECT INTO 的另一个优点是它会按照最小日志记录模式来执行操作,与完整日志模式相比,这种模式执行效率很高。

    BULK INSERT语句用于将文件中的数据导入一个已经存在的表。

    IDENTITY属性,被它标识的数字类型的列,能在插入数据时自动递增。

    如果你想获取这个新生成的标识值(例如:你想获取新增的对象),可以查询@@IDENTITY或者SCOPE_IDENTITY(),推荐使用SCOPE_IDENTITY()因为它会返回当前作用域内会话生成的最后一个标识符,而@@IDENTITY则不会考虑。


    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2019 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表