自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL中你知道幾種防止數(shù)據(jù)重復(fù)的方法?

數(shù)據(jù)庫(kù) MySQL
很多時(shí)候在日常的項(xiàng)目中,有些數(shù)據(jù)是不允許重復(fù)的,例如用戶信息中的登陸名,一旦存在同一個(gè)登陸名,必然不知道到底是哪個(gè)用戶執(zhí)行登陸操作,導(dǎo)致系統(tǒng)異常。

很多時(shí)候在日常的項(xiàng)目中,有些數(shù)據(jù)是不允許重復(fù)的,例如用戶信息中的登陸名,一旦存在同一個(gè)登陸名,必然不知道到底是哪個(gè)用戶執(zhí)行登陸操作,導(dǎo)致系統(tǒng)異常。

常常在防止數(shù)據(jù)重復(fù)的情況下,我們都采用唯一索引去解決,如下

  • CREATE TABLE `login` (
  • `id` bigint unsigned NOT NULL AUTO_INCREMENT,
  • `name` varchar(255) DEFAULT NULL,
  • `password` varchar(255) DEFAULT NULL,
  • PRIMARY KEY (`id`),
  • UNIQUE KEY `idx_name` (`name`) USING BTREE
  • ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

當(dāng)我們執(zhí)行同樣的name的數(shù)據(jù)時(shí)則會(huì)報(bào)如下錯(cuò)誤

除了這個(gè)方法,你還知道其他的嗎?

下面我們介紹另外幾種方法

insert ignore into
插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則忽略此次插入

INSERT ignore INTO login(`name`,`password`) VALUES("ganhuojun","password")

replace into
插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則刪除再插入

REPLACE INTO login(`name`,`password`) VALUES("ganhuojun","password")

執(zhí)行后發(fā)現(xiàn),2行生效,其中一行刪除,1行新增

insert if not exists
sql的語(yǔ)法為insert into … select … where not exist ...,該語(yǔ)句先判斷mysql數(shù)據(jù)庫(kù)中是否存在這條數(shù)據(jù),如果不存在,則正常插入,如果存在,則忽略

  • INSERT INTO login ( `name`, `password` ) SELECT
  • 'ganhuojun',
  • 'password'
  • FROM
  • login
  • WHERE
  • NOT EXISTS (
  • SELECT
  • `name`
  • FROM
  • login
  • WHERE
  • `name` = 'ganhuojun'
  • )

on duplicate key update
插入數(shù)據(jù)時(shí),如果數(shù)據(jù)存在,則執(zhí)行更新操作

  • INSERT INTO login ( `name`, `password` )
  • VALUES
  • ( "ganhuojun", "password" )
  • ON DUPLICATE KEY UPDATE PASSWORD = 'passwd'

 

 

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2013-11-13 14:39:53

表單提交開(kāi)發(fā)

2013-11-13 11:01:14

表單表單重復(fù)提交表單策略

2024-04-28 14:49:31

2020-07-17 07:59:55

數(shù)據(jù)

2021-05-07 16:19:36

異步編程Java線程

2022-05-27 06:57:50

Python循環(huán)方式生成器

2024-08-01 09:58:33

API性能機(jī)制

2020-09-18 10:18:08

MySQL數(shù)據(jù)插入數(shù)據(jù)庫(kù)

2018-02-08 09:04:58

Nginx404頁(yè)面方法

2022-05-25 09:55:40

數(shù)據(jù)重復(fù)提交Java

2018-08-07 09:29:35

數(shù)據(jù)庫(kù)MySQL優(yōu)化方法

2022-06-29 08:32:04

游標(biāo)MySQL服務(wù)器

2021-03-03 00:01:30

Redis數(shù)據(jù)結(jié)雙向鏈表

2017-04-17 12:49:43

DockerJava容器

2024-05-10 07:44:23

C#進(jìn)程程序

2024-09-20 08:04:54

2023-12-27 12:12:35

NumPy函數(shù)數(shù)組

2010-11-23 16:56:04

mysql表單

2024-08-06 11:40:57

2019-02-28 10:37:19

開(kāi)源數(shù)據(jù)庫(kù)Oracle
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)