SQL 必知必会 Chapter 15 —— 插入数据


typora-copy-images-to: SQL 必知必会

SQL 必知必会 Chapter 15 插入数据

15.1 数据插入

  • INSERT 用来将行插入数据表库

  • 插入的方式

    • 插入完整的行
    • 插入行的一部分
    • 插入某些查询的结果
  • 插入INSERt 可能需要DBMS特定的安全权限

Insert into Customers
VALUES('1000000006',
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);

# 加入没有值,则应该使用NULL值,各列必须以它们在表定义中出现的次序填充
# INTO 为了保证可移植性,应予以保留
# 这种方法高度依赖于表中列的定义次序
# 更安全的方法如下:
INSERT INTO Customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES('1000000006',
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
# 好处是,如果表结构变化,insert语句依然能够正常工作
  • 不要使用没有明确给出列的INSERT 语句。给出列能使SQL 代码继续
    发挥作用,即使表结构发生了变化

  • 插入部分行

INSERT INTO Customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES('1000000006',
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA');
# 插入时可以省略列,表明省略了两个列及其对应的值

# 插入省略列的条件
# 该列定义允许为NULL值
# 在表定义中给出默认值,如果不给出值,将使用默认值
  • 插入检索出的数据
  • 使用一条INSERT 语句加上一条SELECT 语句
# 加入想把另一表中的顾客列合并到Customers表中
INSERT INTO Customers(cust_id,
				cust_contact,
				cust_email,
				cust_name,
				cust_address,
				cust_city,
				cust_state,
				cust_zip,
				cust_country)
SELECT cust_id,
	cust_contact,
	cust_email,
	cust_name,
	cust_address,
	cust_city,
	cust_state,
	cust_zip,
	cust_country
FROM CustNew;
# 切记,不一定要求列名匹配,其实质是使用列的位置
# 可以使用以上命令插入多行,不管select 语句返回多少行,都将插入

15.2 从一个表复制到另一个表

  • 要将一个表的内容复制到一个全新的表,使用SELECT INTO

  • INSERT SELECT 与SELECT INTO,它们之间的一个重要差别是前者导出数据,而后者导入数据

CREATE TABLE CustCopy AS
SELECT * FROM Customers;

# 任何SELECT 选项和子句都可以使用,包括WHERE 和GROUP BY
# 可利用联结从多个表插入数据
# 不管从多少个表中检索数据,数据都只能插入到一个表中
  • 进行表的复制,SELECT INTO 是试验新SQL 语句前进行表复制的很好工具。先进行复制,可在复制的数据上测试SQL 代码,而不会影响实际的数据

15.3 小结

  • 介绍如何将行插入到数据库表中。我们学习了使用INSERT 的几
    种方法,为什么要明确使用列名,如何用INSERT SELECT 从其他表中导
    入行,如何用SELECT INTO 将行导出到一个新表。下一课将讲述如何使
    用UPDATE 和DELETE 进一步操作表数据
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值