• SQL基础语法—delete语句


    1 delete语句介绍

    delete语句用于删除表中已经存在的整行数据。基本语法如下:

    Single-Table Syntax
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
        [PARTITION (partition_name [, partition_name] ...)]
        [WHERE where_condition]
        [ORDER BY ...]
        [LIMIT row_count]
    
    Multiple-Table Syntax
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        tbl_name[.*] [, tbl_name[.*]] ...
        FROM table_references
        [WHERE where_condition]
    
    DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
        FROM tbl_name[.*] [, tbl_name[.*]] ...
        USING table_references
        [WHERE where_condition]
    
    • tbl_name关键词代表删除数据的目标表

    • where子句代表被删除数据的满足条件,如果没有where子句则代表所有表数据都删除

    • order by子句代表删除数据的顺序

    • limit子句代表被删除数据的行数限制

    • low_priority关键词表示删除语句需要等待其他链接的读此表操作结束后再执行,只作用在MylSAMMEMORYMERGE存储引擎

    • quick关键词是在使用myisam存储引擎时,删除操作不会合并删除表的索引叶节点,这样会在一定程度上加快删除的速度

    • ignore关键词代表会忽略删除过程中的一些错误

    2 delete语句使用示例

    2.1 单表删除

    单表删除的一些案例如下:

    ## 删除students中的所有数据
    mysql> delete from students;
    
    ## 使用order by配合limit子句删除sid最大的两条数据
    mysql> delete from students order by sid desc limit 2;
    
    

    2.2 多表删除

    多表删除是指从一个或多个表中删除满足条件的数据,其中的table_reference代表了多个表的join操作。多表删除示例如下:

    ## 删除students2表和students3表中sid相同的行
    mysql> delete students2,student3 from students2 inner join students3 where students2.sid=students3.sid;
    
    ## 使用关联两张表进行查询,但在删除时只删除单表中的行
    mysql> delete students2 from students2 inner join students3 where students2.sid=students3.sid;
    
    ## 表的别名,只能在table_references子句中使用,否则会报错
    mysql> delete a from students2 as a inner join students3 as b where a.sid=b.sid
    

    3 使用delete语句注意事项

    • 在使用delete语句之前先使用查询语句验证过滤条件是否正确
    • 添加事务set autocommit=off,开启手动回滚操作

    4 练习

    删除所有学号大于200的学生信息

    mysql> delete from students where sid>200;
    

    删除系名为accounting的所有老师信息

    mysql> selete id from dept where dept_name='accounting';
    mysql> delete from teacher where dept_id=4;
    
    ## 当条件中的值不止一个时,此时不能使用'=',应该使用'in'关键字
    mysql> delete from teacher where dept_id in (selete id from dept where dept_name in ('accounting'));
    
    ## 使用多表删除
    mysql> delete teacher from teacher inner join dept where teacher.dept_id=dept.id and dept.dept_name='accounting';
    
  • 相关阅读:
    Handler Looper MessageQueue HandlerThread
    Android屏幕适配
    android开发环境搭建
    Task
    C#语法糖
    Window Phone 开发学习
    Android ListView使用
    网络分析工具
    VS2005在水晶报表中如何显示数据库中保存的是图片路径的图片
    在SQL Server中获取Excel文件中所有Sheet工作表的名称
  • 原文地址:https://www.cnblogs.com/dabric/p/12354798.html
Copyright © 2020-2023  润新知