MySQL(05)—数据处理之增删改

数据处理之增删改

1. 数据操纵语言

  • DML(Data Manipulation Language — 数据操纵语言)可以在下列条件下执行
    • 向表中插入数据
    • 修改现存数据
    • 删除现存数据
  • 事务是由完成若干项工作的DML语言组成的

2. 插入数据

INSERT语句语法

一次向表中插入一条数据

1
2
INSERT INTO table [(column [, column...])]
VALUES (value [, value...]);
  1. 为每一列添加一个新值,按列的默认顺序列出各个列的值。在INSERT子句中随意列出列名和他们的值,字符和日期型数据应包含在单引号中

    1
    2
    3
    4
    5
    INSERT INTO
    employees(employee_id,last_name,email,hiredate,job_id)
    VALUES (300,'Tom','tom@126.com',str_to_date('2021-3-21','%Y-%m-%d'),'SA_REP');

    [2021-08-19 17:56:28] 1 row affected in 14 ms
  2. 向表中插入空值

    隐式方式:在列名表中省略该值

    1
    2
    3
    4
    insert into departments (department_id,department_name)
    values(280,'Sel');

    [2021-08-19 18:03:01] 1 row affected in 11 ms

    显示方式:在VALUES子句集中指定空值

    1
    2
    3
    4
    insert into departments
    values(290,'Fri',null,null);

    [2021-08-19 18:04:56] 1 row affected in 18 ms
  3. 插入指定的值

    NOW()函数:记录当前系统的日期和时间

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    insert into employees(employee_id,
    first_name,
    last_name,
    email,
    phone_number,
    hiredate,
    job_id,
    salary,
    commission_pct,
    manager_id,
    department_id)
    values(207,
    'Louis', 'Popp',
    'LPOPP', '515.124.4567',
    NOW(), 'AC_ACCOUNT', 6900,
    NULL, 205, 100);

    [2021-08-19 20:25:18] 1 row affected in 18 ms
  4. 从其他表中拷贝数据

    在INSERT语句中加入子查询

    1
    2
    3
    4
    5
    myemployees> insert into employees_test
    select *
    from employees
    where department_id = 110
    [2021-08-20 10:04:48] 2 rows affected in 12 ms

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

3. 更新数据

UPDATE语句语法

1
2
3
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition]

可以一次更新多条数据。如果需要回滚数据,需要保证在DML前,进行设置:SET AUTOCOMMIT = FALSE;

  1. 使用WHERE子句指定需要更新的数据

    1
    2
    3
    4
    5
    update employees
    set department_id = 70
    where employee_id = 113;

    [2021-08-20 10:10:44] 1 row affected in 0 ms

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

4. 删除数据

DELETE语句语法

1
2
DELETE FROM table
[WHERE condition];
  1. 使用WHERE子句删除指定的记录

    1
    2
    3
    4
    DELETE FROM departments
    WHERE department_name = 'Finance';

    [2021-08-20 10:15:32] completed in 5 ms

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