MySQL---事務、函數

来源:https://www.cnblogs.com/horror/archive/2018/08/24/9532218.html
-Advertisement-
Play Games

事務 事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證資料庫數據完整性。 1 delimiter \\ 2 create PROCEDURE p1( 3 OUT p_return_code tinyint 4 ) 5 BEGIN 6 DECLARE ...


事務

事務用於將某些操作的多個SQL作為原子性操作,一旦有某一個出現錯誤,即可回滾到原來的狀態,從而保證資料庫數據完整性。

 1 delimiter \\
 2 create PROCEDURE p1(
 3     OUT p_return_code tinyint
 4 )
 5 BEGIN 
 6   DECLARE exit handler for sqlexception 
 7   BEGIN 
 8     -- ERROR 
 9     set p_return_code = 1; 
10     rollback; 
11   END; 
12  
13   DECLARE exit handler for sqlwarning 
14   BEGIN 
15     -- WARNING 
16     set p_return_code = 2; 
17     rollback; 
18   END; 
19  
20   START TRANSACTION; 
21     DELETE from tb1;
22     insert into tb2(name)values('seven');
23   COMMIT; 
24  
25   -- SUCCESS 
26   set p_return_code = 0; 
27  
28   END\\
29 delimiter ;
支持事務的存儲過程
1 set @i =0;
2 call p1(@i);
3 select @i;

函數

MySQL中提供了許多內置函數,例如:

 1 CHAR_LENGTH(str)
 2         返回值為字元串str 的長度,長度的單位為字元。一個多位元組字元算作一個單字元。
 3         對於一個包含五個二位元組字元集, LENGTH()返回值為 10, 而CHAR_LENGTH()的返回值為5。
 4 
 5     CONCAT(str1,str2,...)
 6         字元串拼接
 7         如有任何一個參數為NULL ,則返回值為 NULL。
 8     CONCAT_WS(separator,str1,str2,...)
 9         字元串拼接(自定義連接符)
10         CONCAT_WS()不會忽略任何空字元串。 (然而會忽略所有的 NULL)。
11 
12     CONV(N,from_base,to_base)
13         進位轉換
14         例如:
15             SELECT CONV('a',16,2); 表示將 a 由16進位轉換為2進位字元串表示
16 
17     FORMAT(X,D)
18         將數字X 的格式寫為'#,###,###.##',以四捨五入的方式保留小數點後 D 位, 並將結果以字元串的形式返回。若  D 為 0, 則返回結果不帶有小數點,或不含小數部分。
19         例如:
20             SELECT FORMAT(12332.1,4); 結果為: '12,332.1000'
21     INSERT(str,pos,len,newstr)
22         在str的指定位置插入字元串
23             pos:要替換位置其實位置
24             len:替換的長度
25             newstr:新字元串
26         特別的:
27             如果pos超過原字元串長度,則返回原字元串
28             如果len超過原字元串長度,則由新字元串完全替換
29     INSTR(str,substr)
30         返回字元串 str 中子字元串的第一個出現位置。
31 
32     LEFT(str,len)
33         返回字元串str 從開始的len位置的子序列字元。
34 
35     LOWER(str)
36         變小寫
37 
38     UPPER(str)
39         變大寫
40 
41     LTRIM(str)
42         返回字元串 str ,其引導空格字元被刪除。
43     RTRIM(str)
44         返回字元串 str ,結尾空格字元被刪去。
45     SUBSTRING(str,pos,len)
46         獲取字元串子序列
47 
48     LOCATE(substr,str,pos)
49         獲取子序列索引位置
50 
51     REPEAT(str,count)
52         返回一個由重覆的字元串str 組成的字元串,字元串str的數目等於count 。
53         若 count <= 0,則返回一個空字元串。
54         若str 或 count 為 NULL,則返回 NULL 。
55     REPLACE(str,from_str,to_str)
56         返回字元串str 以及所有被字元串to_str替代的字元串from_str 。
57     REVERSE(str)
58         返回字元串 str ,順序和字元順序相反。
59     RIGHT(str,len)
60         從字元串str 開始,返回從後邊開始len個字元組成的子序列
61 
62     SPACE(N)
63         返回一個由N空格組成的字元串。
64 
65     SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)
66         不帶有len 參數的格式從字元串str返回一個子字元串,起始於位置 pos。帶有len參數的格式從字元串str返回一個長度同len字元相同的子字元串,起始於位置 pos。 使用 FROM的格式為標準 SQL 語法。也可能對pos使用一個負值。假若這樣,則子字元串的位置起始於字元串結尾的pos 字元,而不是字元串的開頭位置。在以下格式的函數中可以對pos 使用一個負值。
67 
68         mysql> SELECT SUBSTRING('Quadratically',5);
69             -> 'ratically'
70 
71         mysql> SELECT SUBSTRING('foobarbar' FROM 4);
72             -> 'barbar'
73 
74         mysql> SELECT SUBSTRING('Quadratically',5,6);
75             -> 'ratica'
76 
77         mysql> SELECT SUBSTRING('Sakila', -3);
78             -> 'ila'
79 
80         mysql> SELECT SUBSTRING('Sakila', -5, 3);
81             -> 'aki'
82 
83         mysql> SELECT SUBSTRING('Sakila' FROM -4 FOR 2);
84             -> 'ki'
85 
86     TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) TRIM(remstr FROM] str)
87         返回字元串 str , 其中所有remstr 首碼和/或尾碼都已被刪除。若分類符BOTH、LEADIN或TRAILING中沒有一個是給定的,則假設為BOTH 。 remstr 為可選項,在未指定情況下,可刪除空格。
88 
89         mysql> SELECT TRIM('  bar   ');
90                 -> 'bar'
91 
92         mysql> SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');
93                 -> 'barxxx'
94 
95         mysql> SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');
96                 -> 'bar'
97 
98         mysql> SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');
99                 -> 'barx'
部分內置函數

