數據庫原理及應用_數據庫基礎_第3章數據庫編程_常用系統函數

前言

? ? ? ? "<數據庫原理及應用>(MySQL版)".以下稱為"本書"中3.1.2節內容

引入

? ? ? ? 數據庫常用系統函數的分析.上一篇帖子分析了,數據庫函數需要看看能否被C語言函數替代

1.字符串函數

1)計算字符串字符數的函數和字符串長度的函數

語法:

? ? ? ? CHAR_LENGTH(str);? ? ? ? //計算字符個數

? ? ? ? LENGTH(str);? ? ? ? ? ? ? ? ? ? //返回字符串字節長度

代碼如下(相比起例3-10有一點修改)

SET @name='china';
SELECT CHAR_LENGTH(@name) 字符數,LENGTH(@name) 字符長度;

運行結果

實用性分析:C語言中有計算字符串長度的函數(沒有自己寫一個也行,問題不大)

2)合并字符串函數

語法:

? ? ? ? CONCAT(str1,str2....);? ? ? ? //返回連接參數產生的字符串,如果有NULL,返回NULL

代碼如下

SELECT CONCAT('MySQL版本:',@@version) 版本信息;

運行結果

實用性分析:C語言中有strcat函數處理字符串連接(兩個函數名都有cat).

3)字符串大小寫轉換函數

在C語言中也有大小寫轉換函數.

????????試想他的應用場景:如果數據庫中已確定所有該字段的符號是大寫或者小寫,那么可以在傳入的時候先行用C語言函數處理,這種情況下可以不看這個函數,因為在傳入之前可以先處理.同理如果返回值全部大寫或小寫,也可以用C語言處理.

4)刪除空格函數

=============================內容分割線↓===================================

以下代碼有問題待查

筆者嘗試給出幾個刪除空格函數的C語言定義

1.刪除前導空格

/*刪除前導空格*/
char* remove_leading_spaces(char* original){char *tmp=original;while(*tmp=" "){    tmp++;original++;}while(*tmp!='\0')*tmp++=*original++;*tmp='\0';return tmp;
}

2.刪除尾部空格

/*刪除尾部空格*/
char* remove_trailing_spaces(char* original){char *tmp=original;int length=0;while(*tmp!='\0'){length++;tmp++;}while(*tmp=' '){tmp--;length--;}for(int i=0;i<length;i++)*tmp++=*original++;  return tmp;
}

不知道什么原因,編譯通過了顯示結果有問題,所以待查.

以此也說明學了的東西要經常看和使用,不然會生疏.

=============================內容分割線↑===================================

3.刪除前導和尾部空格

? ? ? ? 調用函數1和2即可.

說明:刪除空格的應用場景和上面一樣,基本上可以不用.

5)取子串函數

本書P76例3-14的改寫命令需注意

2.數學函數

包括取絕對值等函數在里面,按照原則來說,用外層宿主語言來處理更好,所以沒有什么必要看

3.日期和時間函數

????????在C語言標準庫里有個time.h的頭文件,里邊也有類似處理系統時間的函數,雖然用得不多(可能有的人都沒聽說過),但確實可以替代數據庫的日期和時間函數.

4.系統信息函數

? ? ? ? 這些函數由于和MySQL數據庫有關,所以在必要的情況下使用.

嵌套SQL的程序模型

? ? ? ? 在高級語言如C/C++中,使用的是"數據類型(數據結構)+函數定義"建立文件,主程序調用文件里的函數---這一整體思路來編寫程序.現在多了數據庫的操作.而操作數據庫的語言SQL有個特點:就一個執行語句.如何將高級語言的程序思路繼續放到引入數據的程序中呢?

? ? ? ? 外層函數傳入參數給語句,語句封裝SQL函數(或過程).數據返回到宿主語言的某個數據類型中.

? ? ? ? 如圖所示:

????????? ??????

? ? ? ? 從根本上講,SQL是要取得數據庫的數據,至于取得的數據由SQL語言處理,還是交給宿主語言處理,這是數據庫設計者決定的.筆者個人看法是所有的數據處理都由宿主語言處理.因為數據庫要考慮多人使用,盡可能占用最小的空間,最大可能提高交互的速度,筆者想到的原因很簡單:如果定義了數據庫函數,豈不是會讓數據庫的性能下降?---當然也僅屬于個人看法.

