MySQL的唯一插入,增量更新

2021-10-13 10:32:52 字數 3179 閱讀 1990

首先我們先建立乙個使用者表:

drop

table

ifexists

`nb_sys_user`

;create

table

`nb_sys_user`

(`id`

int(11)

unsigned

notnull

auto_increment

,`is_deleted`

char(1

)not

null

default

'n'comment

'是否刪除,n:未刪除,y:刪除'

,`gmt_create`

datetime

notnull

default

'2020-12-30 12:00:00'

comment

'記錄建立時間'

,`gmt_modified`

datetime

notnull

default

'2020-12-30 12:00:00'

comment

'記錄修改時間'

,`user_id`

int(11)

notnull

default

'0'comment

'使用者id'

,`sfzhm`

varchar(18

)not

null

default

''comment

'身份證號碼'

,`real_name`

varchar(20

)not

null

default

''comment

'真實姓名'

,primary

key(

`id`

)using

btree

,key

`idx_user_id`

(`is_deleted`

,`user_id`

)using

btree

)engine

=innodb

auto_increment=1

default

charset

=utf8 row_format=compact comment

='使用者'

;

nb_sys_user表中插入資料:

insert

into

`nb_sys_user`

(`is_deleted`

,`gmt_create`

,`gmt_modified`

,`user_id`

,`sfzhm`

,`real_name`

)values

('n'

,'2020-12-30 12:00:00'

,'2020-12-30 12:00:00',1

,'32092519xx02184513'

,'張三'

);

此時再插入同樣的資料,還是可以成功的。

如果我們想要保持資料的唯一性,就需要先查詢,判斷使用者是否插入,無再進行新增插入操作。

有沒有一步到位的方法呢?答案是,有的。

sfzhm欄位新增唯一鍵約束

alter

table

`nb_sys_user`

addunique

(`sfzhm`

);

因為身份證號碼是唯一,所以自然是可以作為唯一鍵約束。

insert

into

`nb_sys_user`

(`is_deleted`

,`gmt_create`

,`gmt_modified`

,`user_id`

,`sfzhm`

,`real_name`

)values

('n'

,'2020-12-30 12:00:00'

,'2020-12-30 12:00:00',1

,'32092519xx02184513'

,'張三'

);

再執行上面的插入語句,發現插入並不會成功。

1 如果該條資料存在,則實行更新操作

replace

into

`nb_sys_user`

(`is_deleted`

,`gmt_create`

,`gmt_modified`

,`user_id`

,`sfzhm`

,`real_name`

)values

('n'

,'2020-12-30 12:00:00'

,'2020-12-30 12:00:00',1

,'32092519xx02184513'

,'張三三'

);

此時使用者姓名更新為張三三。

1 如果該條資料存在,則實行更新操作,不存在則進行插入操作

insert

into

`nb_sys_user`

(`is_deleted`

,`gmt_create`

,`gmt_modified`

,`user_id`

,`sfzhm`

,`real_name`

)values

('n'

,'2020-12-30 12:00:00'

,'2020-12-30 12:00:00',1

,'32092519xx02184516'

,'李四')on

duplicate

keyupdate

`real_name`

='李四'

;

此時使用者表中新增使用者李四。

MySQL資料庫筆記(十一) 插入 更新和刪除資料

sql語句的分類 先建立t student表 create table t student id int primary key auto increment,name varchar 10 not null,email varchar 30 unique,birthday date 將資料插入到t...

945 使陣列唯一的最小增量

給定整數陣列 a,每次 move 操作將會選擇任意 a i 並將其遞增 1。返回使 a 中的每個值都是唯一的最少操作次數。示例 1 輸入 1,2,2 輸出 1 解釋 經過一次 move 操作,陣列將變為 1,2,3 示例 2 輸入 3,2,1,2,1,7 輸出 6 解釋 經過 6 次 move 操作...

945 使陣列唯一的最小增量

題目描述 解題思路 1 先排序再遍歷 先對陣列進行排序,自帶的排序就可以的。最小的元素肯定是不需要增量的,然後遍歷陣列比較大小,如果後乙個數字與前乙個相等,就把後面那個數字加一。這樣加一後會造成就是已經排好序的陣列,但是後面元素比前乙個小,所以判斷條件的時候要增加 如果a i a i 1 那麼後乙個...