为了从数据表中删除数据,请使用DELETE语句
语法:
DELETEFROM表名[WHERE条件][ORDERBY…][LIMITrow_count];
DELETEFROM需要指定要从中删除数据的表的名称。WHERE子句过滤要删除的行。ORDERBY子句按指定顺序删除行。LIMIT子句限制可以删除的行数。
DELETE不需要列名或通配符。DELETE删除整行而不是删除列。要删除指定列,请使用UPDATE语句。
导入数据
如果存在`order_detail`,则删除表;创建`order_detail`字符集utf8COLLATEutf8_general_ciDEFAULTNULL,`order_time`varchar字符集utf8COLLATEutf8_general_ciDEFAULTNULL)引擎=InnoDB字符集=utf8COLLATE=utf8_general_ciROW_FORMAT=Dynamic;插入`order_detail`值('o001','2020-06-1509:12:33');插入`order_detail`值('o002','2020-06-1513:243336009');插入`order_detail`值('o003','2020-06-1610:44:24');插入`order_detail`值('o004','2020-06-1708:05:52');插入`order_detail`值S
分机:
如果要删除表中的所有行,请勿使用DELETE语句。可以使用TRUNCATETABLE语句,它可以完成与DELETE语句相同的删除操作,但速度更快、效率更高
语法:TRUNCATETABLE表名;
TRUNCATETABLE语句用于清除表。清除后的表中没有内容,但表仍然存在。
恢复上面order_detail表中的五行数据
订单明细表
下面使用TRUNCATETABLE语句删除order_detail表:中的数据
截断表order_detail;
结果显示:
如果表中定义了自增字段,使用TRUNCATE命令删除表中的数据后,再次向表中添加记录时,自增字段的默认值将重置为1;使用DELETEFROM命令删除表中的数据后,再次向表中添加记录时,自增字段的值为删除数据时字段的最大值加1。
使用TRUNCATE语句删除表中的记录数据
--创建test1表并插入值CREATETABLEtest1(idINTPRIMARYKEYauto_increment,nameCHAR(20));INSERTINTOtest1(name)VALUES('Odin'),('Harry'),('Olck'),('Mark'),('Summer');--检索test1表的所有信息SELECT*FROMtest1;
结果显示:
--使用TRUNCATE删除表TRUNCATEtest1中的所有记录数据;--重新向已删除的test1表中插入一组数据INSERTINTOtest1(name)VALUES('Rose');--检索有关test1表的信息SELECT*FROMtest1;
结果显示:
使用DELETEFROM语句删除表中的记录数据
--创建test2表并插入值CREATETABLEtest2(idINTPRIMARYKEYauto_increment,nameCHAR(20));INSERTINTOtest2(name)VALUES('张'),('王'),('李'),('Zhao');--获取test2表的所有信息SELECT*FROMtest2;
结果显示:
--使用DELETEFROM删除表DELETEFROMtest2中的所有记录数据;--删除的test2表中重新插入一组数据INSERTINTOtest2(name)VALUES('Hu');--检索有关test2表的信息SELECT*FROMtest2;
结果显示:
删除数据指南
1.如果执行不带WHERE子句的DELETE语句,则表中的所有数据将被删除。除非您确实打算删除每一行,否则切勿使用不带WHERE子句的DELETE语句。
2、在DELETE语句中使用WHERE子句之前,应该先用SELECT进行测试,以确保它过滤出正确的记录,以防WHERE子句写错小心使用DELETE否则你可能会发现自己删除了错误的数据)
扩展实践案例
1、删除记录
导入数据
droptableifEXISTSexam_record;CREATETABLEIFNOTEXISTSexam_record(idintPRIMARYKEYAUTO_INCRMENTCOMMENT'自动递增ID',uidintNOTNULLCOMMENT'用户ID',exam_idintNOTNULLCOMMENT'考试ID',start_timedatetimeNOTNULLCOMMENT'开始时间',submit_timedatetimeCOMMENT'提交时间',scoretinyintCOMMENT'分数')字符集utf8COLLATEutf8_general_ci;TRUNCATEexam_record;INSERTINTOexam_record(uid,exam_id,start_time,Submit_time,Score)VALUES(1001,9001,'2020-01-0122:11:12','2020-01-0123:16:12',50),(1001,9002,'2020-01-0209:01:01','2020-01-02093336006:00',58),(1002,9001,'2021-05-0210:01:01','2021-05-0210:05:58',60),(1002,9002,'2021-06-0219:01:01','2021-06-02193336005:01',54),(1003,9001,'2021-09-0519:01:01','2021-09-0519:40:01',49),(1003,9001,'2021-09-0519:01:01','2021-09-0519:15:01',70),(1003,9001,'2021-09-0619336001:01','2021-09-0619336005:01',80),(1003,9002,'2021-09-0907333:02',空,空)
exam_record表
start_time:试卷开始时间submit_time:试卷提交时间,如果未完成则为空
**问题:**请删除exam_record表中作答时间小于5分钟且成绩不及格的记录
DELETEFROMexam_recordWHERETIMESTAMPDIFF(MINUTE,start_time,submit_time)5AND分数60;SELECT*FROMexam_record;
结果显示:
删除ID为2和4的两行记录
2、删除记录
导入数据
droptableifEXISTSexam_record;CREATETABLEIFNOTEXISTSexam_record(idintPRIMARYKEYAUTO_INCRMENTCOMMENT'自动递增ID',uidintNOTNULLCOMMENT'用户ID',exam_idintNOTNULLCOMMENT'考试ID',start_timedatetimeNOTNULLCOMMENT'开始时间',submit_timedatetimeCOMMENT'提交时间',scoretinyintCOMMENT'分数')字符集utf8COLLATEutf8_general_ci;TRUNCATEexam_record;INSERTINTOexam_record(uid,exam_id,start_time,Submit_time,Score)VALUES(1001,9001,'2020-01-0122:11:12','2020-01-0123:16:12',50),(1001,9002,'2020-01-0209:01:01','2020-01-02093336006:00',58),(1001,9002,'2020-01-0209:01:01','2020-01-0209:05:01',58),(1002,9001,'2021-05-0210:01:01','2021-05-02103336006:58',60),(1002,9002,'2021-06-0219:01:01',null,null),(1003,9001,'2021-09-0519:01:01',null,null),(1003,9001,'2021-09-0519:013336001',null,null),(1003,9002,'2021-09-0907:01:02',null,null);
exam_record表
start_time:试卷开始时间submit_time:试卷提交时间,如果未完成则为空
**问题:**请删除exam_record表中未完成答题或答题时间小于5分钟的记录中开始时间最早的3条记录。
DELETEFROMexam_recordWHERETIMESTAMPDIFF(MINUTE,start_time,Submit_time)5ORSubmit_timeISNULLORDERBYstart_timeLIMIT3;SELECT*FROMexam_record;
结果显示:
删除ID为2、3、5的三行记录
3、删除记录
导入数据
droptableifEXISTSexam_record;CREATETABLEIFNOTEXISTSexam_record(idintPRIMARYKEYAUTO_INCRMENTCOMMENT'自动递增ID',uidintNOTNULLCOMMENT'用户ID',exam_idintNOTNULLCOMMENT'考试ID',start_timedatetimeNOTNULLCOMMENT'开始时间',submit_timedatetimeCOMMENT'提交时间',scoretinyintCOMMENT'分数')字符集utf8COLLATEutf8_general_ci;TRUNCATEexam_record;INSERTINTOexam_record(uid,exam_id,start_time,Submit_time,Score)VALUES(1001,9001,'2020-01-0122:11:12','2020-01-0123:16:12',50),(1001,9002,'2020-01-0209:01:01','2020-01-02093336006:00',58);
exam_record表
**问题:**请删除exam_record表中的所有记录并重置自增主键
截断表exam_record;SELECT*FROMexam_record;
结果显示:
4.删除记录(4)
导入数据
如果存在,则删除titles_test;创建表titles_test不为空主键,emp_noint不为空,标题varchar不为空,from_date日期不为空,to_date日期DEFAULTNULL);插入到titles_testvalue('1','10001','高级工程师','1986-06-26','9999-01-01'),('2','10002','工作人员','1996-08-03','9999-01-01'),('3','10003','高级工程师','1995-12-03','9999-01-01'),('4','10004','高级工程师','1995-12-03','9999-01-01'),('5','10001','高级工程师','1986-06-26','9999-01-01'),('6','10002','工作人员','1996-08-03','9999-01-01'),('7','10003','高级工程师','1995-12-03','9999-01-01');
标题_测试表
**问题:**删除emp_no的重复记录,只保留最小id对应的记录
DELETEFROMTitles_testWHEREidNOTIN(SELECT*FROM(SELECTMIN(id)FROMTitles_testGROUPBYemp_no)ASa);
结果显示:
我先自我介绍一下。我2013年毕业于交通大学,曾在小公司和华为、OPPO等大公司工作过。我于2018年加入阿里巴巴,一直到现在。我知道,大多数初级和中级Java工程师如果想要提高自己的技能,往往需要自己探索和成长,或者报名参加课程。不过,培训机构近万元的学费确实压力颇大。没有系统体系的自学效率低、时间长,很容易触碰天花板而停止技术进步。所以,我收集了一份《java开发全套学习资料》,送给大家。初衷也很简单。希望能帮助到想自学但不知道从哪里开始的朋友,同时减轻大家的负担。在下面添加您的名片以获得全套学习材料
端午节期间,我们整理了仿天猫H5APP项目vue.js+expss+mongo效果源码源码太多,点击放到github上遇到的问题连接mongodb数据库多个集合…
ros(23):在rviz中接收2D导航目标和2D姿态估计消息1rviz教程1.12DNavGoal2DNavGoal(Keyboardshortcut:g)此…
可能是内存不足造成的。清除内存并重新发送视频。自动删除短信:打开设置,点击信息,找到并点击保留信息,选择30天,然后删除。删除不常用的APP:打开设置、常规、i…
【前端面试题目】【3】Vue2Vue2.xVue基本使用指令、插值插值、表达式指令、动态属性v-html:会有XSS风险,并且会覆盖子组件模板divp文本插值{…
vue+js+海康Web开发包连接海康摄像机1.登录海康威视开放平台下载Web开发包。下载时需要先登录海康威视账号。如果您没有,您需要先注册一个。海康威视开放平…
2024-10-23 10:48:05
2024-10-23 08:48:12
2024-10-23 06:36:10
2024-10-23 04:48:07
2024-10-23 02:57:05
大家好,今天小编关注到一个比较有意思的话题,就是关于学校才艺培训目的和意义的问题…
大家好,今天小编关注到一个比较有意思的话题,就是关于学电脑编程需要电脑专业吗的问…