插入数据

方式一:VALUES的方式添加

使用这种语法一次只能向表中插入一条数据

  1. //情况一:为表的所有字段按默认顺序插入数据
  2. INSERT INTO 表名
  3. VALUES (value1, value2, ...);
  4. //情况二:为表的指定字段插入数据
  5. //只向部分字段插入值,其他字段的值为表定义时的默认值
  6. INSERT INTO 表名(column1 [, column2, ..., columnn])
  7. VALUES (value1 [, value2, ..., valuen]);
  8. //情况三:同时插入多条记录
  9. INSERT INTO 表名
  10. VALUES
  11. (value1, [, value2, ..., valuen]),
  12. (value1, [, value2, ..., valuen]),
  13. ...
  14. (value1, [, value2, ..., valuen]);
  15. 或者
  16. INSERT INTO 表名(column1 [, column2, ..., columnn])
  17. VALUES
  18. (value1, [, value2, ..., valuen]),
  19. (value1, [, value2, ..., valuen]),
  20. ...
  21. (value1, [, value2, ..., valuen]);

说明:

  • VALUES也可以写成VALUE,但是VALUES是标准写法
  • 字符和日期型数据应包含在单引号中

    方式二:将查询结果插入到表中

    使用这种语法一次能向表中插入多条数据

    INSERT INTO 目标表名
    (tar_column1 [, tar_column2, ..., tar_columnn])
    SELECT
    (src_column1 [, src_column2, ..., src_columnn])
    FROM 源表名
    [WHERE condition];
    

    说明:

  • 在INSERT语句中加入子查询

  • 不必书写VALUES子句
  • 子查询中的值列表应与INSERT子句中的字段名对应

    更新数据

    UPDATE 表名
    SET column1=value1, column2=value2, ..., columnn=valuen
    [WHERE condition];
    

    说明:

  • 如果省略WHERE子句,则表中的所有数据都将被更新

  • 如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT=FALSE;

    删除数据

    DELETE FROM 表名
    [WHERE condition];
    

    说明:

  • 如果省略WHERE子句,则表中的全部数据将被删除

  • 如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT=FALSE;

    MySQL8新特性:计算列

    计算列,简单来说就是某一列的值是通过别的列计算得来的
    在MySQL8.0中,CREATE TABLE 和 ALTER TABLE中都支持增加计算列

    CREATE TABLE tb (
    id INT,
    a INT,
    b INT,
    c INT GENERATED ALWAYS AS (a + b) VIRTUAL
    );
    
    INSERT INTO tb(a, b) VALUES(100, 200);