1、自定義函數

 1 delimiter \\
 2 create function f1(
 3     i1 int,
 4     i2 int)
 5 returns int
 6 BEGIN
 7     declare num int;
 8     set num = i1 + i2;
 9     return(num);
10 END \\
11 delimiter ;
View Code

2、刪除函數

1 drop function func_name;

3、執行函數

1 # 獲取返回值
2 declare @i VARCHAR(32);
3 select UPPER('alex') into @i;
4 SELECT @i;
5 
6 
7 # 在查詢中使用
8 select f1(11,nid) ,name from tb2;
View Code

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如果我們使用**war** 包進行部署項目的時候,需要把包放進Tomcat的目錄下,為了使我們的服務能夠在伺服器重啟的時候自動啟動起來,我們需要把Tomcat設置成自起服務。## 配置 Tomcat 服務新建服務腳本```[root@localhost ~]# vim /etc/init.d/tom... ...
  • 這裡使用樹莓派來操作sg90的舵機。先看一下這個舵機的樣子: 這就是傳說中的SG90舵機啦,轉角是0~180. SG90舵機接線: SG90舵機有三條線:黃線,紅線和灰(還是黑?)線。 這三條線的作用是:紅線VCC,灰線GND,黃線控制線。所以我們這裡主要是操控黃線來控制舵機。 然後這裡有個非常非常 ...
  • 一、通過命令行查找埠被誰占用 1、window+R組合鍵,調出命令視窗 2、輸入命令:netstat -ano,列出所有埠的情況。在列表中我們觀察被占用的埠 3、查看被占用埠對應的PID,輸入命令:netstat -aon | findstr 9090,回車,記錄最後一位數字,即PID,這裡 ...
  • 1、環境 VMware 14.1.1 虛擬系統:Windows Server 2008 32位 2、解決辦法 打開虛擬網路編輯器 有紅框中的提示出現時,就點擊更改設置 點擊橋接模式,在VMnet信息中選擇橋接到的網卡,選擇主機當前連接到網路使用的網卡即可 ...
  • 1.ls [選項] [目錄名 | 列出相關目錄下的所有目錄和文件 -a 列出包括.a開頭的隱藏文件的所有文件 -A 通-a,但不列出"."和".." -l 列出文件的詳細信息 -c 根據ctime排序顯示 -t 根據文件修改時間排序 color[=WHEN] 用色彩辨別文件類型 WHEN 可以是'n ...
  • 首先來看一下這個測距模塊長什麼樣子: 就是HC-SR04模塊。 這個模塊有四個引腳,分別是Vcc(高電平),GND(低電平),Trig(觸發測距)以及Echo(返回測距結果)。 那麼這個模塊怎麼使用呢,資料上的說明是這樣的: 首先給出時序圖: 從上面的步驟可以看出,我們只需要測量Echo腳為高電平的 ...
  • 索引,是資料庫中專門用於幫助用戶快速查詢數據的一種數據結構。類似於字典中的目錄,查找字典內容時可以根據目錄查找到數據的存放位置,然後直接獲取即可。 以 B-tree 形式存儲: MySQL中常見索引有: 普通索引 唯一索引 主鍵索引 組合索引 1、普通索引 普通索引僅有一個功能:加速查詢 1 cre ...
  • 今年6月畢業,來到公司前前後後各種事情折騰下來,8月中旬才入職。本以為終於可以靜下心來研究技術了,但是又把我分配到了一個幾乎不做技術的解決方案部門,導致現在寫代碼的時間都幾乎沒有了,所以只能在每天下班後留在公司研究一下自己喜歡的技術,搞得特別晚才回,身心俱疲。 唉~以前天天寫代碼時覺得苦逼,現在沒得 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...