程序员的知识教程库

网站首页 > 教程分享 正文

SQL 基础学习插入数据(十三)(sql server 2012 插入数据)

henian88 2024-08-16 17:28:55 教程分享 8 ℃ 0 评论

INSERT是常用的语句,插入的方式有几种

1、插入完成的行

2、插入一行的部分数据

3、插入一些查询结果的数据

这个一般需要权限的,正常开发是都有权限的,生产一般是没有权限直接进行数据库的INSERT操作的。

插入完整行(要求指定表名,插入新行中的值)

INSERT INTO customers 
VALUES(
	1000000007,
	'INSERT_NAME',
	'CUOS Maple Lane',
	'BEIJING',
	'BJ',
	10000,
	'CHN',
	'John Smith',
	'110@QQ.COM'
) 

存储在每一列中的数据在VALUES中给出,如果没有值给出该列的默认字段,空字符串或者NULL,每列的值必须按顺序放在VALUES中,一般我们在业务开发中是不这么写的,因为一旦在其它地方对当前表添加了新的列,如果你记得你会回来调整费事,如果你不记得了/或者离职换工作了,就是一个巨坑了。简单不推荐的写法。

INSERT INTO customers(
 cust_id,
 cust_name ,
 cust_address,
 cust_city,
 cust_state ,
 cust_zip,
 cust_country,
 cust_contact ,
 cust_email
)
VALUES(
	1000000008,
	'INSERT_NAME',
	'CUOS Maple Lane',
	'BEIJING',
	'BJ',
	10000,
	'CHN',
	'John Smith',
	'110@QQ.COM'
)  

在表customers指定字段可以解决表结构发生变化时照成的问题,同时只需要表后的字段和VALUES后的字段对应就可以了。同时一旦表后给出列明,VALUES后就必须给出相应的值如果没有也需要给出默认的空值BULL或者空字符串,不然这条数据是插入不成功的。

错误(少了最后的cust_email值)

INSERT INTO customers(
 cust_id,
 cust_name ,
 cust_address,
 cust_city,
 cust_state ,
 cust_zip,
 cust_country,
 cust_contact ,
 cust_email
)
VALUES(
	1000000008,
	'INSERT_NAME',
	'CUOS Maple Lane',
	'BEIJING',
	'BJ',
	10000,
	'CHN',
	'John Smith',

) 

插入部分列

INSERT INTO customers(
 cust_id,
 cust_name ,
 cust_address, 
 cust_email
)
VALUES(
	1000000009,
	'INSERT_NAME',
	'CUOS Maple Lane', 
	'110@QQ.COM'
)

查询


使用指定列的方式,完成部分列的数据插入

注意项:

1、当前忽略的列,必须允许为NULL(无值)

2、在表定义该列的时候给出默认值

插入检索出的数据

它是由INSERT语句和SELECT语句组成,也是我们常说的INSERT SELECT。

INSERT INTO customers(
 cust_id,
 cust_name ,
 cust_address,
 cust_city,
 cust_state ,
 cust_zip,
 cust_country,
 cust_contact ,
 cust_email
)
SELECT
 cust_id,
 cust_name ,
 cust_address,
 cust_city,
 cust_state ,
 cust_zip,
 cust_country,
 cust_contact ,
 cust_email
FROM custnew

这里插入的时候CustNew检索出的数据中的唯一键值不应该和customers中的唯一键值相同

SELECT语句从custnew中检错出要插入的值,而不是列出它们,SELECT后的每一列对应INSERT INTO customers后的每一列。这里SELECT的列名是为了保持和customers一致取的它们不是必须。

其中INSER 是插入单行数据的,多条数据是我们必须执行多次INSERT,但是INSERT SELECT语句我们是可以批量插入的,我们SELECT语句检索出多少条就会被INSERT插入多少条,当前键值唯一的并且重复的会报错的

SELECT后可以跟随WHERE语句过滤数据,检索出我们需要的数据

INSERT INTO customers(
 cust_id,
 cust_name ,
 cust_address,
 cust_city,
 cust_state ,
 cust_zip,
 cust_country,
 cust_contact ,
 cust_email
)
SELECT
 cust_id,
 cust_name ,
 cust_address,
 cust_city,
 cust_state ,
 cust_zip,
 cust_country,
 cust_contact ,
 cust_email
FROM custnew
WHERE cust_id NOT IN(SELECT cust_id FROM customers)

将一个表单数据复制到另一张表中

CREATE SELECT语句

CREATE TABLE CopyCust AS SELECT * FROM custnew;

SQL server 写法

SELECT * INTO CopyCust FROM custnew

这里创建了一张新表CopyCust 将custnew表中的数据复制到了新表中

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表