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

2019-08-14  本文已影响0人  warmsirius

一、数据插入

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且没有默认值的列不给出值,则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;
上一篇 下一篇

猜你喜欢

热点阅读