用来插入(添加)行到数据库。

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

      插入完整的行

    指定表名和被插入到新行中的值

    编写依赖与特定列次序的SQL语句,这样做有时会出错,但编写方便。

    解释: 插入一个新客户到Customers表,存储到每个表列的数据VALUES子句中给出,对每个表必须提供一个值,如果某列没值,就应该使用NULL值。

    养成指定顺序插入数据,虽然写起来繁琐,但不容易发生错误。注意每个列,都必须提供一个值。

    1. -> cust_contact,
    2. -> cust_email,
    3. -> cust_name,
    4. -> cust_address,
    5. -> cust_city,
    6. -> cust_state,
    7. -> cust_zip)
    8. -> VALUES('1000000009',
    9. -> NULL,
    10. -> NULL,
    11. -> 'Toy Land',
    12. -> '123 Any Street',
    13. -> 'NY',
    14. -> '11111');

    插入部分行

    1. mysql> INSERT INTO Customers(cust_id,
    2. -> cust_name,
    3. -> cust_city,
    4. -> cust_state,
    5. -> cust_zip,
    6. -> cust_country)
    7. -> VALUES('1000000008',
    8. -> 'Toy Land',
    9. -> '123 Any Street',
    10. -> 'New York',
    11. -> 'NY',
    12. -> '11111',
    13. -> 'USA');
    14. Query OK, 1 row affected (0.01 sec)

    解释:忽略表中cust_ontact 与cust_email 值。

    插入部分值,前提条件是表允许

    • 改列定义为允许NULL值
    • 表改成默认值,如果不给,将使用默认
      如果没有这两个前天条件,就服务插入部分值。

    利用SELECT 语句的输出结果插入表中,INSERT SELECT两条结合。

    新键一个表

    插入是注意主键值不能重复。

    1. mysql> INSERT INTO CustomersNew(cust_id,
    2. -> cust_contact,
    3. -> cust_name,
    4. -> cust_address,
    5. -> cust_state,
    6. -> cust_zip,
    7. -> cust_country)
    8. -> SELECT cust_id,
    9. -> cust_contact,
    10. -> cust_email,
    11. -> cust_name,
    12. -> cust_address,
    13. -> cust_city,
    14. -> cust_state,
    15. -> cust_zip,
    16. -> cust_country
    17. -> FROM Customers;

    只复制表结构,不复制数据。

    1. mysql> CREATE TABLE Customers_New like Customers;
    2. Query OK, 0 rows affected (0.03 sec)

    创建一个CustCopy 表,并把Customers表中的数据复制过来。

    查看一个表是如果创建的

    查看表的结构

    1. mysql> DESC Customers

    注意:

    • 任何SELECT 选择的子句都可以使用。WHERE ,GROUP BY等
    • 不过从多少个表检索出来的数据,数据都只能插入一个表中。
      SELECT INTO 可以用来测试SQL语句前,复制一个表出来测试,避免影响原来的表。