最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

1. group_concat

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

2. char_length

通過該函數(shù)就能獲取字符長度。

3.locate

在某個字符串中的位置

4.replace

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

5.now

獲取當(dāng)前時間

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 語句也能正常執(zhí)行,并不會報錯。因?yàn)樗鼤雎援惓?,返回的?zhí)行結(jié)果影響行數(shù)為 0,它不會重復(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;

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

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

9.on duplicate key update

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

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

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

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

這種情況可以使用on duplicate key update語法。

該語法會在插入數(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);

這樣一條語句就能輕松搞定需求,既不會產(chǎn)生重復(fù)數(shù)據(jù),也能更新最新的數(shù)據(jù)。

但需要注意的是,在高并發(fā)的場景下使用on duplicate key update語法,可能會存在死鎖的問題,所以要根據(jù)實(shí)際情況酌情使用。

10.show create table

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

desc `order`;

查看索引信息

show index

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

show create table
show create table `order`;

11.create table … select

有時候,我們需要快速備份表。

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

創(chuàng)建一張臨時表

將數(shù)據(jù)插入臨時表

創(chuàng)建臨時表

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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql時間戳格式化yyyy-mm-dd的使用

    mysql時間戳格式化yyyy-mm-dd的使用

    在數(shù)據(jù)庫操作中,時間戳的格式化是一項(xiàng)基礎(chǔ)且常用的技能,MySQL提供了靈活的時間戳格式化方法,本文就來介紹一下mysql時間戳格式化yyyy-mm-dd的使用,感興趣的可以了解一下
    2024-10-10
  • Mysql字符串類型如何通過order by排序的正確方式

    Mysql字符串類型如何通過order by排序的正確方式

    這篇文章主要介紹了Mysql字符串類型如何通過order by排序的正確方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MySQL中select...for update鎖表

    MySQL中select...for update鎖表

    select…for update在MySQL中,是一種悲觀鎖的用法,一般情況下,會鎖住一行數(shù)據(jù),但如果沒有使用正確的話,也會把整張表鎖住,本文就來介紹一下,感興趣的可以了解一下
    2023-10-10
  • MySQL 表空間碎片的概念及相關(guān)問題解決

    MySQL 表空間碎片的概念及相關(guān)問題解決

    這篇文章主要介紹了MySQL 表空間碎片的概念及相關(guān)問題解決,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-05-05
  • Windows中MySQL數(shù)據(jù)庫下載以及安裝教程(最最新版)

    Windows中MySQL數(shù)據(jù)庫下載以及安裝教程(最最新版)

    這篇文章主要給大家介紹了關(guān)于Windows中MySQL數(shù)據(jù)庫下載以及安裝的相關(guān)資料,很多朋友剛開始接觸mysql數(shù)據(jù)庫服務(wù)器,對安裝使用教程不太明白,這里給大家總結(jié)下,需要的朋友可以參考下
    2023-09-09
  • mysql 獲取今天、昨天0點(diǎn)時間戳的實(shí)例

    mysql 獲取今天、昨天0點(diǎn)時間戳的實(shí)例

    今天小編就為大家分享一篇mysql 獲取今天、昨天0點(diǎn)時間戳的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • MySQL事務(wù)的四大特性以及并發(fā)事務(wù)問題解讀

    MySQL事務(wù)的四大特性以及并發(fā)事務(wù)問題解讀

    這篇文章主要介紹了MySQL事務(wù)的四大特性以及并發(fā)事務(wù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • MySQL DEFINER具體使用詳解

    MySQL DEFINER具體使用詳解

    在 MySQL 數(shù)據(jù)庫中,在創(chuàng)建視圖及函數(shù)的時候,你有注意過 definer 選項(xiàng)嗎?本篇文章主要介紹下 MySQL 中 definer 的含義及作用,感興趣的可以了解一下
    2021-08-08
  • MySQL如何修改密碼過期時間

    MySQL如何修改密碼過期時間

    MySQL修改密碼過期時間的方法,包括修改my.ini文件、設(shè)置賬號過期時間、查看過期時間和賬號狀態(tài),并在修改后重啟服務(wù)和密碼
    2025-02-02
  • mysql快速添加百萬條記錄的語句

    mysql快速添加百萬條記錄的語句

    本文介紹一下關(guān)于MySQL使用INSERT SELECT批量插入數(shù)據(jù)的方法
    2013-11-11

最新評論

宽甸| 南阳市| 韶山市| 博野县| 漾濞| 汉阴县| 嘉黎县| 会昌县| 甘孜县| 卫辉市| 阿合奇县| 菏泽市| 龙门县| 巴楚县| 行唐县| 南通市| 旬邑县| 井陉县| 准格尔旗| 连州市| 揭阳市| 汨罗市| 南召县| 阜宁县| 淳安县| 五大连池市| 麦盖提县| 同仁县| 齐河县| 东阳市| 且末县| 共和县| 桃江县| 乌兰浩特市| 郓城县| 徐水县| 新蔡县| 嘉定区| 扎囊县| 鄂伦春自治旗| 南阳市|