sql insert select语句的使用方法

sql insert select语句的使用方法

INSERT 语句中的 SELECT 子查询可用于将一个或多个其它的表或视图的值添加到表中。使用 SELECT 子查询可同时插入多行。

下面的 INSERT 语句将 titles 中数据的 type 是 modern cooking 的所有行的数据插入到一个单独的表中:

USE pubsINSERT INTO MyBooks   SELECT title_id, title, type   FROM titles   WHERE type = 'mod_cook'子查询的选择列表必须与 INSERT 语句列的列表匹配。如果没有指定列的列表,选择列表必须与正向其插入的表或视图的列匹配。

INSERT...SELECT 语句的另一个作用是从 Microsoft SQL Server 的外部数据源插入数据。INSERT 语句中的 SELECT 可以:

使用由四部分组成的名称引用链接服务器上的远程表。有关更多信息,请参见使用链接服务器名标识数据源。

使用 OPENROWSET 引用远程表。有关更多信息,请参见使用特殊名称标识数据源。

7> CREATE TABLE Customers (
8>      CustomerID nchar (5) NOT NULL ,
9>      CompanyName nvarchar (40) NOT NULL ,
10>     ContactName nvarchar (30) NULL ,
11>     ContactTitle nvarchar (30) NULL ,
12>     Address nvarchar (60) NULL ,
13>     City nvarchar (15) NULL ,
14>     Region nvarchar (15) NULL ,
15>     PostalCode nvarchar (10) NULL ,
16>     Country nvarchar (15) NULL ,
17>     Phone nvarchar (24) NULL ,
18>     Fax nvarchar (24) NULL
19> )
20> GO
1>
2>
3> INSERT INTO Customers (CustomerID, CompanyName) SELECT '1', 'Bam Bam'
4> GO

(1 rows affected)
1>
2> select * from Customers;
3> GO
CustomerID CompanyName                              ContactName                    ContactTitle                   Address                                                      City            Region
       PostalCode Country         Phone                    Fax
---------- ---------------------------------------- ------------------------------ ------------------------------ ------------------------------------------------------------ --------------- ---------
------ ---------- --------------- ------------------------ ------------------------
1          Bam Bam                                  NULL                           NULL                           NULL                                                         NULL            NULL
       NULL       NULL            NULL                     NULL

(1 rows affected)
1>
2> drop table Customers;
3> GO

实例

3> INSERT INTO BillingArchive
4>     (BankerID, BillingNumber, BillingTotal, CreditTotal,
5>     PaymentTotal, TermsID, BillingDate, BillingDueDate)
6> SELECT
7>     BankerID, BillingNumber, BillingTotal, CreditTotal,
8>     PaymentTotal, TermsID, BillingDate, BillingDueDate
9> FROM Billings
10> WHERE BillingTotal - PaymentTotal - CreditTotal = 0
11> GO

也可以利用存储过程处理

3> CREATE PROCEDURE spIns_Employee
4> @FirstName    nVarChar(50),
5> @LastName  nVarChar(25),
6> @Salary   Money
7> AS
8> INSERT INTO Employee (ID, First_name, last_Name, Salary)
9> SELECT 10, @FirstName, @LastName, @Salary
10> GO
1> spIns_Employee 'Gadget', 'Bond', 49.95
2> GO

时间: 2024-09-13 09:23:45

sql insert select语句的使用方法的相关文章

sql 中select语句问题

问题描述 sql 中select语句问题 求问:在做C#程序中,我sql查询语句: select InvtID,Descr ,User2, User2 from (SELECT Inventory.InvtID, Inventory.Descr, Inventory.User2,IA.User2 FROM Inventory LEFT OUTER JOIN InventoryAdg IA ON Inventory.InvtID=IA.InvtID )v 问题是我需要查询两张表的User2字段,可

oracle sql select语句的使用方法

  select格式: SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,-] FROM <表名1>,<表名2>[,-] [WHERE <筛选择条件表达式>] [GROUP BY <分组表达式> [HAVING<分组条件表达式>]] [ORDER BY <字段>[ASC | DESC]] 语句说明: []方括号为可选项 [GROUP BY <分组表达式> [HAVING&l

sql union 查询语句的使用方法

UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示,即执行联合查询.UNION的语法格式为 SELECT <fields>  FROM <table>  WHERE <condition> UNION SELECT <fields>  FROM <table>  WHERE <condition> 联合查询时,查询结果的列标题为第一个查询语句的列标题.因此,要定义列标题必须在第一个查询语句中定义

SQL INSERT INTO 语句用法

INSERT INTO 语句用于向表格中插入新的行. INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) LastName FirstName Address City Carter Thomas Changan Street Beijing INSERT INTO Persons VALUES ('Gates', 'Bill'

sql insert into语句优化方法

 代码如下 复制代码 insert into table value('a','b'); ... insert into table value('m','n');    但是由于每进行一次insert into 都会对数据库进行一次I/O操作,所以导致这样的循环插入方式变的非常慢 所以,可以使用一条insert into进行批量插入  代码如下 复制代码 insert into table values('a','b'),('c','d'),('e','f')...('m','n');  上面

sql order by 语句的使用方法

ORDER BY 语句用于根据指定的列对结果集进行排序. ORDER BY 语句默认按照升序对记录进行排序. 如果您希望按照降序对记录进行排序,可以使用 DESC 关键字. 实例 SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber 注意:在以上的结果中有两个相等的公司名称 (www.111cn.net).只有这一次,在第一列中有相同的值时,第二列是以升序排列的.如果第一列中有些值为 nulls 时,情况也是这

sql中的select语句执行属性问题

问题描述 sql中的select语句执行属性问题 SELECT orders.*, (SELECT username FROM USER WHERE orders.user_id = user.id)username, (SELECT sex FROM USER WHERE orders.user_id = user.id)sex FROM orders 下面这个语句 的执行顺序是啥 这个语句这样写感觉好奇怪 有没有对sql比较懂得大神 解决方案 先执行子查询,然后结果保留,然后执行外部查询进行

如何阻止SELECT * 语句

原文:如何阻止SELECT * 语句 我们每个人都知道是个不好的做法,但有时我们还是要这样做:我们执行SELECT * 语句.这个方法有很多弊端: 你从你的表里返回每个列,甚至后期加的列.想下如果你的查询里将来加上了VARCHAR(MAX)会发生什么-- 对于指定的查询,你不能定义覆盖非聚集索引来克服执行计划里的查找(lookup)运算符,因为你会在额外的索引里重复你的数据-- 现在的问题是你如何阻止SELECT *语句?当然你可以进行代码审核,你可以提供最佳模式指导,但谁最终会留意这些?基本上

MySQL使用INSERT SELECT 批量插入数据

使用Insert Select语句插入记录时,必须遵循以下原则. 用Select语句选择数据时,不能从被插入数据的表中选择行. 指定插入的表后所包含的字段数目必须与Select语句中返回的字段数目相同. 指定插入的表后所包含的字段数据类型必须与Select语句中返回的字段数据类型相同或系统可以自动转换.    代码如下 复制代码 INSERT INTO ler_items( classid, title, address, zipcode ) SELECT classid, title, add