首先我們先建立乙個使用者表:
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 那麼後乙個...