一、设置MySQL表字段的唯一性
MySQL表中,主键字段是默认唯一的。但对于非主键字段,如何设置唯一性约束呢?下面我将分享一些经验:
1. 创建表并设置唯一性约束
首先,我们在test数据库中创建一个名为chengshi的表,主键是id,另外有shengfen和chengshi两个字段。我们希望chengshi字段具有唯一性约束:
```sql
CREATE TABLE `chengshi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`shengfen` varchar(10) DEFAULT NULL,
`chengshi` varchar(10) DEFAULT NULL,
`shijian` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINEInnoDB AUTO_INCREMENT10 DEFAULT CHARSETutf8;
```
2. 插入数据并查看
接下来我们向表中插入一些数据:
```sql
INSERT INTO `chengshi` (`id`, `shengfen`, `chengshi`, `shijian`) VALUES
(1, '河南', '安阳', '2019-03-05 10:14:27'),
(2, '河南', '郑州', '2019-03-05 10:14:27'),
(3, '河南', '洛阳', '2019-03-05 10:14:27'),
(4, '河南', '漯河', '2019-03-05 10:14:27'),
(5, '河南', '新乡', '2019-03-05 10:14:27'),
(6, '河南', '濮阳', '2019-03-05 10:14:27'),
(7, '河南', '焦作', '2019-03-05 10:14:27'),
(8, '河南', '鹤壁', '2019-03-05 10:14:27'),
(9, '河南', '开封', '2019-03-05 10:14:27');
```
查询表中的数据:
```sql
SELECT * FROM chengshi;
```
3. 设置chengshi字段为唯一索引
现在我们需要为chengshi字段设置唯一性约束,可以通过添加唯一索引的方式实现:
```sql
ALTER TABLE `test`.`chengshi`
ADD UNIQUE INDEX `chengshi` (`chengshi`);
```
4. 验证唯一性约束
接下来我们尝试对表中的数据进行一些操作,看看唯一性约束是否生效:
1. 尝试将id为1的城市修改为"郑州",会报错,因为"郑州"已经存在了:
```sql
UPDATE chengshi SET chengshi'郑州' WHERE id1;
```
2. 尝试插入一个新的"安阳"城市,也会报错,因为"安阳"已经存在:
```sql
INSERT INTO chengshi(shengfen,chengshi)VALUES('河南','安阳');
```
综上所述,我们成功为chengshi字段设置了唯一性约束,在对表数据进行操作时,就不会出现重复数据的情况了。希望这些经验对你学习MySQL有所帮助,欢迎点赞收藏!
如何设置MySQL表字段的唯一性
1. 在创建表时,为需要设置唯一性的字段添加UNIQUE关键字,如:
```sql
CREATE TABLE `chengshi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`shengfen` varchar(10) DEFAULT NULL,
`chengshi` varchar(10) UNIQUE DEFAULT NULL,
`shijian` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINEInnoDB AUTO_INCREMENT10 DEFAULT CHARSETutf8;
```
2. 对于已经创建好的表,可以使用ALTER TABLE语句添加唯一性索引:
```sql
ALTER TABLE `test`.`chengshi`
ADD UNIQUE INDEX `chengshi` (`chengshi`);
```
3. 验证唯一性约束:
- 尝试更新重复数据会报错
- 尝试插入重复数据也会报错
通过以上步骤,就可以很方便地为MySQL表的字段设置唯一性约束,避免出现重复数据的情况。希望这些经验对你学习MySQL有所帮助,欢迎点赞收藏!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。