国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL特殊函數(shù)使用技巧

這篇具有很好參考價(jià)值的文章主要介紹了MySQL特殊函數(shù)使用技巧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. group_concat

使用group_concat函數(shù),可以輕松的把分組后,name 相同的數(shù)據(jù)拼接到一起,組成一個(gè)字符串,用逗號(hào)分隔。

2. char_length

通過(guò)該函數(shù)就能獲取字符長(zhǎng)度。

3.locate

在某個(gè)字符串中的位置

4.replace

將字符串中的字符 A 替換成 B。REPLACE(name,‘A’,‘B’)

5.now

獲取當(dāng)前時(shí)間

6.insert into … select

INSERT INTO `brand`(`id`, `code`, `name`, `edit_date`)
select null,code,name,now(3) from `order` where code in ('004','005');

這樣就能將 order 表中的部分?jǐn)?shù)據(jù),非常輕松插入到 brand 表中。

7.insert into … ignore

INSERT ignore INTO `brand`(`id`, `code`, `name`, `edit_date`)
VALUES (123, '108', '蘇三', now(3));

如果 brand 表中已經(jīng)存在 name 為蘇三的數(shù)據(jù)了,則該 sql 語(yǔ)句也能正常執(zhí)行,并不會(huì)報(bào)錯(cuò)。因?yàn)樗鼤?huì)忽略異常,返回的執(zhí)行結(jié)果影響行數(shù)為 0,它不會(huì)重復(fù)插入數(shù)據(jù)。

8.select … for update

begin;
select * from `user` where id=1
for update;

//業(yè)務(wù)邏輯處理

update `user` set score=score-1 where id=1;
commit;

這樣在一個(gè)事務(wù)中使用for update鎖住一行記錄,其他事務(wù)就不能在該事務(wù)提交之前,去更新那一行的數(shù)據(jù)。

需要注意的是 for update 前的 id 條件,必須是表的主鍵或者唯一索引,不然行鎖可能會(huì)失效,有可能變成表鎖

9.on duplicate key update

通常情況下,我們?cè)诓迦霐?shù)據(jù)之前,一般會(huì)先查詢(xún)一下,該數(shù)據(jù)是否存在。如果不存在,則插入數(shù)據(jù)。如果已存在,則不插入數(shù)據(jù),而直接返回結(jié)果。

在沒(méi)啥并發(fā)量的場(chǎng)景中,這種做法是沒(méi)有什么問(wèn)題的。但如果插入數(shù)據(jù)的請(qǐng)求,有一定的并發(fā)量,這種做法就可能會(huì)產(chǎn)生重復(fù)的數(shù)據(jù)。

當(dāng)然防止重復(fù)數(shù)據(jù)的做法很多,比如:加唯一索引、加分布式鎖等。

但這些方案,都沒(méi)法做到讓第二次請(qǐng)求也更新數(shù)據(jù),它們一般會(huì)判斷已經(jīng)存在就直接返回了。

這種情況可以使用on duplicate key update語(yǔ)法。

該語(yǔ)法會(huì)在插入數(shù)據(jù)之前判斷,如果主鍵或唯一索引不存在,則插入數(shù)據(jù)。如果主鍵或唯一索引存在,則執(zhí)行更新操作。

INSERT  INTO `brand`(`id`, `code`, `name`, `edit_date`)
VALUES (123, '108', '蘇三', now(3))
on duplicate key update name='蘇三',edit_date=now(3);

這樣一條語(yǔ)句就能輕松搞定需求,既不會(huì)產(chǎn)生重復(fù)數(shù)據(jù),也能更新最新的數(shù)據(jù)。
但需要注意的是,在高并發(fā)的場(chǎng)景下使用on duplicate key update語(yǔ)法,可能會(huì)存在死鎖的問(wèn)題,所以要根據(jù)實(shí)際情況酌情使用。

10.show create table

有時(shí)候,我們想快速查看某張表的字段情況,通常會(huì)使用desc命令

desc `order`;

查看索引信息

show index

我們能夠看到非常完整的建表語(yǔ)句,表名、字段名、字段類(lèi)型、字段長(zhǎng)度、字符集、主鍵、索引、執(zhí)行引擎等都能看到

