第十九章-插入数据

19.1数据插入

INSERT是用来插入(或添加)行到数据库表的。插入可 以用几种方式使用:

  • 插入完整的行;
  • 插入行的一部分;
  • 插入多行;
  • 插入某些查询的结果。

19.2插入完整的行

第一种是不指定列

输入

# 简单但不安全,如果原来表列结构调整,会有问题 
insert into customers
    values (null,
    'Pep E. LaPew',
    '100 Main Street',
    'Los Angeles',
    'CA','90046',
    'USA',
    NULL,
    NULL);

语法简单,但是高度依赖于表中列的定义次序(如果不按照次序给出插入的值,则插入失败),所以不安全。

第二种是指定列

INSERT INTO customers(cust_name,
                      cust_contact,
                      cust_email,
                      cust_address,
                      cust_city,
                      cust_state

)VALUES('pEP e.lAPew',
        NULL,
        NULL,
        '100 Main Street',
        'los Angeles',
        'CA'
)

因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各个列出现在实际表中的次序,也就是不依赖于表中列的定义次序。

如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件:

  • 该列定义为允许NULL值(无值或空值)。
  • 在表定义中给出默认值。这表示如果不给出值,将使用默认值。

如果数据检索是最重要的(通常是这样),则你可以通过在INSERT 和 INTO 之间添加关键字 LOW_PRIORITY , 指示MySQL降低INSERT语句的优先级(同样适用于UPDATE和DELETE语句),如下所示:

INSERT LOW——PRIORITY INFO

19.3插入多个行

INSERT INTO customers(
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country
)VALUES(
'Pep E. LaPew',
    '100 Main Street',
    'Los Angeles',
    'CA',
    '90046',
    'USA'
),
(
'M.Martian',
    '42 Galaxy Way',
    'New Your',
    'NY',
    '11213',
    'USA'
);

19.4插入检索出的数据

顾名思义,将一条SELECT语句的结果插入表中。

语法:

INSERT INTO cus tomers(cust_ id,
cust_ contact ,
cust_ email,
cust_ name ,
cust_ address,
cust_ _city ,
cust_ state ,
cust_ _zip ,
cust_ country)
SELECT cust_ id,
cust_ contact,
cust_ emai1,
cust_ _name ,
cust_ address,
cust_ city ,
cust_ state ,
cust_ _zip ,
cust_ country
FROM custnew;

注意:

  1. 执行这个操作的时候,MySQL不关心SELECT返回的列名。它使用的是列的位置,因此SELECT中的第一列(不管其列名)将用来填充表列中指定的第一个列,第二列将用来填充表列中指定的第二个列,如此等等。
  2. INSERT SELECT中SELECT语句可包含WHERE子句以过滤插入的数据。

19.5小结

本章介绍如何将行插入到数据库表。我们学习了使用INSERT的几种 方法,以及为什么要明确使用列名,学习了如何用INSERT SELECT从其他 表中导入行。下一章讲述如何使用UPDATE和DELETE进一步操纵表数据。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值