美文网首页
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