【MySQL必知必会】第19章:数据插入

INSERT时用来插入(或添加)行到表的,插入的方式有一下几种:

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

19.1 插入完整的行

一般而言INSERT语句需要搭配INTO和VALUES关键字来使用:

INSERT INTO customers
VALUES(NULL,
    'Pep E. LaPew',
    '100 Main Street',
    'Los Angeles',
    'CA',
    '90046',
    'USA',
    NULL,
    NULL);
  • INTO用于指定表名
  • VALUES用于插入新值,但是需要注意的是,新值的顺序与每个字段的顺序一一对应;因此这种方式并不安全,应尽量避免使用,因为会不能确保插入字段顺序而产生错误

在INTO后面指定列名可以避免出错:

INSERT INTO customers(cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country,
    cust_contact,
    cust_email)
VALUES(NULL,
    'Pep E. LaPew',
    '100 Main Street',
    'Los Angeles',
    'CA',
    '90046',
    'USA',
    NULL,
    NULL);

如果想省略列,而需要满足以下条件:

  • 表定义允许
  • 该列的定义允许为NULL值
  • 定义列有给出默认值

19.2 插入多个行

类似于UNION联合查询语句一样,可以分别使用单个INSERT语句,并用逗号隔开;当然也可以省略掉重复指定列这一步,直接通过逗号来分隔插入的新值即可:

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 York',
    'NY',
    '11213',
    'USA');

19.3 插入检索出的数据

除了直接INSERT来插入键入的值外,还可以使用SELECT检索结果后插入表中:

INSERT INTO table1(col1,
    col2,
    col3,
    col4,
    ....
)

SELECT co1,
    col2,
    col3,
    col4,
    ...
FROM table2;

你可能感兴趣的:(【MySQL必知必会】第19章:数据插入)