SQL系列:插入数据(insert)

总述:insert 是用来插入行到数据库表的。插入数据库表可以分为几种:

           a. 插入完整的行(数据库表有多少个字段就插入多少字段的值);

            b. 插入行的一部分;

            c. 插入多行;

            d. 插入某些查询的结果。

a. 插入完整的行

     insert into customers value(null, ‘Pep E.’,  '100 main street',  'CA',  '90046',  'USA', null, null)

     如上,如果对应的列没有值就使用null,或者数据库知道怎么处理的(主键自动递增)的列也为 null。上面的语句虽然很简单,但是不安全,这种语句高度依赖于表中列的定义次序,并且还依赖于其次序容易获得的信息。即使获得这种次序信息,也不能保证下一次表结构变动后各个列保持完全相同的次序。因此,使用下面语句会更加安全:

       insert into customers(cust_name,cust_city, cust_state, cust_zip, cost_country, cust_contact, cust_email)

       value('Pep E.', '100 Main stree', 'Los Angeles', 'CA', '90046', 'USA', null, null)

      注意:数据库是经常被多个用户访问的,insert 语句可能耗时(特别是有很多索引需要更新时),可以通过添加关键字减低优先级

        insert  low_priority  into customers(cust_name,cust_city, cust_state, cust_zip, cost_country, cust_contact, cust_email)

       value('Pep E.', '100 Main stree', 'Los Angeles', 'CA', '90046', 'USA', null, null)

b. 插入行的一部分

   在插入时不把所用的列的值都插进入, 如:

      insert into customers(cust_name,cust_city, cust_state, cust_zip)

       value('Pep E.', '100 Main stree', 'Los Angeles', 'CA', '90046')

      这里 cost_country, cust_contact, cust_email 三个字段都没有指明,需要注意的是这些字段的约束(可以为空)。

c. 插入多行

     insert 语句有多组值,每组使用一对圆括号括起来,用逗号分隔, 如下:

       insert into customers(cust_name,cust_city, cust_state, cust_zip, cost_country, cust_contact, cust_email)

       value('Pep E.', '100 Main stree', 'Los Angeles', 'CA', '90046', 'USA', null, null),

        ('John A.', 'hanshan', 'Beijing', 'CA', '80046', 'China', null, null)

d. 插入查询的数据

   insert 一般用来给表插入一个指定列值的行。但是, insert 还存在另外一种形式,可以利用它将一条select 语句结果插入表中。这个就是所谓的 insert select,顾名思义,它是由一条 insert 语句和一条 select 语句组成。

 insert into customers(cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_coutry)

select  cust_id, cust_contact, cust_email, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_coutry

from custnew

    该语句将 custnew 数据导入到 customers。select  中列出每个列对应于 customers 表后所跟的列表中的每个列。这条语句插入多少行依赖于 custnew 表中有多少行。

    注意: customers 列名不一定要跟 custnew 的列名一样。select 中也可以使用 where 来过滤。

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值