`
stta04
  • 浏览: 113255 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

SQL插入表方法总结

阅读更多

因为公司需要,要把SQL一张表中的全部数据插入到另一张表中,而且两张表的字段还不完全一样。以前没遇到过这样的内容,现在把实现的方法记录下来。
用INSERT命令插入多行数据有两种方法,
INSERT命令用来在表中插入数据,语法如下:
INSERT [INTO] [(column_list)] VALUES (value_list)
Value_list是和在Column_list中列相应的值。这些值可以是常量、TSQL变量或SQL Server内部函数。值的顺序应和column_list中列的顺序相对应。如果没有定义column_list,则值的顺序应和表中列的顺序对应。
INSERT的Values_list也可通过SELECT语句或一个存储过程来提供。语法如下:
INSERT [INTO] [(column_list)]
SELECT FROM


INSERT [INTO] [(column_list)]
EXECUTE
我感觉第一个方法比较简单实用,准备把要插入的表得字段设置多点,这样插入表时没有的字段为空就可以了,也不影响原来的。详细的有关SQL插入的方法介绍如下:
在向表中添加数据时应该注意两点:
第一是用户权限,只有sysadmin角包成员、数据库和数据库对象所有者及其授权用户才有权限向表中添加数据;
第二是数据格式,对于不同的数据类型,插入数据的格式也不一样,应严格遵守它们各自的格式要求。
Transact-SQL语言中用INSERT语句向表或视图中插入新的数据行。INSERT语句的语法格式为:
INSERT [INTO] table_source
{[column_list]
VALUES ({DEFAULT | constant_expression} [,…n])
|DEFAULT VALUES
|select_statement
|execute_statement
}
}
其中,column_list参数为新插入数据行中一列或多列列名列表,它说明INSERT 语句只为指定列插入数据。在给表或视中部分列插入数据时,必须使用列名列表方式指出这部分列名。其余未指定列的列值要根据它们的默认值和空值属性情况而定,它们有以下几种可能取值:
(1)对于timestamp列或具有IDENTITY属性列,它们的列值由SQL Server计算后自动赋值。
(2)如果这些列有默认值或关联有默认数据库对象,插入新列时,它们的值为默认值。
(3)当这些列没有默认值设置时,但它们允许空值时,该列值为空。
(4)当这些列既没有默认值设置,也不允许空值时,SQL Server在执行INSERT 语句时将产生错误,导致插入操作失败。
当未指定column_list 参数时,为各列所提供的数据顺序应严格按照表中各列的定义顺序,而使用column_list参数则可以调整向表中所插入数据的列顺序,只要VALUES子句所提供的数据顺序与column_list参数中指定的列顺序相同即可。
VALUES子句为新插入行中column_list 参数所指定列提供数据,这些数据可以以常量表达式形式提供,或使用DEFAULT关键字说明向列中插入其默认值。
DEFAULT VALUES说明向表中所有列插入其默认值。对于具有INDENTITY 属性或timestamp 数据类型列,系统将自动插入下一个适当值。对于没有设置默认值的列,如果它们允许空值,SQL Server将插入null,否则返回一错误消息。
select_statement是标准的数据库查询语句,它是SQL Server为INSERT语句所提供的又一种数据插入方式。INSERT语句将select_statement子句所返回的结果集合数据插入到指定表中。查询语句结果集合每行中的数据数量、 数据类型和排列顺序也必须与表中所定义列或 column_list 参数中指定列的数量、数据类型和排列顺序完全相同。
SQL Server为INSERT语句提供的第四种数据插入方式是通过执行系统存储过程,其数据来自于过程执行后所产生的结果集合。所执行的过程可以为存储过程、系统存储过程或扩展存储过程,它们既可以为本地存储过程,又可以是远程服务器上的存储过程,只要用户具有它们的执行权限即可。有关存储过程请参阅对应的内容。
table_source说明INSERT语句插入数据时所操作的表或视图,其语法格式可简单书写为:
{table_name [[AS] table_alias]
| view_name [[AS] table_alias]
}
table_name和view_name说明被插入数据的表或视图名称,table_alias参数为表或视图设置别名。
使用别名有两方面原因:
当表或视图名称较长时,使用别名可以简化书写工作;
第二,在自连接或子查询中,使用别名可以区别同一个表或视图。
在向表中插入数据时, 如果所插入的数据与约束或规则的要求冲突, 或是它们的数据类型不兼容时,将导致INSERT 语句执行失败。当使用SELECT或EXECUTE子句向表中一次插入多行数据时,如果其中有任一行数据有误,它将导致整个插入操作失败,使SQL Server停止所有数据行的插入操作。
例一、使用数值列表方式( 假定 usertable 表中只定义了name、age和sex字段,且name、sex均为char类型,age为int类型)。
INSERT usertable
VALUES ('张三','女',18)
例二、使用列名列表方式
INSERT usertable (age,name)
VALUES (18,'张三')
例三、在数值列表中,还可以将变量的值插入到表中。在使用变量为列提供数据时,应保证变量的数据类型与列数据类型相同,或是可以自动将它们转换为相同的数据类型。例如:
DECLARE @name char(16)
SET @name='张三'
INSERT usertable
VALUES (@name,DEFAULT,20)
本例中Asp中是这样的:
dim name
name="张三"
sqlstr="INSERT usertable VALUES ('"&name&"','女',20)"
……
例四、将SELECT子句的所返回的结果集合插入到表中。例如:
INSERT usertable (name,sex,age)
SELECT 's'+name,sex,age
FROM usertable WHERE name like '张%%'

群里发的消息:

错误sql语句:
insert into re(path) values(select tb.lineID from tb)
改正:insert into re(path) (select tb.lineID from tb)
解析:
插入数据,后面跟一个视图,就不需要values,就算插入字段多也不需要.


select case re.flag when '北京' then '无' else '有' end as flag from re

分享到:
评论

相关推荐

    Delphi中sql语句的使用总结

    Delphi中sql语句的使用总结 Delphi中sql语句的使用总结 Delphi中sql语句的使用总结

    sql将查询结果插入表中[总结].pdf

    SQL 将查询结果插入表中总结 在数据库日常维护工作中,我们经常需要把某个查询结果插入到现有的表中。例如需要把两张表进行合并、需要把另外一张表能够符合条件的记录插入到现有的表中、需要把另外一张表中的某些...

    sqlserver表数据生成insertsql脚本(导出成insertsql脚本).pdf

    同时,脚本还将包括INSERT INTO语句,以便将数据插入到目标表中。 INSERT SQL脚本的应用场景 生成INSERT SQL脚本的应用场景非常广泛,例如: * 数据迁移:当我们需要将数据从一个数据库迁移到另一个数据库时,...

    DB2数据库SQL语法(DDL,DML以及插入优化)

    DB2数据库SQL语法(DDL,DML以及插入优化)总结,需要自己下载

    SQLserver学习总结[总结].pdf

    SQL Server 学习总结 SQL Server 是一种关系型数据库管理系统,使用结构化查询语言(SQL)来访问和管理数据。SQL 语言是非过程性语言,功能强大、效率高、简单易学易维护,但也存在一些缺点。为了解决这些问题,...

    数据库实验报告 SQL查询 ,子查询组合

    实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000企业管理器和查询分析器创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束...

    数据库SQL知识点总结、代码及练习题代码

    1.数据库的创建修改批量插入等基本操作及sql文件 2.数据表的约束、查询及sql文件 3.SQL server函数及sql文件 常量变量函数 4.关于cascade使用的sql文件 删除重复行只留一行的sql文件 5.数据表操作的习题课1和2的sql...

    mssql sqlserver 使用sql脚本实现相邻两条数据相减.docx

    以下是创建表和插入数据的 SQL 语句: ```sql create table XXX (sort varchar(30),qty int); go ---- 插入数据 insert into [maomao365](sort, qty) values('A',10),('B',20),('C',30),('D',40),('E',50),('F',60)...

    经典SQL脚本大全

    │ │ 9.1.3 访问外部数据源方法总结.sql │ │ 9.5.1 二进制文件存取示例(T-SQL).sql │ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql ...

    SQL常用基础语句总结.doc

    SQL 基础语句总结 SQL(Structured Query Language,结构化查询语言)是一种标准的数据库语言,用于管理 relation database(关系数据库)。它可以执行各种操作,如创建数据库、创建表、插入数据、查询数据、修改...

    Sqlserver2000经典脚本

    │ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql │ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql...

    SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf

    在 SQL 中,单引号和双引号的问题是一个常见的混淆点,但通过对其基本概念和使用方法的理解,我们可以避免这些问题的出现。在存储过程中编写 SQL 语句时,我们需要正确地使用单引号和双引号,以确保语句的正确执行。

    SQLserver学习总结.pdf

    SQL Server 学习总结 SQL(Structure Query Language)是用于访问关系型数据库的专用语言,也是数据库的核心语言。SQL 的功能强大、效率高、简单易学易维护,但同时也暴露出一些缺点。为了解决这些问题,大多数...

    Access采用sql语句与sql的区别

    下表总结了 Microsoft Access 和 Microsoft SQL Server 的 SQL 语法的重要区别: | SQL 语法元素 | Microsoft Access | Microsoft SQL Server | | --- | --- | --- | | 标识符限制 | 不超过 64 个字符。允许使用...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...

    防sql注入建议.txt

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令...这里总结了几种防sql注入的方法。

    SQL数据库语句总结.pdf

    SQL数据库语句总结 数据库管理系统(DBMS)是现代信息...本文总结了 SQL 数据库语句的基本语法和应用,涵盖了数据库管理、基本表管理、约束管理、视图管理、数据操作、索引管理、视图和表的关系管理等方面的知识点。

    SQL21日自学通

    第21 天常见的SQL 错误及解决方法471 目标471 介绍471 常见的错误471 Table or View Does Not Exist471 Invalid Username or Password 472 FROM Keyword Not Specified473 Group Function Is Not Allowed Here 474 ...

    实验3答案-sql2.sql

    SQL查询二 2 通过本实验使学生掌握多表查询、子查询以及基本数据操作 二、实验内容 使用实验一建立的银行贷款数据库和表,完成以下查询。 1-4是多表查询和子查询,5-11是数据操作 查询经济性质为“国营”的...

    (第一卷)Microsoft.SQL.Server.2008技术内幕:T-SQL语言基础

    主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。  书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...

Global site tag (gtag.js) - Google Analytics