mysql删除数据命令(mysql删除数据库的命令是什么)

作者:电脑培训网 2024-04-26 04:37:36 929

为了从数据表中删除数据,请使用DELETE语句

语法:

mysql删除数据命令(mysql删除数据库的命令是什么)

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开发全套学习资料》,送给大家。初衷也很简单。希望能帮助到想自学但不知道从哪里开始的朋友,同时减轻大家的负担。在下面添加您的名片以获得全套学习材料

相关推荐

热门推荐

猜你喜欢