美文网首页
mysql必知必会(19):插入数据

mysql必知必会(19):插入数据

作者: warmsirius | 来源:发表于2019-08-14 22:08 被阅读0次

一、数据插入

select是最常用的sql语句

但是还有3个经常使用的SQL语句需要学习。

下面学习insert

1. 插入的方式

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

二、插入完整的行

insert into 表名
values(列值1, 列值2, ...)
  • 例如
insert into customers
values(NULL,
    'Pep E. Lapew',
    '100 Main Street',
    'Los Angles',
    'CA',
    '90046',
    'USA',
    NULL,
    NULL
);

第一列cust_id为NULL,这是因为每次插入一个新行时,该列由MySQL自动增量。你不想给出一个值(这是MySQL的工作),又不能省略此列(如前所述,必须给出每个列),所以指定一个NULL值。

insert语句一般不会产生输出

编写insert语句的更安全的方法: 将列名标出来

insert into customers(cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country,
    cust_contact,'
    cust_email)
values(
    'Pep E. Lapew',
    '100 Main Street',
    'Los Angles',
    'CA',
    '90046',
    'USA',
    NULL,
    NULL
);

注意1. 总是使用列的列表

一般不要使用没有明确给出列的列表的insert语句。

注意2. 仔细地给出值

不管使用哪种insert语句,都必须给出values的正确数目。

  • 如果不提供列名,则必须给每个表列提供一个值。
  • 如果提供列名,则必须对每个列给出一个值。

注意3. 省略列

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

  • 该列定义为允许NULL值
  • 在表定义中给出默认值。

如果对表中不允许null且没有默认值的列不给出值,则mysql将报错。

注意4. 提高整体性能

数据库经常被多个客户访问,insert会很耗时,而且可能降低等待处理的select语句的性能。

如果数据检索是重要的,可以通过在insert和into之间添加关键字LOW_PRIORITY,指示mysql降低insert语句的优先级。

INSERT LOW_PRIORITY INTO ...

另外,LOW_PRORITY也适用于UPDATE和DELETE语句

三、插入多个行

方式1. 多个insert语句一次提交

insert into customers(cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country)
values(
    'Pep E. Lapew',
    '100 Main Street',
    'Los Angles',
    'CA',
    '90046',
    'USA'
);
insert into customers(cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country)
values(
    'M. Martin',
    '142 Galaxy Way',
    'New York',
    'NY',
    '90046',
    'USA'
);

方式2. values后面直接跟多组数据,数据间用逗号隔开

insert into customers(cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country)
values(
    'Pep E. Lapew',
    '100 Main Street',
    'Los Angles',
    'CA',
    '90046',
    'USA'
),(
    'M. Martin',
    '142 Galaxy Way',
    'New York',
    'NY',
    '90046',
    'USA'
);

单条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_country)
SELECT cust_id,
    cust_contact,
    cust_email,
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country
FROM custnew;

相关文章

网友评论

      本文标题:mysql必知必会(19):插入数据

      本文链接:https://www.haomeiwen.com/subject/smjijctx.html