更新和删除数据

利用UPDATE和DELETE语句进行操作表数据。

更新数据

UPDATE用来更新修改表中的数据

  • 更新表中特定的行
  • 更新表中所有行
    注意: 如果省略了WHERE子句,就会更新所有行。

UPDATE语句有三个部分组合

  • 要更新的表
  • 列名和他们的新值
  • 确定要更新哪些行的过滤条件
    1. mysql> UPDATE Customers
    2. -> SET cust_email = 'Kim@gmail.com'
    3. -> WHERE cust_id = '1000000005';
    4. Query OK, 1 row affected (0.02 sec)
    5. Rows matched: 1 Changed: 1 Warnings: 0

解释: SET命令用来建新值赋予给更新的列,设置了cust_email列为指定的值。SET cust_email = 'Kim@gmail.com'WHERE子句告诉要更新哪一行,如果没有WHERE子句,电子邮件将会更新Customers表中所有的行。

更新一列多个值

  1. mysql> UPDATE Customers
  2. -> SET cust_contact = 'Sam Roberts',
  3. -> cust_email = 'sam@toyland.com'
  4. -> WHERE cust_id = '1000000006';
  5. Query OK, 1 row affected (0.00 sec)
  6. Rows matched: 1 Changed: 1 Warnings: 0

解释: 使用SET命令,每个‘列=值’用逗号隔开,区分多个列。

更新某个列NULL

可以把列设置成NULL,如果表允许设置NULL

  1. mysql> UPDATE Customers
  2. -> SET cust_email = NULL
  3. -> WHERE cust_id = '1000000005';
  4. Query OK, 0 rows affected (0.00 sec)
  5. Rows matched: 0 Changed: 0 Warnings: 0

删除数据

使用DELETE从数据库删除数据,

  • 从表中删除特定的行
  • 从表中删除所有的行
    1. mysql> DELETE FROM Customers WHERE cust_id = '1000000009';
    2. Query OK, 1 row affected (0.01 sec)

解释:指定删除 表Customers 中的数据

注意:

  • DELETE语句删除行,但不能删除表本身
  • 想删除表中所有的行,可以使用TRUNCATE TABLE语句

    更新和删除的原则

  • UPDATE跟DELETE语句都具有WHERE子句,如果忽略WHERE子句建会应用到所有行,所以除非更新所有行

  • 保证每个表都有主键,WHERE应用到主键。
  • 使用UPDATE和DELETE语句前先,先SELECT进行测试,确保编写的WHERE子句正确。
  • 使用强制实施引用完整性数据库,防止误删除行。
  • 现在MYSQL不带有WHERE子句的UPDATE或DELETE子句执行。

原文: https://cxiaodian.gitbooks.io/mysql/content/chapter15.html