show create table
show create table `order`;

11.create table … select

有時(shí)候,我們需要快速備份表。

通常情況下,可以分兩步走:

創(chuàng)建一張臨時(shí)表
將數(shù)據(jù)插入臨時(shí)表
創(chuàng)建臨時(shí)表

create table order_2022121819 like `order`;

將 order 表的數(shù)據(jù)插入到 order_2022121819 表中,也就是實(shí)現(xiàn)數(shù)據(jù)備份的功能。

insert into order_2022121819 select * from `order`;

整合上面兩條命令文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441422.html

create table order_2022121820
select * from `order`;

到了這里,關(guān)于MySQL特殊函數(shù)使用技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • SQL Server實(shí)現(xiàn)group_concat函數(shù)

    SQL Server實(shí)現(xiàn)group_concat函數(shù)

    情景:每個(gè)人有多張銀行卡,現(xiàn)在需統(tǒng)計(jì)出每個(gè)人的銀行卡并展示成一行,表單如下: 實(shí)現(xiàn)sql: group_concat() 函數(shù)將組中的字符串連接成為具有各種選項(xiàng)的單個(gè)字符串。 separator 指定在組中的值之間插入的文字值,默認(rèn) \\\' , \\\' 2.1 FOR XML PATH(\\\'\\\')函數(shù),使結(jié)果集轉(zhuǎn)為XML文檔形式 2.2 轉(zhuǎn)換

    2024年02月17日
    瀏覽(16)
  • MATLAB Cell函數(shù)使用技巧

    MATLAB Cell 函數(shù)使用技巧 談?wù)凪ATLAB中cell函數(shù) 如果p為一個(gè)數(shù),那么h(1)=p,是沒(méi)有問(wèn)題的。 如果p為一個(gè)向量,那么h(1,:)=p是沒(méi)有問(wèn)題的。 如果p是一個(gè)矩陣的話(huà),上面的兩種賦值方法都是會(huì)有錯(cuò)誤的。 那么要如何處理呢? 這時(shí)就用到了cell數(shù)據(jù)類(lèi)型了。cell的每個(gè)單元都可以存儲(chǔ)任

    2024年02月08日
    瀏覽(26)
  • MySql中g(shù)roup_concat字符長(zhǎng)度限制

    group_concat長(zhǎng)度限制默認(rèn)是1024,有兩個(gè)解決方法: 1. 徹底修改,找到MYSQL的配置文件my.ini或者my.cnf,在里面添加以下信息 group_concat_max_len = -1 ?# -1為最大值或填入你要的最大長(zhǎng)度 或者自己設(shè)置group_concat_max_len = 1024000。 注意:需要重啟MySQL才能生效。 2. 在客戶(hù)端連上mysql,執(zhí)行語(yǔ)

    2024年04月28日
    瀏覽(25)
  • 一個(gè)mysql的group_concat導(dǎo)致的問(wèn)題

    一個(gè)mysql的group_concat導(dǎo)致的問(wèn)題

    好久都沒(méi)有寫(xiě)點(diǎn)東西了,是時(shí)候有點(diǎn)寫(xiě)東西的必要了。 去年下年底離職了,躺了幾個(gè)月,最近又兜兜轉(zhuǎn)轉(zhuǎn)換了一家公司繼續(xù)當(dāng)牛馬了,前段時(shí)間八股文背了好多,難受呀,不過(guò)我也趁著前段時(shí)間自己也整理了屬于我自己的八股文,有好幾萬(wàn)字吧,哈哈哈,以后就不用到處去找

    2024年02月06日
    瀏覽(27)
  • mysql的group_concat字段的長(zhǎng)度限制

    在使用group_concat進(jìn)行數(shù)據(jù)分組查詢(xún)的時(shí)候會(huì)出現(xiàn)數(shù)據(jù)只出現(xiàn)一部分的狀況,這種是因?yàn)間roup_concat這個(gè)字段的字符長(zhǎng)度不夠,在信息超高這個(gè)長(zhǎng)度的時(shí)候會(huì)自動(dòng)的截取,如果想要解決這個(gè)問(wèn)題的話(huà)需要進(jìn)行額外的設(shè)置 修改mysql配置文件my.ini ,默認(rèn)情況下是沒(méi)有g(shù)roup concat max len項(xiàng)

    2024年02月13日
    瀏覽(19)
  • SQL使用技巧(6)HIVE開(kāi)窗函數(shù)

    SQL使用技巧(6)HIVE開(kāi)窗函數(shù)

    開(kāi)窗函數(shù)的使用鐵律:不要濫用 先想明白自己要實(shí)現(xiàn)什么樣的功能,然后再去實(shí)踐。沒(méi)有目的的嘗試段不可取,會(huì)難以理解各開(kāi)窗函數(shù)的真正用法。 如果沒(méi)有現(xiàn)成可用HIVE庫(kù),可以參見(jiàn)本人 大數(shù)據(jù)單機(jī)學(xué)習(xí)環(huán)境搭建 系列文章。 1.1Hive建表 1.2數(shù)據(jù)準(zhǔn)備 1.3保存為HDFS文件 1.4驗(yàn)證

    2024年02月08日
    瀏覽(25)
  • SQL使用技巧(4.1)Hive日期時(shí)間函數(shù)

    SQL使用技巧(4.1)Hive日期時(shí)間函數(shù)

    常用的格式化(format)標(biāo)識(shí)符: 本章節(jié)每一行代碼后都有運(yùn)算說(shuō)明和執(zhí)行結(jié)果樣例,例如 - - 返回當(dāng)前系統(tǒng)日期 yyyy-MM-dd, 【2023-04-01】 原生hive中不支持 now() 的寫(xiě)法,經(jīng)過(guò)加工的工具(TDWTDH)可能支持,不絕對(duì)。 unix_timestamp() 也會(huì)返回一個(gè)時(shí)間戳,但并不是系統(tǒng)當(dāng)前時(shí)間的時(shí)間

    2024年02月12日
    瀏覽(20)
  • mysql~GROUP_CONCAT實(shí)現(xiàn)關(guān)系表的行轉(zhuǎn)列

    mysql~GROUP_CONCAT實(shí)現(xiàn)關(guān)系表的行轉(zhuǎn)列

    GROUP_CONCAT 是 MySQL 中用于將查詢(xún)結(jié)果集中的多行數(shù)據(jù)合并為單個(gè)字符串的聚合函數(shù)。它將每行數(shù)據(jù)的指定字段值連接起來(lái),并以指定的分隔符分隔,最終返回一個(gè)包含所有值的字符串。 以下是 GROUP_CONCAT 函數(shù)的一般語(yǔ)法: column_name:要連接的字段名。 SEPARATOR:可選參數(shù),用于

    2024年04月12日
    瀏覽(21)
  • 使用指針或引用作為函數(shù)參數(shù)的編程技巧

    空指針檢查: 使用指針允許在函數(shù)內(nèi)部檢查傳遞的指針是否為 nullptr 。這使得在函數(shù)內(nèi)部能夠處理空指針的情況,增加代碼的健壯性。如果使用引用,無(wú)法表示空值,而使用指針則可以通過(guò)傳遞 nullptr 來(lái)表示缺失的數(shù)據(jù)。

    2024年02月16日
    瀏覽(21)
  • C#析構(gòu)函數(shù)解析:資源管理的精要和使用技巧

    C#析構(gòu)函數(shù)解析:資源管理的精要和使用技巧

    ? 在C#中,析構(gòu)函數(shù)(Destructor)是一個(gè)特殊的方法,用于清理對(duì)象占用的資源。它是由垃圾回收器在對(duì)象被銷(xiāo)毀時(shí)自動(dòng)調(diào)用的。析構(gòu)函數(shù)的原理是在對(duì)象即將被回收時(shí)執(zhí)行一些清理操作,例如釋放非托管資源或執(zhí)行一些對(duì)象銷(xiāo)毀前的必要操作。 調(diào)用時(shí)機(jī): ?當(dāng)對(duì)象被垃圾回收

    2024年01月24日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包