一、設(shè)置MySQL表字段的唯一性
MySQL表中,主鍵字段是默認(rèn)唯一的。但對于非主鍵字段,如何設(shè)置唯一性約束呢?下面我將分享一些經(jīng)驗(yàn):1. 創(chuàng)建表并設(shè)置唯一性約束首先,我們在test數(shù)據(jù)庫中創(chuàng)建一個名為chengshi的表,主鍵是id
MySQL表中,主鍵字段是默認(rèn)唯一的。但對于非主鍵字段,如何設(shè)置唯一性約束呢?下面我將分享一些經(jīng)驗(yàn):
1. 創(chuàng)建表并設(shè)置唯一性約束
首先,我們在test數(shù)據(jù)庫中創(chuàng)建一個名為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. 插入數(shù)據(jù)并查看
接下來我們向表中插入一些數(shù)據(jù):
```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, '河南', '新鄉(xiāng)', '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');
```
查詢表中的數(shù)據(jù):
```sql
SELECT * FROM chengshi;
```
3. 設(shè)置chengshi字段為唯一索引
現(xiàn)在我們需要為chengshi字段設(shè)置唯一性約束,可以通過添加唯一索引的方式實(shí)現(xiàn):
```sql
ALTER TABLE `test`.`chengshi`
ADD UNIQUE INDEX `chengshi` (`chengshi`);
```
4. 驗(yàn)證唯一性約束
接下來我們嘗試對表中的數(shù)據(jù)進(jìn)行一些操作,看看唯一性約束是否生效:
1. 嘗試將id為1的城市修改為"鄭州",會報錯,因?yàn)?鄭州"已經(jīng)存在了:
```sql
UPDATE chengshi SET chengshi'鄭州' WHERE id1;
```
2. 嘗試插入一個新的"安陽"城市,也會報錯,因?yàn)?安陽"已經(jīng)存在:
```sql
INSERT INTO chengshi(shengfen,chengshi)VALUES('河南','安陽');
```
綜上所述,我們成功為chengshi字段設(shè)置了唯一性約束,在對表數(shù)據(jù)進(jìn)行操作時,就不會出現(xiàn)重復(fù)數(shù)據(jù)的情況了。希望這些經(jīng)驗(yàn)對你學(xué)習(xí)MySQL有所幫助,歡迎點(diǎn)贊收藏!
如何設(shè)置MySQL表字段的唯一性
1. 在創(chuàng)建表時,為需要設(shè)置唯一性的字段添加UNIQUE關(guān)鍵字,如:
```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. 對于已經(jīng)創(chuàng)建好的表,可以使用ALTER TABLE語句添加唯一性索引:
```sql
ALTER TABLE `test`.`chengshi`
ADD UNIQUE INDEX `chengshi` (`chengshi`);
```
3. 驗(yàn)證唯一性約束:
- 嘗試更新重復(fù)數(shù)據(jù)會報錯
- 嘗試插入重復(fù)數(shù)據(jù)也會報錯
通過以上步驟,就可以很方便地為MySQL表的字段設(shè)置唯一性約束,避免出現(xiàn)重復(fù)數(shù)據(jù)的情況。希望這些經(jīng)驗(yàn)對你學(xué)習(xí)MySQL有所幫助,歡迎點(diǎn)贊收藏!