因为公司需要,要把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语句的使用总结
SQL 将查询结果插入表中总结 在数据库日常维护工作中,我们经常需要把某个查询结果插入到现有的表中。例如需要把两张表进行合并、需要把另外一张表能够符合条件的记录插入到现有的表中、需要把另外一张表中的某些...
同时,脚本还将包括INSERT INTO语句,以便将数据插入到目标表中。 INSERT SQL脚本的应用场景 生成INSERT SQL脚本的应用场景非常广泛,例如: * 数据迁移:当我们需要将数据从一个数据库迁移到另一个数据库时,...
DB2数据库SQL语法(DDL,DML以及插入优化)总结,需要自己下载
SQL Server 学习总结 SQL Server 是一种关系型数据库管理系统,使用结构化查询语言(SQL)来访问和管理数据。SQL 语言是非过程性语言,功能强大、效率高、简单易学易维护,但也存在一些缺点。为了解决这些问题,...
实验目的和要求:了解SQL SEVER 2000的功能及组成,熟练掌握利用SQL SEVER 2000企业管理器和查询分析器创建数据库、表、索引和修改表结构及向数据库输入数据、修改数据和删除数据的操作方法和步骤,掌握定义数据约束...
1.数据库的创建修改批量插入等基本操作及sql文件 2.数据表的约束、查询及sql文件 3.SQL server函数及sql文件 常量变量函数 4.关于cascade使用的sql文件 删除重复行只留一行的sql文件 5.数据表操作的习题课1和2的sql...
以下是创建表和插入数据的 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)...
│ │ 9.1.3 访问外部数据源方法总结.sql │ │ 9.5.1 二进制文件存取示例(T-SQL).sql │ │ 9.5.1 二进制文件存取示例(VB&VBA).vbs │ │ a.txt │ │ Schema.ini │ │ │ └─其他 │ bcp-数据导入导出(全).sql ...
SQL 基础语句总结 SQL(Structured Query Language,结构化查询语言)是一种标准的数据库语言,用于管理 relation database(关系数据库)。它可以执行各种操作,如创建数据库、创建表、插入数据、查询数据、修改...
│ 8.2.5 校验插入指定结点是否导致编码循环的示例函数.sql │ │ 8.2.5 校验表中数据是否有循环编码的通用存储过程.sql │ │ 8.2.6 复制指定节点及其所有子节点到指定结点的处理示例(借鉴方式排序法).sql...
在 SQL 中,单引号和双引号的问题是一个常见的混淆点,但通过对其基本概念和使用方法的理解,我们可以避免这些问题的出现。在存储过程中编写 SQL 语句时,我们需要正确地使用单引号和双引号,以确保语句的正确执行。
SQL Server 学习总结 SQL(Structure Query Language)是用于访问关系型数据库的专用语言,也是数据库的核心语言。SQL 的功能强大、效率高、简单易学易维护,但同时也暴露出一些缺点。为了解决这些问题,大多数...
下表总结了 Microsoft Access 和 Microsoft SQL Server 的 SQL 语法的重要区别: | SQL 语法元素 | Microsoft Access | Microsoft SQL Server | | --- | --- | --- | | 标识符限制 | 不超过 64 个字符。允许使用...
主要内容包括SQL的基础理论、查询优化、查询算法及复杂度,以及在使用子查询、表表达式、排名函数、数据聚合和透视转换、TOP和APPLY、数据修改、分区表、特殊数据结构等实际应用时会遇到的各种高级查询问题和解决...
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令...这里总结了几种防sql注入的方法。
SQL数据库语句总结 数据库管理系统(DBMS)是现代信息...本文总结了 SQL 数据库语句的基本语法和应用,涵盖了数据库管理、基本表管理、约束管理、视图管理、数据操作、索引管理、视图和表的关系管理等方面的知识点。
第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 ...
SQL查询二 2 通过本实验使学生掌握多表查询、子查询以及基本数据操作 二、实验内容 使用实验一建立的银行贷款数据库和表,完成以下查询。 1-4是多表查询和子查询,5-11是数据操作 查询经济性质为“国营”的...
主要包括SQL的基础理论、逻辑查询处理、SELECT查询、连接和子查询、表表达式、过滤和分组、透视转换、修改数据、事务和一致性的处理、可编程对象等内容。 书中并非系统地罗列T-SQL的各种语法元素,而是结合实践中...