有时候,会需要删除某些行,或者修改其内容。这是候便需要用到DELETE语句和UPDATE语句。

1.  DELETE 语句的基本格式如下所示:

DELETE  FROM tbl_name
WHERE which rows to delete;

其中,WHERE子句是可选的,它用于指定需要删除掉哪些行。如果没有WHERE 子句,那么将删除表里面的所有行。这意味着,越简单的DELETE语句越危险,例如下面的语句:

DELETE FROM tbl_name

它会彻底删除表里的内容,因此务必要小心使用。

如果不清楚某条DELETE语句到底会删除哪些行,那么最好把这条语句的WHERE子句放到一条SELECT 语句里,看看这条SELECT 语句能查出哪些行。这有助于确认:它们的确是你想要删除的那些行,而且只有这些,不能多也不能少。

如下是一个使用示例:

mysql> select * from student;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Lily | F | |
| Lucy | F | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec) mysql> delete from student where sex='F';
Query OK, rows affected (0.01 sec) mysql> select * from student;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Travis | M | |
| Steve | M | |
+--------+-----+------------+
rows in set (0.00 sec)

2. 如果想要修改已有记录行,则需要使用UPDATE语句,其基本格式如下:

UPDATE  tbl_name

SET  which columns to change

WHERE which rows to update;

这里的WHERE子句的情况与DELETE语句里的相似,它是可选的,因此在没有指定它时,会更新表里的每一行。例如,下面的语句会把每一位学生的 name 更改为 George:

mysql> UPDATE student SET name='George';

很显然,必须谨慎对待这类查询,所以通常情况下都需要加上一个WHERE子句,用它来更具体地指出需要更行那些行。

假设在 student 表里添加了一行,但忘记指定 sex 列的内容,默认地,该列会被设置为 'F':

mysql> INSERT INTO student (name)
-> VALUES('Julian');
Query OK, row affected (0.00 sec) mysql> SELECT * FROM student;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Travis | M | |
| Steve | M | |
| Hellen | M | |
| Julian | F | |
+--------+-----+------------+
rows in set (0.00 sec)

此时,可以用一条UPDATE语句来进行修复,其中包含一条WHERE子句,用以标识需要更新的那一行:

mysql> UPDATE student
-> SET sex='M'
-> WHERE name='Julian';
Query OK, row affected (0.00 sec)
Rows matched: Changed: Warnings: mysql> SELECT * FROM student;
+--------+-----+------------+
| name | sex | student_id |
+--------+-----+------------+
| Jim | M | |
| Tom | M | |
| Travis | M | |
| Steve | M | |
| Hellen | M | |
| Julian | M | |
+--------+-----+------------+
rows in set (0.00 sec)

MySQL数据库(5)----删除或更新已有行的更多相关文章

  1. Mysql 数据库无法删除 41 错误

    今天删除Mysql 数据库时候,没法删除,直接报错 41: 方法,进入 mysql的安装目录 我的是:D:\tools\Mysql\V76384-01\mysql-advanced-5.6.25-wi ...

  2. MySQL中外键删除、更新

      MySQL支持外键的存储引擎只有InnoDB..在创建外键的时候,可以指定在删除.更新父表时,对子表进行的相应操作,包括RESTRICT.NO ACTION.SET NULL和CASCADE. 其 ...

  3. MYSQL数据库学习----插入、更新、删除

    一:插入数据 1 为表的所有字段插入数据 INSERT INTO 表名 (值1,值2, 值3...); 2 为表的指定字段插入数据 INSERT INTO 表名(字段1,字段2,...) VALUES ...

  4. MySQL数据库起步 linux安装(更新中...)

    卸载mysql! [root@localhost usr]# yum remove mysql mysql-server mysql-libs compat-mysql51 [root@localho ...

  5. mysql数据库操作记录持续更新...

    1.查看删除数据库表的唯一约束 SHOW INDEX FROM tbl_name (唯一约束也是索引) ALTER TABLE tbl_name DROP INDEX index_name   2.u ...

  6. 利用crontab系统每天定时备份MySQL数据库及删除指定crontab定时任务

    利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的. 1.创建保存备份文件的路径/mysqldata mkdir /mysqldata 2.创建/usr/sbin/ba ...

  7. Linux实现定时备份MySQL数据库并删除30天前的备份文件

    1. MySQL5.6以上版本 2. 修改 /etc/my.cnf 文件 # vim /etc/my.cnf [client] host=localhost user=你的数据库用户 password ...

  8. Mysql 数据库之常用命令[更新中...]

    连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 创建数据库:create database [库名] 例如:create database jtest; 显示所有数据库: s ...

  9. python多线程备份MYSQL数据库并删除旧的备份。

    #!/usr/bin/python # -*- coding=utf-8 -*- import time import os import datetime import threading from ...

随机推荐

  1. Kettle配合Windows执行计划实现定时实行作业

    一般作业做好后需要做成定时任务,Kettle可以借助Windows的执行计划来完成.那么可以通过写批处理的方式让执行计划来调用. 其中Kitchen和Pan都可以做定时执行,一个是针对作业,一个是针对 ...

  2. JavaWeb学习笔记(十九)—— 分页

    一.MySQL中的分页 格式:select * from 表 limit ?,?; 参数1:开始索引start,默认值:.必须是正数 参数2:每页显示个数 pageSize 例如: ,; #第一页,每 ...

  3. leetcode 53 最大子序列之和(动态规划)

    思路:nums为给定的数组,动态规划: 设 一维数组:dp[i] 表示 以第i个元素为结尾的一段最大子序和. 1)若dp[i-1]小于0,则dp[i]加上前面的任意长度的序列和都会小于nums[i], ...

  4. 测试sql语句执行速度

    DBCC DROPCLEANBUFFERS --清除缓冲区 DBCC FREEPROCCACHE --删除计划高速缓存中的元素 SET STATISTICS io ON SET STATISTICS ...

  5. Java 网络通信相关

    http://m.blog.csdn.net/xiaojin21cen/article/details/78587541 越下面越底层 , 最后面的都是框架 , 下面的是 编程语言提供的库的 NIO ...

  6. 使用group by rollup和group by cube后的辅助函数

    本文主要介绍,报表在使用group by rollup和group by cube后的辅助函数. CREATE TABLE TEST8 ( "ID" NUMBER, "O ...

  7. MySQL表级约束和列级约束

    对一个数据列建立的约束,称为列级约束 对多个数据列建立的约束,称为表级约束 列级约束即可以在列定义时生命,也可以在列定义后声明. 表级约束只能在列定义后声明. NOT NULL和DEFAULT只存在列 ...

  8. Bash编程(6) String操作

    1. 拼接 1) 简单的字符串拼接如:PATH=$PATH:$HOME/bin.如果拼接的字符串包含空格或特殊字符,需要使用双引号括起,如: var=$HOME/bin # 注释并不是赋值的一部分 v ...

  9. sqlserver 自增ID插入指定数据(转)

    set identity_insert 表名 ON --允许对自增列Id插入指定数据 insert into table_name(Id,Name) values(1,'test') set iden ...

  10. Map.Entry遍历集合中的元素

    Entry是Map中的一个内部累,map.entrySet()可以得到key和value的视图给你一个比较简单的小事例public static void main(String[] args) { ...