小結

? ? ? ? 數據庫常用系統函數的分析,嵌套SQL的程序模型分析

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/920623.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/920623.shtml
英文地址,請注明出處:http://en.pswp.cn/news/920623.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

回歸問題的損失函數

簡單來說&#xff0c;?在回歸問題中&#xff0c;最常用的損失函數是均方誤差&#xff08;MSE, Mean Squared Error&#xff09;和平均絕對誤差&#xff08;MAE, Mean Absolute Error&#xff09;?。它們衡量的都是模型預測值&#xff08;?&#xff09;與真實值&#xff08;y…

吳恩達機器學習(四)

一、神經網絡神經元模擬邏輯單元&#xff1a;神經網絡簡單模型&#xff1a;神經網絡中的前向傳播過程&#xff1a;依次計算激活項&#xff0c;從輸入層到隱藏層再到輸出層的過程。樣例&#xff1a;多元分類&#xff1a;

【重學 MySQL】九十三、MySQL的字符集的修改與底層原理詳解

【重學 MySQL】九十三、MySQL的字符集的修改與底層原理詳解一、字符集修改方法1. **配置文件修改**2. **SQL命令修改**3. **數據遷移方案**二、底層原理與注意事項1. **字符集與排序規則**2. **存儲與性能影響**3. **數據一致性風險**三、常見問題解決1. **亂碼問題**2. **性能…

pdf 轉圖片工具實現

一、安裝 sudo yum install poppler-utils pdftoppm -v pdftoppm -png -r 300 a.pdf /tmp/page 運行效果&#xff1a; PDF轉圖片工具 - 在線PDF轉PNG/JPG/TIFF轉換器 | 免費在線工具 后臺實現&#xff1a; using System.Diagnostics; using System.IO.Compression;namespac…

Zynq開發實踐(FPGA之輸入、輸出整合)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】fpga開發的時候習慣上先把功能拆分成若干個模塊。針對這些模塊&#xff0c;一個一、個實現好之后&#xff0c;再用wire連接即可。這一點有點像軟件編…

【Linux基礎】深入理解計算機啟動原理:MBR主引導記錄詳解

目錄 引言 1 硬盤分區初始化概述 1.1 為什么需要硬盤分區 1.2 硬盤分區格式的發展 1.3 分區初始化的基本流程 2 MBR詳解 2.1 MBR的定義與位置 2.2 MBR的結構詳解 2.3 分區表結構詳解 2.4 MBR的工作原理 2.5 MBR的引導程序 3 MBR的局限性 3.1 硬盤容量限制 3.2 分…

Linux 線程同步

線程同步 由于線程共享內存&#xff0c;訪問共享數據&#xff08;全局變量、堆內存&#xff09;必須進行同步&#xff0c;以防止競態條件&#xff08;Race Conditions&#xff09;導致數據不一致或程序崩潰。 子線程沒有獨立的地址空間&#xff0c;數據通常是共享的&#xff1b…

世界模型的典型框架與分類

1.概述 人類和動物智能的一個重要方面是我們對世界的內部模型。我們使用這個模型來預測我們的行為將如何影響我們的環境&#xff0c;預測未來的事件&#xff0c;并計劃復雜的行動序列以實現目標。當前大多數機器學習研究都集中在被動理解數據的模型上&#xff0c;例如圖像分類…

【Day 35】Linux-Mysql錯誤總結

&#xff08;一&#xff09;MySQL 基礎操作與服務故障類 連接層錯誤&#xff08;客戶端與服務器的連接建立失敗&#xff09; 解決 socket 路徑、文件存在性及服務可用性問題。 1、MySQL 客戶端連接失敗&#xff08;報錯 “Cant connect to local MySQL server throgh socket…

MYSQL速通(2/5)

六、多表查詢1、多表關系①、一對多&#xff08;多對一&#xff09;舉例&#xff1a;一個部門對多個員工實現&#xff1a;多的那邊建立外鍵&#xff0c;指向一的那邊的主鍵②、多對多舉例&#xff1a;一個學生可選多門課&#xff0c;一門課可被多個學生選實現&#xff1a;建立中…

