mysql错误1064怎么修改?mysql数据库如何处理重复数据?
2023-06-02 11:22:28来源:科技时报网
mysql错误1064怎么修改?
01
首先我们在mysql数据库中准备一个数据表,并且往数据表中插入数据
02
然后我们编写如下图所示的查询语句并且执行,你就会发现执行结果报出了1064错误
03
回到查询语句中我们发现Select单词拼写错误了SQL语句的语法错误都会导致1064错误的出现
04
最后解决这个错误就很简单了,我们只需要把SQL语句写正确即可
mysql数据库如何处理重复数据?
方法一:防止出现重复数据
也就是说我们再设计表的时候,就应该对这些数据设置一个UNIQUE 索引,在插入的时候就可以保证其唯一性,也就不存在有重复的数据了。当然你也可以直接设置为PRIMARY KEY(主键)。效果也是一样的。我们看一个案例:下表中无索引及主键,所以该表允许出现多条重复记录。
CREATE TABLE student
(
first_name CHAR(20),
last_name CHAR(20),
sex CHAR(10)
);
目前first_name,last_name是可以重复的,如果不想重复这里有两个解决办法:
1、设置双主键模式
CREATE TABLE student
(
first_name CHAR(20) NOT NULL,
last_name CHAR(20) NOT NULL,
sex CHAR(10),
PRIMARY KEY (last_name, first_name)
);
现在就无法插入重复数据了。
2、添加unique索引
CREATE TABLE student
(
first_name CHAR(20) NOT NULL,
last_name CHAR(20) NOT NULL,
sex CHAR(10)
UNIQUE (last_name, first_name)
);
这两种看起来形式好像有一点区别,但是能起到相同的作用。此时我们可以插入两条重复的数据,会发现报错。
当然我们还可以在数据库中去验证一下:
SELECT COUNT(*) as repetitions, last_name, first_name
FROM student
GROUP BY last_name, first_name
HAVING repetitions > 1;
在这里我们统计的是 first_name 和 last_name的重复记录数,上面已经用两种方法设置了,这里肯定就是0了。
方法二:在插入时指定能否插入重复数据
在这里我们使用的是Insert ignore into 与Insert into指令。
(1)Insert ignore into会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。
(2)Insert into则直接相反,会直接插入数据,不管数据库里面是否含有重复数据。
我们还是举例说明:
insert ignore into student (last_name, first_name) values ( '张三', '李四');
//结果
Query OK, 1 rows affected (0.00 sec)
insert ignore into student (last_name, first_name) values ( '张三', '李四');
//结果
Query OK, 0 rows affected (0.00 sec)
现在我们看出来了吧,也就是说在执行第一条插入操作的时候,看到数据库没有,则直接插入一条新纪录,因此一行记录受到影响,但是在第二次插入的时候,数据库已经有一条一样的了,因此便不会插入了,0行受到影响。 当然了还有一个指令也可以完成类似于insert ignore into相似的功能,那就是replace into。他表示的是如果存在primary 或 unique相同的记录,则先删除掉。再插入新记录。
方法三:过滤重复数据
如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
SELECT DISTINCT last_name, first_name
FROM student
ORDER BY last_name;
你也可以使用 GROUP BY 来读取数据表中不重复的数据:
SELECT last_name, first_name
FROM student
GROUP BY (last_name, first_name);
方法四:删除重复数据
这种情况其实就相当于,在水的终点处去解决。看下面sql语句:
//根据student创建一个临时表,并使用group by过滤了重复数据
CREATE TABLE tmp SELECT last_name, first_name, sex
FROM student;
GROUP BY (last_name, first_name);
//删除原student表
DROP TABLE student;
//给这个临时表重新命名
ALTER TABLE tmp RENAME TO stu;
当然你也可以在数据表中添加 INDEX(索引) 和 PRIMAY KEY(主键)这种简单的方法来删除表中的重复记录。方法如下:
ALTER IGNORE TABLE student
ADD PRIMARY KEY (last_name, first_name);
OK,解决办法这么多,相信能解决你的问题。
关键词: mysql错误1064怎么修改 mysql数据库如
责任编辑:hnmd004
- mysql错误1064怎么修改?mysql数据库如何处2023-06-02
- 婚姻保卫战电视剧16集讲了什么?婚姻保卫战2023-06-02
- 信用卡逾期该怎么协商还款?信用卡逾期几天2023-06-02
- 合作医疗保险网上怎么交费呢?合作医疗保险2023-06-02
- RedmiK60Ultra首批搭载天玑9200+旗舰Soc吗2023-06-02
- 资金流向选股技巧?股票判断主力最简单方法2023-06-02
- 阿根廷总统发文感谢球队夺冠 阿根廷总统有2023-06-02
- 阿根廷总统发文感谢球队夺冠 阿根廷人民评2023-06-02
- 什么是风光互补?风光互补发电系统的缺点2023-06-02
- 猪肉什么时候掉价?2023年猪肉价格走势图及2023-06-02
- 入伏第一天吃什么?末伏后还热多少天?2023-06-02
- 劳模风采·2023年山西省五一劳动奖章 | 2023-06-02
- 白羊座的人更希望自己能够为他人付出一些东2023-06-02
- 微信零钱限额怎么解除?央行规定的零钱支付2023-06-02
- 生莲藕可以放冰箱多久 莲藕有哪些营养?2023-06-02
- 档案丢失如何办理退休?工厂退休办理流程有2023-06-02
- 电视棒能当u盘用吗?电视棒怎么使用?2023-06-02
- 阿联酋货币单位是什么?阿联酋用的什么货币2023-06-02
- 谷雨就一定会下雨吗?谷雨是春季的第几个节2023-06-02
- 代购假货多少钱可以立案?私人代购可以举报2023-06-02
- 苹果向开发者发布iOS 16.6和iPadOS 16.62023-06-02
- 股市中做多是什么意思?做多基本操作及与做2023-06-02
- 咸鱼之王50-10怎么搭配阵容?光遇封号怎么2023-06-02
- 什么是公开市场短期流动调节工具? 2023-06-02
- 《在世界中心呼唤爱》是什么影片?《在世界2023-06-02
- Realme C53曝光 配备6.74英寸显示屏和5002023-06-02
- 资金头寸是什么意思?资金头寸表汇兑损益有2023-06-02
- powerpoint屏幕录制保存方法是什么? ppt2023-06-02
- 神豪从大一入学开始(上大一多少岁)2023-06-02
- 意外伤害治疗发生的费用有哪些项目要赔偿?2023-06-02