亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2023年05月13日 11:53:58   作者:testresultstomorrow  
MySQL提供了各種特殊函數(shù),它們可以幫助管理者查詢(xún)復(fù)雜的數(shù)據(jù),資料庫(kù)包括字符串函數(shù),數(shù)學(xué)函數(shù),日期函數(shù),程序函數(shù)等,下面這篇文章主要給大家介紹了關(guān)于MySQL特殊函數(shù)使用技巧的相關(guā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`;

整合上面兩條命令

create table order_2022121820select * from `order`;

總結(jié)

到此這篇關(guān)于MySQL特殊函數(shù)使用技巧梳理的文章就介紹到這了,更多相關(guān)MySQL特殊函數(shù)技巧內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用

    mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用

    本文主要介紹了mysql中Update未加索引導(dǎo)致的微服務(wù)模塊不可用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java連接MySql的詳細(xì)介紹

    Java連接MySql的詳細(xì)介紹

    本篇文章主要是對(duì)Java連接MySql的詳細(xì)介紹。需要的朋友參考下
    2013-04-04
  • Mysql用戶(hù)權(quán)限分配實(shí)戰(zhàn)項(xiàng)目詳解

    Mysql用戶(hù)權(quán)限分配實(shí)戰(zhàn)項(xiàng)目詳解

    用戶(hù)是數(shù)據(jù)庫(kù)的使用者和管理者,MySQL通過(guò)用戶(hù)的設(shè)置來(lái)控制數(shù)據(jù)庫(kù)操作人員的訪問(wèn)與操作范圍,這篇文章主要給大家介紹了關(guān)于Mysql用戶(hù)權(quán)限分配實(shí)戰(zhàn)項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • Linux下修改MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)文件路徑的步驟

    Linux下修改MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)文件路徑的步驟

    這篇文章主要介紹了Linux下修改MySQL數(shù)據(jù)庫(kù)數(shù)據(jù)文件路徑的步驟,本文分步驟給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 總結(jié)12個(gè)MySQL慢查詢(xún)的原因分析

    總結(jié)12個(gè)MySQL慢查詢(xún)的原因分析

    這篇文章主要介紹了總結(jié)12個(gè)MySQL慢查詢(xún)的原因分析,慢查詢(xún),都是因?yàn)闆](méi)有加索引。如果沒(méi)有加索引的話,會(huì)導(dǎo)致全表掃描的,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-08-08
  • 關(guān)于避免MySQL替換邏輯SQL的坑爹操作詳解

    關(guān)于避免MySQL替換邏輯SQL的坑爹操作詳解

    這篇文章主要給大家介紹了關(guān)于避免MySQL替換邏輯SQL的坑爹操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 解決MySQL5.7安裝后沒(méi)有data文件夾無(wú)法登錄的問(wèn)題

    解決MySQL5.7安裝后沒(méi)有data文件夾無(wú)法登錄的問(wèn)題

    這篇文章主要介紹了解決MySQL5.7安裝后沒(méi)有data文件夾無(wú)法登錄的問(wèn)題,需要的朋友可以參考下
    2016-04-04
  • mysql如何實(shí)現(xiàn)最大連接數(shù)

    mysql如何實(shí)現(xiàn)最大連接數(shù)

    云服務(wù)器同時(shí)最大連接數(shù),也就是說(shuō)可以有一千個(gè)用戶(hù),那么mysql如何實(shí)現(xiàn)最大連接數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • MySQL日志管理和備份與恢復(fù)

    MySQL日志管理和備份與恢復(fù)

    這篇文章主要介紹了MySQL如何實(shí)現(xiàn)日志的管理,備份與恢復(fù),本文有一定的參考價(jià)值,感興趣的小伙伴可以參考閱讀
    2023-04-04
  • Mysql大數(shù)據(jù)量查詢(xún)優(yōu)化思路詳析

    Mysql大數(shù)據(jù)量查詢(xún)優(yōu)化思路詳析

    這篇文章主要介紹了Mysql大數(shù)據(jù)量查詢(xún)優(yōu)化思路,Mysql大表查詢(xún)優(yōu)化,理論上千萬(wàn)級(jí)別以下的數(shù)據(jù)量Mysql單表查詢(xún)性能處理都是可以的。下文我們就來(lái)看看具體得思路解析
    2022-01-01

最新評(píng)論