数据准备
说明:张三和李四有两条数据重复了,赵六同学不在这个班了
删除赵六
DELETE FROM exam WHERE id = '4';
结果:
注意事项
-
删除表的内容而不是表
DELETE 语句是从表中删除行,甚至是删除表中所有行。但DELETE不删除表本身 -
更快的删除
如果想从表中删除所有行,不要使用 DELETE 。可使用 TRUNCATE TABLE 语句,它完成相同的工作,但速度更快( TRUNCATE 实际是删除原来的表并重新创建一个表,而不是逐行删除表中的数据)。
DELETE 删除整行而不是删除列。为了删除指定的列,请使用 UPDATE 语句。
比如:为了删除某个列的值,可设置它为 NULL
UPDATE exam SET name = 'NULL' ;
当然这里仅仅是为了突出DELETE是删除所有行,而不是列。
删除重复的数据
我们看到张三和李四各有两条数据重复了,如何删除重复的数据呢?
- 第一步:复制原表
CREATE TABLE exam2 LIKE exam;
- 第二步:去重数据导入新表
INSERT INTO exam2 (NAME, english, chinese, math) SELECT
NAME,
english,
chinese,
math
FROM
exam
GROUP BY
NAME,
english,
chinese,
math;
- 删掉原表
DROP TABLE exam;
- 重命名新表为原表名
ALTER TABLE exam2 RENAME TO exam;
后记
有强迫症的朋友在删除完自增长id后发现中间有断层,很难受,非得要按顺序来。比如上面id就缺少了4,那么如何重新排序自增长id呢?
重新排序自增长id,三步骤
- 删除原有主键
ALTER TABLE `exam` DROP `id`;
- 添加新主键字段
ALTER TABLE `exam` ADD `id` MEDIUMINT( 8 ) NOT NULL FIRST;
- 设置新主键
ALTER TABLE `exam` MODIFY COLUMN `id` MEDIUMINT( 8 ) NOT NULL AUTO_INCREMENT,ADD PRIMARY KEY(id);