SQL必知必会(15)——插入数据

1、数据插入

INSERT用来将行插入(或添加)到数据库表。插入有几种方式:

(1)插入完整的行。
(2)插入行的一些部分。
(3)插入某些查询的结果。
注意:
1、使用INSERT语句可能需要客户端/服务端DBMS中的特定安全权限。在你试图使用INSERT前,应该保证自己有足够的安全权限。

2.1、插入完整的行

INSERT INTO customers
VALUES(
'Toy Land'
,'123 Any Street'
,'New York'
,'NY'
,'11111'
,'USA'
,'NULL'
,'NULL'
);

注意:
1、在某些SQL实现中,跟在INSERT之后的INTO关键字是可选的。但是,即使不一定需要,最好还是提供这个关键字,这样需做将保证SQL代码在DBMS之间可移植。
2、上面的SQL语句高度依赖于表中列的定义,还依赖于其容易获得次序的信息。即使可以得到这种次序信息,也不能保证各列在下一次表结构变动后保持完全相同的次序。因此,编写依赖于特定次序的SQL语句是很不安全的,这样迟早会出问题。

INSERT INTO customers
(
cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email
)
VALUES(
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
'NULL',
'NULL',
)
--在插入行时,DBMS将用VALUES列表中的相应值贴入列表中的对应项。VALUES中的第一个值对应第一个指定列名,
第二个值对应于第二个列名,如此等等。

注意:
1、因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。其优点是,即使表的结构改变,这条INSERT语句任然能正确工作

2.2、插入部分行

INSERT INTO customers
(
cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
)
VALUES(
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
)

注意:
省略的列必须满足以下某些条件:
1、该列定义为允许NULL值(无值或空值)。
2、在表定义中给出默认值。这表示如果不给出值,将使用默认值。

2.3、插入检索出的数据

INSERT INTO customers
(
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
)
SELECT 
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country
FROM custnew;

注意:
1、为了简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。但是,不一定要求列名匹配。事实上,DBMS一点也不关心SELECT返回的列名。他使用的列的位置。

2.4、从一个表复制到另一个表

SELECT *
INTO custcopy
FROM customers;
--这条SELECT语句创建一个名为custcopy的新表,并把customers表的整个内容复制到新表中。
因为这里使用的是select *,所以将在custcopy表中创建(并填充)与customers表的每一列相同的列。

注意:

(1)任何SELECT选和子句都可以使用,包括WHERE和GROUP BY 。
(2)可利用联结从多个表插入数据。
(3)不管从多少个表中检索数据,数据都只能插入到一个表中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值