SQL之数据插入
文章目录数据插入一、插入完整的行二、插入部分行三、插入检索出的数据四、从一个表复制到另一个表总结数据插入1、插入完整的行2、插入部分行3、插入某些查询的结果一、插入完整的行关键字:INSERT INTO xxxx VALUES()表名:customers代码如下:方法1(这种方法不安全,因为要记住表中的列的次序)INSERT INTO customersVALUES('10001','TOY LA
·
数据插入
1、插入完整的行
2、插入部分行
3、插入某些查询的结果
一、插入完整的行
关键字:INSERT INTO xxxx VALUES()
表名:customers
代码如下:
方法1(这种方法不安全,因为要记住表中的列的次序)
INSERT INTO customers
VALUES('10001',
'TOY LAND',
'NEW YORK',
'USA')
方法2(繁琐但安全且在表的列次序变化的情况下也适用)
INSERT INTO customers(cust_id,
cust_name,
cust_city,
cust_country)
VALUES('10001',
'TOY LAND',
'NEW YORK',
'USA')
注意:不管使用哪种INSERT语法,VALUES的数目都必须正确。如果不提供列名,则必须给每个表列提供一个值;如果提供列名,则必须给列出的每个列一个值。否则,就会产生一条错误消息,相应的行不能成功插入。
二、插入部分行
在上述推荐插入行的方法中,建议明确给出列名,使用这种语法,还可以省略列,但是要符合一些前提条件:
- 该列定义为允许NULL值(无值或空值)。
- 在表定义中给出默认值。这表示如果不给出值,将使用默认值。
- 如果表中不允许有NULL值或者默认值,这时却省略了表中的值,DBMS就会产生错误消息,相应的行不能成功插入。
例如要给customers表中的插入一行只有的id和名字的行,如下:
INSERT INTO customers(cust_id,cust_name)
VALUES('1002',
'Talor Band')
三、插入检索出的数据
INSERT 可用来插入一行语句,如果想从其他表中将多行数据插入,可结合SELECT 语句,如下:
INSERT INTO customers(cust_id,
cust_name,
cust_city,
cust_country)
SELECT cust_id,
cust_name,
cust_city,
cust_country
FROM custnew;
注意:
- 插入的新的行的主键不能与表中的主键相同;
- select 中的列名不一定一定要与原表的相同;
- INSERT SELECT中SELECT语句可以包含WHERE子句,以过滤插入的数据;
- INSERT通常只插入一行。要插入多行,必须执行多个INSERT语句。INSERT SELECT是个例外,它可以用一条INSERT插入多行,不管SELECT语句返回多少行,都将被INSERT插入。
四、从一个表复制到另一个表
关键字:select into
- 与INSERT SELECT将数据添加到一个已经存在的表不同,SELECT INTO将数据复制到一个新表(有的DBMS可以覆盖已经存在的表,这依赖于所使用的具体DBMS)。
- insert select 与 select into 的重要区别还在于前者是插入数据,后者是导出数据。
SELECT *
INTO custcopy
FROM customers;
这条语句创建了新的表,并把customers中的数据全部复制到custcopy中去。但是MySQL的语法稍微不同,如下:
CREATE TABLE custcopy AS
SELECT * FROM customers;
- 任何SELECT选项和子句都可以使用,包括WHERE和GROUPBY;
- 可利用联结从多个表插入数据;
- 不管从多少个表中检索数据,数据都只能插入到一个表中。
总结
本文主要是SQL必知必会的知识点,学习过程中所作的笔记;
更多推荐
所有评论(0)