(八大方法、逐层深入,有你一定没见过的)使用INSERT语句向表中插入数据
(八大方法、逐层深入,有你一定没见过的)
使用INSERT语句向表中插入数据(MSSQLSERVER版)
做开发的同仁对于向数据库中插入数据可谓是太普通不过了,也没什么说的,一般都是采用常用的INSERT INTO [(字段列表)] VALUES(字段值列表),这样的方式进行操作。今天,我要给大家介绍的是其他一些非常规的方式,一定会让你耳目一新,眼前一亮。
进入今天的主题,以了便于操作,我们首先建立一个实例数据表:
USE tempdb ;
GO
CREATE TABLE Fruit
(
Id INT NOT NULL ,
Name VARCHAR(100) NOT NULL ,
Color VARCHAR(100) NULL ,
Quantity INT DEFAULT 1
) ;
方式一:传统方式
语法:INSERT (column_list) VALUES (value_list);
我们插入一条数据到数据表中。
INSERT INTO Fruit
( Id, Name, Color, Quantity )
VALUES ( 1, 'Banana', 'Yellow', 1 ) ;
这种方式是我们常用的一种插入数据的方式,给出所有的列名集合与值集合。
方式二:省略列集合
INSERT INTO Fruit
VALUES ( 2, 'Grapes', 'Red', 15 ) ;
这种方式我们省略了列名集合,这种方式值集合必须与数据表定义时列的顺序相一至,必须赋的值不能省略。
方式三:插入部分字段
INSERT INTO Fruit
( Id, Name )
VALUES ( 3, 'Apples') ;
这种方式,我们不必给出所有字段列表,只插入我们需要的字段即可。
以上三种方式是我们在实际使用中最为常见的插入数据的方式,下面给出的也许会让你眼前一亮。
方式四:一条插入语句插入多条数据
INSERT INTO Fruit
( Id, Name, Color, Quantity )
VALUES ( 4, 'Apples', 'Red', 10 ),
( 5, 'Peaches', 'Green', 7 ),
( 6, 'Pineapples', 'Yellow', 5 ) ;
在这儿,我用一条插入语句同时插入了三条不同的数据到Fruit数据表中。
方式五:使用SELECT语句同时插入多条数据。
INSERT INTO Fruit
( Id ,
Name ,
Color,
Quantity
)
SELECT 7 +( 6 - Id ) ,
Name,
'White',
Quantity
FROM Fruit
WHERE Id > 3
ORDER BY Id DESC ;
在方式五中,我通过选择Fruit表中 Id 大于 3 记录插入到Fruit表中。这是从水果表中现有的值派生出来的。
方式六:使用存储过程插入数据。
首先、我们建立一个存储过程如下:
CREATE PROC HybridFruit
AS
SELECT b.Id + 9 ,
a.Name + b.name
FROM Fruit a
INNERJOIN Fruit b ON a.Id = 9 - b.Id ;
GO
现在我们使用上面建立的存储过程进行数据的插入,方法如下:
INSERT INTO Fruit
( Id, Name )
EXECUTE HybridFruit;
方式七:使用OUTPUT子句输出插入的数据以供外部使用。
INSERT INTO Fruit
( Id, Name )
OUTPUT INSERTED.*
VALUES ( 18, 'PieCherries' ) ;
在这儿,我们通过使用OUTPU子句输出了同步插入的数据。
方式八:通过OUTPUT子句把结果返回给客户端。
为了方便演示,我先把Fruit表的Id列设为自动增长列。
ALTER TABLE Fruit
DROP COLUMN Id ;
ALTER TABLE Fruit
ADD Id INTIDENTITY ;
现在我们来通过OUTPUT子句插入值并把结果返回给客户端。
DECLARE @INSERTED AS TABLE ( Id INT, Name VARCHAR(100) ) ;
--使用OUTPUT插入
INSERT INTO Fruit
( Name,Color )
OUTPUT INSERTED.Id, INSERTED.Name
INTO @INSERTED
VALUES ( 'Bing Cherries', 'Purple' ),
( 'Oranges', 'Orange' ) ;
-- 显示插入的值
SELECT *
FROM @INSERTED ;
以上就是八种方式,也许对你有用,仅作参考使用,谢谢~!
转载于:https://www.cnblogs.com/huyong/archive/2012/09/05/2685722.html
(八大方法、逐层深入,有你一定没见过的)使用INSERT语句向表中插入数据相关推荐
- c# 向mysql插入数据_C#连接mysql数据库 及向表中插入数据的方法
mysql 语句操作: 创建数据库:create database hotelATMDb; use hotelATMDb; C#连接mysql 1.引用 dll MySql.Data.dll 下载地址 ...
- 向MySQL数据库中插入数据,sql语句没问题,但插入失败也不报错?
这几天在做一个Javaweb的图书商城项目,在操作数据库的过程中,遇到一个问题? 向数据库中的order数据表中插入数据时,一直插入数据失败.没有报SQL语句语法错误,Eclipse ...
- SQL Server数据库表的基本操作(批量插入、删除、查询数据,删除表中重复数据方法)
实验名称:数据库表的基本操作与表内数据操作 实验目的: 掌握数据库表创建方法(交互式.T-SQL法) 掌握修改数据库表结构的方法 掌握删除数据库表的方法 掌握交互式EXCEL文件录入数据至数据库表的方 ...
- python亿级mysql数据库导出_Python实现将MySQL数据库表中的数据导出生成csv格式文件的方法...
本文实例讲述了python实现将MySQL数据库表中的数据导出生成csv格式文件的方法.分享给大家供大家参考,具体如下: #!/usr/bin/env python # -*- coding:utf- ...
- MYSQL修改编码为utf8无效往表中插入汉字还是失败的解决方法
调了很久才发现核心错误所在,很坑!! 1.错误现象 Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F-' for column 'course' at ...
- mysql删除表中所有数据_MySQL删除或清空表中数据的方法
原标题:MySQL删除或清空表中数据的方法 要想把MySQL中的数据删除或清空,可以通过两种方法来实现:DELETE语句和TRUNCATE TABLE语句. DELETE语句可以将表中所有记录都删除, ...
- oracle 两表去除重复的数据,Oracle数据库删除两表中相同数据的方法
在Oracle数据库中删除两表中相同数据的方法是用到in语句,本文通过实例来讲解删除两表中相同数据的方法. 软件环境: 1.Windows NT4.0+ORACLE 8.0.4. 2.Oracle安装 ...
- mysql 复制表中的数据_MySQL中快速复制数据表方法汇总
本文将着重介绍两个MySQL命令的组合,它将以原有数据表为基础,创建相同结构和数据的新数据表. 这可以帮助你在开发过程中快速的复制表格作为测试数据,而不必冒险直接操作正在运行 的数据表. 示例如下: ...
- oracle怎么把数据跑进视图里,在Oracle中向视图中插入数据的方法
在Oracle中向视图中插入数据的方法 插入视图的条件: 1.如果视图是基于一个基础表产生的,那么这就称为非连接视图,所有的非连接视图都是可以更新的,也就是说可以在该视图上进行,INSERT,UPDA ...
最新文章
- Flask-RESTful的简单使用
- bzoj-1026 windy数
- LeetCode 206. 反转链表(Reverse Linked List) 16
- 谈谈varnish、squid、apache、nginx缓存的对比
- squid 的配置详解 (转)--SeriesI 收藏
- Spring Boot(十二)单元测试JUnit
- 使用springboot集成jseesite
- maven jar包冲突
- 【Acm】算法之美—Fire Net
- Ubuntu14.04下配置固定IP
- 关于在mysql和oracle中编码对varchar等类型的影响
- Quick Batch File Compiler(BAT转EXE工具)bat文件转换成exe文件(启动jar包和自动打开浏览器)
- Android ListView notifyDataSetChanged()不刷新数据
- 店铺淘口令怎么生成, 怎么生成店铺淘口令
- Manjaro找不到默认键盘布局
- scipy.ndimage.measurements label理解
- Vue3 - Suspense 组件介绍及使用方法
- 超详细注释NLP Question answering竞赛(印度语和泰米尔语)
- 关于移位密码的破解问题
- Elasticsearch 8.X 集群无响应,怎么办?
热门文章
- 网站部署后Parser Error Message: Could not load type 的解决方案
- android中影藏状态栏和标题栏的几种方法
- 将桌面文件动态保存到D盘
- iOS学习之NSBundle介绍和使用
- Linux多任务编程(三)---exec函数族及其基础实验
- Arcpy报错及解决——持续补充中
- unix和linux命令_Linux vs. Unix,在命令行中清理数据,为儿童准备的15本书,以及更多必读内容
- 电气通用规范_与通用电气的对话使我了解到有关开放式组织的知识
- TypeScript 之泛型
- Bootstrap 两端对齐的导航