日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

insert语句让我学会的两个MySQL函数

發(fā)布時間:2023/11/27 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 insert语句让我学会的两个MySQL函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們要保存數(shù)據(jù)到數(shù)據(jù)庫,插入數(shù)據(jù)是必須的,但是在業(yè)務(wù)中可能會出于某種業(yè)務(wù)要求,要在數(shù)據(jù)庫中設(shè)計(jì)唯一索引;這時如果不小心插入一條業(yè)務(wù)上已經(jīng)存在同樣key的數(shù)據(jù)時,就會出現(xiàn)異常。

大部分的需求要求我們出現(xiàn)唯一鍵沖突時就更新這條數(shù)據(jù),這時我們就可以用下面這條MySQL語句了:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE][INTO] tbl_name[PARTITION (partition_name [, partition_name] ...)][(col_name [, col_name] ...)]{VALUES | VALUE} (value_list) [, (value_list)] ...[ON DUPLICATE KEY UPDATE assignment_list]

這個就是MySQL官方的INSERT ... ON DUPLICATE KEY UPDATE語句語法

對于上面的?assignment_list?我們常常這樣寫:(假設(shè)a所在列是數(shù)據(jù)庫中的唯一主鍵)

INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATEb=b,c=c;

但是在業(yè)務(wù)上,對于b和c列的值并不是所有的數(shù)值都是需要更新到數(shù)據(jù)庫里的,比如說:b列不能為null,為空就不更,c列不能小于0,小于0時就不更新,那么上面的語句我們就必須改改了:

INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATEb= IF(VALUES(b), VALUES(b), b),c= IF(VALUES(c) > 0, VALUES(c), c);

我這次要說的就是這兩個函數(shù)if和values

下面就看官網(wǎng)怎么說了:

In an?INSERT ... ON DUPLICATE KEY UPDATE?statement, you can use the?VALUES(col_name)?function in the?UPDATEclause to refer to column values from the?INSERT?portion of the statement. In other words,?VALUES(col_name)?in the?UPDATE?clause refers to the value of?col_name?that would be inserted, had no duplicate-key conflict occurred. This function is especially useful in multiple-row inserts. The?VALUES()?function is meaningful only in the?ON DUPLICATE KEY UPDATE?clause of?INSERT?statements and returns?NULL

If?expr1?is?TRUE?(expr1?<> 0?and?expr1?<> NULL),?IF()?returns?expr2. Otherwise, it returns?expr3.

對于if函數(shù)來說,就是根據(jù)條件二選一了,沒啥可說的,

對于values函數(shù)來說,只有在on duplicate key update語句里才有意義,而且返回值,是你要插入的數(shù)值,而不是已經(jīng)在數(shù)據(jù)庫里的數(shù)值。

隨便發(fā)現(xiàn)了南洋理工的sql教程,很贊:https://www.ntu.edu.sg/home/ehchua/programming/sql/MySQL_Beginner.html

參考

insert語法

if函數(shù)

values函數(shù)

轉(zhuǎn)載于:https://www.cnblogs.com/halu126/p/8024379.html

總結(jié)

以上是生活随笔為你收集整理的insert语句让我学会的两个MySQL函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。