CRM、ERP、HRP系統有啥區別?

要理解CRM、ERP、HRP系統&#xff0c;需先明確三者的核心定位&#xff08;聚焦客戶、企業全資源、特定領域資源&#xff09;&#xff0c;再從管理范圍、目標、用戶等維度區分。以下是詳細解析&#xff1a; 一、各系統核心定義與核心模塊 1. CRM系統&#xff1a;客戶關系管理系統…

【系統分析師】高分論文:論系統測試技術及應用

【摘要】 2022 年 7月&#xff0c;我作為項目負貴人&#xff0c;參加了某銀行的統計數據發布系統建設項目。該項目合同金額230 萬元&#xff0c;合同工期為半年。統計數據發布系統的主要目標是為該行建設一個企業級的數據統計、分析、發布平臺&#xff0c;實現定制化的數據應用…

第5篇 c++ 函數的多返回值實現-返回多個值

c 函數的多返回值實現std::tuple<Mat, int, double, std::string> AuatoPafackSydstem::GetMatchingValue(Mat mat_img, std::string img_template_path) {Mat a;return {a,1,0.001,""}; }std::tuple<Mat, int, double, std::string> GetMatchingValue(M…

C++基礎(⑤刪除鏈表中的重復節點(鏈表 + 遍歷))

題目描述 給定一個排序好的鏈表&#xff08;升序&#xff09;&#xff0c;刪除所有重復的元素&#xff0c;使每個元素只出現一次。 示例&#xff1a; 輸入&#xff1a;1 → 1 → 2 → 3 → 3 輸出&#xff1a;1 → 2 → 3 解題思路 核心觀察&#xff1a;鏈表已排序&#xff0c;…

摩搭api 實現

AI圖片生成器前端實現詳解本文詳細解析一個功能完整的AI圖片生成器前端實現&#xff0c;包含主題切換、參數配置、圖片生成與預覽等核心功能。項目概述 這是一個基于ModelScope平臺的AI圖片生成器前端實現&#xff0c;用戶可以通過輸入提示詞、選擇模型和調整參數來生成高質量圖…

c++--線程休眠/sleep

線程休眠<unistd.h>--sleep()<thread>--std::this_thread::sleep_for()ros--rclcpp::sleep_for()以上的三個sleep也就是休眠會占用CPU嗎簡單直接的回答是&#xff1a;不會。一個正確使用、正在休眠的線程不會占用CPU資源。核心原理當你調用像 std::this_thread::sl…

人工智能基礎概念

The brain happens to be a meat machine. —— Marvin Lee Minsky 目錄 人類智能 人工智能 三個階段 三大學派 四個要素 關系辨析 維度分類 發展簡史 技術方向 應用領域 產業圖譜 發展趨勢 人類智能 人工智能的目的是通過探索智慧的實質&#xff0c;擴展人類智能…

企業數字資產管理怎么轉型更高效?一文打通策略與實踐

核心要點 問題&#xff1a; 傳統的內容管理方式效率低、協作難、版本混亂&#xff0c;企業轉型 DAM 系統面臨選型難和落地難兩大挑戰。 答案&#xff1a; 采用階段性轉型策略&#xff0c;結合智能化工具和標準化流程&#xff0c;能幫助企業構建可擴展、易協作、強治理的內容資…

python pyqt5開發DoIP上位機【源碼】

目錄 文章合集 文章合集 python pyqt5開發DoIP上位機【介紹】 python pyqt5開發DoIP上位機【代碼里發送常用uds命令是怎么實現的?】 python pyqt5開發DoIP上位機【代碼里是怎么獲取診斷回復的?】 python pyqt5開發DoIP上位機【診斷回復的函數都是怎么調用的?】 python …

IIC (I2C)通信

一、IIC的特點I2C&#xff08;Inter IC Bus&#xff09;又成為&#xff08;愛方C I2C&#xff09;是由Philips公司開發的一種通用數據總線兩根通信線&#xff1a;SCL&#xff08;Serial Clock&#xff09;、SDA&#xff08;Serial Data&#xff09;同步&#xff0c;半雙工帶數據…