MySQL知識點(上)

MySQL知識點

一:MySQL概述

MySQL是一款開源的數據庫軟件,是一種關系型數據庫管理系統(ROBMS),也叫做表數據庫管理系統

如果需要快速安全地處理大量的數據,則必須使用數據庫管理系統;任何基于數據庫編程的程序,其本質都是對數據的處理操作;通過使用數據庫,數據便可以被動態地展示;只有與數據庫相結合,才能充分地發揮動態網頁編程語言的魅力

(1)數據庫(DB)

存放數據的倉庫

(2)數據庫管理系統(DBMS)

是一個操作和管理數據庫的系統軟件,主要負責存儲和管理網站所需的內容數據,用于建立;使用和維護數據庫

(3)數據庫系統(DBS)

由數據庫;數據庫管理系統;應用系統和用戶共同組成

二:MySQL服務器的啟動和退出

每一行命令結束后,記得按回車鍵(Enter)

1.MySQL服務器的啟動與關閉

(1)啟動MySQL服務器

首先,以管理員的身份運行命令提示符,輸入命令來啟動mysql服務器:

net start mysql版本號

net start mysql版本號 是Windows系統命令,需要管理員權限運行,用于啟動在Windows服務中注冊的MySQL服務進程,使MySQL服務進程(mysqld.exe)開始運行

在MySQL服務未運行時,使用該命令啟動服務之后才能通過客戶端連接服務器(僅啟動服務,不涉及用戶登錄和數據庫操作)

(2)關閉MySQL服務器

以下兩種命令都可以關閉MySQL數據庫服務器

net stop mysql版本號

net stop mysql版本號 是Windows系統命令,非MySQL自身命令,需要管理員權限運行,用于停止在Windows服務中注冊的名為 “mysql版本號” 的MySQL服務進程(命令中的服務名需與實際安裝名稱一致)

SHUTDOWN

SHUTDOWN 是通用方法,需在命令行中執行,而不是MySQL客戶端內,要管理員權限

2.MySQL服務器的連接與退出

(1)連接MySQL服務器

首先,打開命令行窗口,輸入命令:

用于連接數據庫服務器,進入MySQL:

mysql -h 服務器名稱/IP地址 -u 用戶名 -p用戶密碼
  • -h:指定的是所連接的數據庫服務器地址,如果連接的是本機,該參數可以省略
  • -u:指定連接數據庫服務器使用的用戶名(如:root表示管理員身份)
  • -p:指定連接數據庫服務器使用的密碼,-p和其后的參數值之間不允許有空格;也可以省略-p后面的參數值,按回車鍵(Enter)后以密文的形式輸入密碼

所以可以簡寫為:

mysql -u 用戶名 -p密碼

mysql -u 用戶名 -p密碼 是MySQL客戶端命令,用于指定用戶(如:root)身份登錄到已經運行的MySQL服務器(僅用于客戶端連接,而非啟動MySQL服務,需要MySQL服務已經處于運行狀態時使用)

在MySQL服務啟動后,通過此命令連接到服務器,進入MySQL命令行界面進行數據庫操作

(2)退出MySQL服務器

以下兩種命令都可以退出MySQL數據庫服務器

exit
quit

exitquit 是MySQL客戶端命令,用于退出MySQL命令行交互界面(MySQL控制臺)

exitquit 的功能完全相同,只是別名關系,均用于退出MySQL客戶端,不會影響MySQL服務器;執行后僅關閉當前客戶端會話,服務器進程(如:mysqld.exe)仍在運行

3.對于啟動與連接;關閉與退出的區分

(1)啟動與連接
net start mysql版本號mysql -u 用戶名 -p密碼
作用:啟動MySQL Windows服務指定用戶身份登錄MySQL服務器
使用場景:MySQL服務未運行時啟動服務MySQL服務已運行時連接服務器
用戶登錄:不涉及用戶登錄涉及用戶登錄

net start mysql版本號:僅啟動服務,無法直接進行數據庫操作,此命令需要管理員權限

mysql -u 用戶名 -p密碼:僅用于登錄,無法啟動服務,需要具有相應權限的MySQL用戶

(2)關閉與退出
net stop mysql版本號SHUTDOWNexitquit
作用:關閉MySQL Windows服務關閉MySQL服務用于退出客戶端會話
使用位置:在Windows命令行中使用在MySQL命令行中使用在MySQL客戶端內使用
是否影響服務器:影響服務器影響服務器不影響服務器

4.一些名詞解釋及問題

(1)MySQL命令行

通過操作系統的終端(命令提示符)直接訪問MySQL服務器的一種方式

MySQL命令行是基于命令行界面的工具,用戶通過輸入特定的MySQL命令來與MySQL服務器進行交互

啟動方式:

打開終端(命令提示符)輸入 mysql -u 用戶名 -p密碼 ,回車(Enter)后即可進入MySQL命令行

(2)MySQL客戶端

MySQL客戶端包括所以可以與MySQL服務器進行通信的應用程序,既包含命令行工具(前面提到的MySQL命令行),也包含圖形化界面工具

MySQL命令行是MySQL客戶端的一種具體實現形式

(3)Windows命令行

Windows命令行是Windows操作系統提供的一個基于命令行的用戶界面,允許用戶通過輸入命令來執行各種系統操作和程序,并不直接與MySQL服務器交互

雖然Windows命令行并不能直接執行MySQL的SQL命令,但可以通過它來啟動MySQL服務,使其連接到MySQL命令行等

啟動方式:

按下 “Win+R” 鍵打開 “運行對話框” ,輸入 “cmd” 并回車(Enter),即可打開Windows命令提示符窗口

(4)為什么需要先啟動服務(MySQL服務的作用)
  1. 后臺進程:MySQL服務(mysqld.exe或mysqld)是一個后臺運行的守護進程,該進程負責監聽客戶端的連接請求(默認端口號3306);管理數據庫文件(如:數據表;索引等);執行SQL操作等
  2. 服務化設計:
  • 自動管理: 開機自動啟動,避免手動操作
  • 隔離性: 服務在后臺運行,用戶無需關心進程細節
  • 資源控制: 服務管理器可限制資源占用

如果服務未運行,MySQL客戶端將無法連接到MySQL服務器,數據庫文件也將無法被訪問,客戶端登錄的前提條件是MySQL服務已啟動

何時需要手動啟動服務:

  • 首次安裝后: MySQL服務默認為未啟動,所以需要手動啟動
  • 服務崩潰或者是異常停止: 當系統重啟后服務未自動恢復時
  • 開發調試時: 臨時重啟服務后
(5)為什么mysql -u 用戶名 -p密碼 可以直接登錄而無需手動啟動服務
  1. 如果MySQL服務被設置為自動啟動,則在系統啟動時會自動執行,無需手動干預
  2. 一旦通過 net start mysql版本號 啟動服務,則服務會持續運行,直到顯示停止(如通過 net stop mysql版本號 來關閉服務或系統重啟)在后續客戶端登錄時,服務已經處于運行狀態則無需再次啟動

mysql -u 用戶名 -p密碼是客戶端命令,執行流程如下:

  1. 檢查服務狀態: 客戶端嘗試連接MySQL的默認端口號(3306)
  2. 若服務未運行: 連接失敗
  3. 若服務已運行: 客戶端會發送認證請求(用戶名和密碼)服務端驗證權限后建立會話

注意:

用戶很可能因為服務自動啟動從而忽略這一過程

操作作用對象執行環境服務狀態作用場景
net start mysql版本號MySQL服務進程Windows命令行啟動服務首次安裝或服務崩潰后恢復
mysql -u 用戶名 -p密碼MySQL客戶端會話MySQL命令行客戶端依賴服務已運行日常數據庫操作或開發調試
(6)為什么MySQL要設計為”服務化“

MySQL作為服務運行,提供了穩定性;可管理性;安全性和并發性,是數據庫系統的標準架構,理解這一機制有助于更高效地排查連接問題

  1. 穩定性: 服務進程與用戶會話分離,避免了因用戶退出導致數據庫崩潰
  2. 可管理性: 通過服務管理器(如systemd)可監控進程狀態,限制資源占用
  3. 安全性: 服務可配置為以非特權用戶運行(如mysql用戶),降低系統風險
  4. 并發性: 服務可同時處理多個客戶端連接,支持高并發訪問
(7)設置MySQL服務為自動啟動

按下 “Win+R” 鍵,打開 “運行” 對話框,在文本框中輸入 services.msc ,按下回車,此時打開服務管理器,找到MySQL服務,右鍵點擊選擇 “屬性” ,最后將啟動類型改為自動

(8)如何確認服務是否運行
sc query mysql版本號
(9)若客戶端登錄失敗,但服務已啟動
netstat -ano | findstr 3306

使用此命令可以幫助檢查以下問題

  1. 端口監聽狀態

    正常情況會顯示LISTENING狀態,表明 MySQL 正在 3306 端口監聽連接

    若未顯示任何結果,說明服務未正確綁定 3306 端口(可能配置了其他端口或服務啟動異常)

  2. 監聽地址

    顯示0.0.0.0:3306表示允許所有 IP 連接

    顯示127.0.0.1:3306表示僅允許本地連接(遠程客戶端無法訪問)

  3. 防火墻排查

    若端口處于監聽狀態但仍無法連接,需檢查防火墻是否放行 3306 端口

(10)用net stop mysql版本號關閉服務的原因及作用
  1. net stop mysql版本號是Windows系統命令,用于停止以服務形式運行運行的MySQL后臺進程(mysqid.exe)
  2. 關閉服務會釋放系統資源(內存;端口號等)并確保數據庫處于安全狀態,避免數據損壞或丟失

使用場景:

  • 系統維護: 在進行系統升級,配置修改或硬件維護時,需先停止MySQL服務
  • 故障排查: 當MySQL服務出現異常時,可通過關閉服務重啟來解決問題
  • 資源釋放: 長時間運行的MySQL服務可能占用較多的系統資源,關閉后可釋放資源供其他程序使用
(11)exit命令的作用及與關閉服務的區別
  • exit是MySQL客戶端命令,用于退出當前與MySQL服務器的交互會話,以釋放客戶端占用的資源
  • 執行exit后,用戶會返回操作系統命令行界面,但MySQL服務進程仍會運行,其他客戶端仍可連接

exit與直接關閉服務的區別:

  1. 操作對象不同:

net stop mysql版本號作用于MySQL服務進程

exit作用于MySQL客戶端會話

  1. 影響范圍不同:

net stop mysql版本號用于停止整個MySQL服務,所有客戶端的連接都會中斷

exit僅用于終止當前客戶端會話,不影響其他客戶端和服務本身

  1. 使用場景不同:

net stop mysql版本號在需要完全停止MySQL服務時使用

exit在完成數據庫操作后退出客戶端時使用

5.sc命令于net命令的區別

(1)啟動服務

sc start mysql版本號

(2)停止服務

sc stop mysql版本號

(3)重啟服務

sc restart mysql版本號

(4)獲取服務狀態

sc query mysql版本號

sc命令和net命令均用于管理服務,二者具體區別如下:

  1. 命令來源與底層機制:
  • sc命令是Windows系統中用于與服務控制管理器(scm)交互的命令行工具,屬于系統原生工具,它直接調用服務控制端口,底層操作更貼近系統服務管理機制,適合需要精確控制服務參數的場景
  • net命令是Windows系統中用于管理網絡資源及服務的傳統工具,通過封裝系統API來實現服務啟動,兼容性更好,適合常規服務管理操作
  1. 功能差異:
  • sc命令支持傳遞附加參數(如:依賴服務;啟動超時設置等),它提供了更詳細的服務狀態反饋(如:錯誤代碼;進程ID等)便于診斷問題
  • net命令的功能相對簡單,不提供參數化配置能力,輸出信息更簡潔,適合快速操作
  1. 使用場景推薦:
  • sc命令適合開發調試或故障排查時使用
  • net命令適合日常快速啟動服務及需要兼容舊版Windows系統時使用
  1. 核心區別
  • sc命令更底層;功能更豐富,適合高級管理
  • net命令更簡單直接,適合日常操作

三:操作MySQL數據庫

  • 每個數據庫都有唯一的數據庫文件名作為與其他數據庫區別的標識
  • MySQL數據庫分為系統數據庫(DBMS)和自建數據庫兩種類型
  • 安裝MySQL后,系統自動創建的數據庫稱為系統數據庫

系統數據庫有:

mysqlinformation_schemaperformance_schemasys

其中,MySQL數據庫服務器把有關數據庫的信息存儲在mysqlinformation_schema這兩個數據庫中,如果刪除了這兩個數據庫,MySQL數據庫服務器將無法正常工作

關系數據庫中的名詞術語:

  • 列: 也叫字段;屬性;數據項
  • 行: 也叫元組;記錄
  • 表: 也叫關系
  • 表內容: 也叫值
  • 表標題: 也叫格式
  • 候選碼: 唯一識別元組
  • 主鍵: 當有多個候選碼時選一個作為主鍵

其中,表是最基本的數據對象,用于存放數據庫的數據,一個數據庫中包含多個數據表;候選碼具有唯一性且可以有多個;主鍵只能有1個(1個指的是一列或由多列組成的復合列)

1.對MySQL數據庫的操作

(1)創建數據庫
CREATE DATABASE 數據庫名;

SQL語句在Windows和MacOS的環境中不區分字符的大小寫,但在Linux環境中嚴格區分大小寫

數據庫的命名規則:

  • 不能與其他數據庫重名
  • 名稱可以使用字母;阿拉伯數字;下劃線(_)或$中的任意字符開頭,但要避免使用單獨的數字
  • 禁止使用MySQL關鍵字作為數據庫及數據表名
  • 建議使用小寫字母來定義數據庫及數據表名
  • 名稱最長可為64個字符(包括表;列和索引的命名),而別名最多可達256個字符

注意:

  1. 所有的SQL語句命令的最后都以英文分號 “;” 結尾
  2. 數據庫名;表名;列名最好不要使用中文命名
(2)查看當前數據庫
SHOW DATABASES;

用于顯示當前本地MySQL數據庫服務器下的所有已經存在的數據庫名

(3)選擇數據庫
USE 數據庫名;

用于指定一個數據庫,使其成為當前使用的數據庫

(4)刪除數據庫
DROP DATABASE 數據庫名;

用于刪除指定的數據庫,一旦執行,數據庫中的所有結構和數據都會被刪除,沒有恢復的可能,除非有備份

(5)數據表概述
  • 創建數據庫以后,需要在其中創建數據表來存儲數據,一個數據庫中可以包含一張或多張表,表是數據的集合,是用來存儲數據和操作數據的
  • 數據在數據表中是按照行和列的格式來排列的

四:MySQL數據類型

數據類型可以更加方便管理和使用數據,它決定了存儲數據的存儲格式和有效范圍

在MySQL數據庫中,每一條數據都有其數據類型

MySQL的數據類型主要分為三大類:

1.數值類型(數值類型的字節數是固定的)

(1)整數數據類型
數據類型取值范圍描述所占字節數
TINYINT有符號值:-128~127; 無符號值:0~255最小的整數1字節
SMALLINT有符號值:-32768~32767; 無符號值:0~65535微小型整數2字節
MEDIUMINT有符號值:-8388608~8388607; 無符號值:0~16777215小型整數3字節
INT(INTEGER)有符號值:-2147483648~2147483647; 無符號值:0~4294967295中型整數4字節
BIGINT有符號值:-9223372036854775808~9223372036854775807; 無符號值:0~18446744073709551615大型整數8字節

注意:

  1. 在整數類型后面加上UNSIGNED屬性,表示聲明的是無符號值,其取值從0開始
  2. 在整數類型后面加上ZEROFILL屬性,表示在數值之前自動用0補充不足的位數;當使用ZEROFILL屬性修飾時,自動應用UNSIGNED屬性
  3. 在聲明整數類型時,可以為它指定一個顯示寬度(1~255),如果沒有給它指定顯示寬度,MySQL會給它指定一個默認值顯示寬度,僅用于顯示,并不會限制取值范圍(如:INT(5)
  4. 數值類型的字節數是固定的,它的取值范圍由其占用的字節數和編碼方式(有符號/無符號)共同決定,字節數越多,數值取值范圍越大
(2)浮點數數據類型
數據類型取值范圍描述精度所占字節數
FLOAT最小正規范數: 即 1.175494 × 10?3? 最大正規范數: 即 3.402823 × 103? 最小正非規范數: 用于接近零的值 負數范圍: 對稱取反單精度浮點數約 6~7 位有效數字4字節
DOUBLE最小正規范數: 即 2.225074 × 10?3?? 最大正規范數: 即 1.797693 × 103?? 最小正非規范數: 用于接近零的值 負數范圍: 對稱取反雙精度浮點數約 15~17 位有效數字8字節
DEC(DECIMAL)DECIMAL(M, N) 的取值范圍由精度(即總位數M 和小數位數(即小數點后的位數N 決定自定義精確數型精確到定義的小數位因精度位數而異

注意:

  1. 未指定精度時,默認 DECIMAL(10, 0)
  2. DECIMAL 的存儲空間由精度 M 決定,每 9 位數字需要 4 字節,以此類推(每增加 9 位,增加 4 字節)
  3. 在聲明浮點數類型時,可以為它指定一個顯示寬度指示器和一個小數點指示器(如:FLOAT(5, 2) 5表示顯示的值不超過5位數字;2表示小數點后有2位數字),存入的數據會自動被四舍五入
  4. 高精度會顯著增加存儲空間和計算開銷,需根據業務需求選擇: FLOAT:適合對內存敏感的場景(如大規模科學計算),但精度較低 DOUBLE:默認推薦類型,平衡了范圍和精度,適合大多數工程計算 DECIMAL:需要精確小數時使用(如貨幣)

2.字符串類型

字符串類型可以用來存儲任何一個值,MySQL中的字符串可以被單引號或雙引號包裹

字符串類型分為三類:

(1)普通的文本字符串類型
數據類型取值范圍描述所占字節數
CHAR(M)0~M個字符(M<=255)定長字符串,存儲空間固定,適合存儲長度相近的數據M x 3(在UTF-8中,1個中文字符占3個字節)
VARCHAR(M)0~M個字符(M<=65535)變長字符串,長度可變,其它和char(M)類似M x 3 + 長度標識(1/2字節)

注意:

  1. CHAR(M) 無論實際存儲的字符數是否達到M,均占用 Mx字符集字節數 的空間
  2. VARCHAR(M) 僅占用實際的 字符長度+長度標識 的空間
  3. 在使用 CHAR 類型時,當實際傳入的值的長度小于指定長度,會使用空格將實際長度填補至指定長度;而在使用 VARCHAR 類型時,當實際傳入的值的長度小于指定長度,那么實際長度即為傳入字符串的長度,不會使用空格填補
  4. 在使用 CHARVARCHAR 類型時,當實際傳入的值的長度大于指定長度,字符串會被截取至指定長度
  5. CHAR(M)VARCHAR(M) 表示可以存儲M個字符,注意不是M個字節
  6. 當數據分布不均時,使用 VARCHAR(M) 可大幅節省存儲空間,變長類型的長度標識允許數據庫動態計算實際占用空間并進行分配,可避免因固定長度導致數據溢出和存儲空間的浪費
  7. 字符集對CHAR類型沒有影響,因此CHAR(M)中的M最大為255;但是字符集對VARCHAR類型是有影響的,如果使用的是UTF-8字符集,每個字符大小為3字節,最大支持21845(65535/3=21845)個字符,因此VARCHAR(M)中的M最大為21845
(2)可變類型
數據類型取值范圍描述說明
TINYBLOB0~255 字節(二進制數據)BLOB字段存儲短二進制數據(如:小型圖標、加密密鑰等)
TINYTEXT0~255 字節(文本數據,字符數取決于編碼)小文本串存儲短文本(如:簡短描述、標簽等)UTF-8 編碼下字符數可能少于 255
BLOB0~65,535 字節(約 64KB)常規BLOB字段存儲中等二進制數據(如:小圖片、音頻片段等)
TEXT0~65,535 字節(約 64KB,字符數取決于編碼)常規文本串存儲中等長度文本(如:文章摘要、評論等)UTF-8 編碼下字符數可能少于 65,535
MEDIUMBLOB0~16,777,215 字節(約 16MB)中等BLOB字段存儲較大二進制數據(如:高清圖片、短視頻片段等)
MEDIUMTEXT0~16,777,215 字節(約 16MB,字符數取決于編碼)中等文本串存儲較長文本(如:長文章、日志等)UTF-8 編碼下字符數可能少于 16,777,215
LONGBLOB0~4,294,967,295 字節(約 4GB)BLOB字段存儲大型二進制數據(如:完整視頻、大型文件等)
LONGTEXT0~4,294,967,295 字節(約 4GB,字符數取決于編碼)長文本串存儲超長文本(如:書籍內容、詳細報告等)UTF-8 編碼下字符數可能少于 4,294,967,295

注意:

1. 關于二進制和文本類型:

  • BLOB 系列TINYBLOBBLOBMEDIUMBLOBLONGBLOB)用于存儲二進制數據,支持任何數據(如圖片、音頻、視頻等),字符集編碼對BLOB系列類型沒有影響
  • TEXT 系列TINYTEXTTEXTMEDIUMTEXTLONGTEXT)用于存儲文本數據(如文章、評論、日志等),TEXT系列類型實際字符數的取值范圍受字符集編碼影響

2. 性能與存儲建議:

  • 小數據:優先使用 TINYBLOB/TINYTEXTBLOB/TEXT,以節省存儲空間
  • 大數據:對于超過 16MB 的數據(如高清視頻),考慮使用 LONGBLOB/LONGTEXT,但需要注意數據庫性能影響
  • 替代方案:對于超大型文件(如 GB 級視頻),建議存儲文件路徑而非文件本身,以避免數據庫膨脹
(3)特殊類型
數據類型最大值描述說明所占字節數
Enum("value1", "value2", ...)65535從預定義的列表中選擇單個值適用于單選字段(如:訂單狀態;性別等)1~2
Set("value1", "value2", ...)64從預定義的列表中選擇0個或多個值適用于多選字段(如:用戶權限;興趣等)1~8

3.日期/時間類型

數據類型取值范圍說明所占字節數
DATE1000-01-01 ~ 9999-12-31日期,格式為:YYYY-MM-DD3
TIME-838:59:59 ~ 838:59:59時間,格式為:HH:MM:SS3
DATETIME1000-01-01 00:00:00 ~ 9999-12-31 23:59:59日期和時間,格式為:YYYY-MM-DD HH:MM:SS8
TIMESTAMP'1970-01-01' 00:00:00 ~ 2037年的某個時間時間戳,格式為:YYYY-MM-DD HH:MM:SS4
YEAR1901 ~ 2155年份,格式為:YYYY1

4.關于字符、字節和字符集

  • 在不同的字符集下,字符占用的字節數不同;字符數也不同

  • 字符;字節和字符集是計算機科學和信息技術中與文本處理密切相關的核心概念

(1)字符
  • 字符是人類可識別的最小文本單元,也是與用戶直接交互的文本單位(字母;數字;符號;漢字等都是字符)

  • 字符具有抽象性,是邏輯概念,不直接對應計算機的存儲方式,需通過字符集映射到二進制編碼

(2)字節
  • 字節(Byte)是計算機存儲和傳輸數據的基本單位,也是計算機處理數據的物理單位,所有數據(包括字符)最終都以字節的形式存儲在計算機中

  • 1字節=8位二進制數(bit)

(3)字符集
  • 字符集是字符與二進制編碼(字節)之間的映射(翻譯)規則,用于編碼(將字符轉換為字節序列)和解碼(將字節序列還原為字符)

  • 字符集是連接字符與字節的橋梁,決定了字符所占用的字節數和字符的存儲效率

  • 通過合理的選擇字符集和優化編碼方式可避免存儲空間的浪費和亂碼問題

  • 編碼格式是字符集的具體實現;字符集是眾多字符的集合

5.數據類型的選擇

(1)固定長度數據用 CHAR(速度快但可能浪費空間)
  • 適用場景: 數據長度完全固定時(如身份證號、手機號、固定5位的郵編等)
  • 優點: 存儲和查詢速度快,因為計算機直接通過固定位置讀取,無需計算長度
  • 缺點: 如果數據長度不足(如只存"M"),會用空格填充到指定長度,浪費存儲空間
(2)可變長度數據用 VARCHAR(省空間但稍慢)
  • 適用場景: 數據長度不固定時(如用戶名、地址、電話號碼)
  • 優點: 只占用實際數據長度 + 1~2字節長度標識,不會浪費
  • 缺點: 需要額外計算長度,查詢速度略慢于CHAR
(3)限定選項用 ENUM(只能選一個預設值)
  • 適用場景: 數據必須從預設的固定選項中選擇時(如訂單狀態:待支付、已支付、已取消;用戶類型等)
  • 優點: 強制數據規范(避免拼寫錯誤或無效值);存儲效率高(內部用整數索引存儲)
  • 缺點: 修改選項時需要改表結構
(4)多選項組合用 SET(可選多個預設值)
  • 適用場景: 數據可以從多個預設選項中選一個或多個時(如用戶興趣:運動、音樂、閱讀;商品標簽)
  • 優點: 能存儲多個選項的組合(如"運動,音樂")
  • 缺點: 選項數量有限(最多64個);修改選項同樣需要改表結構
(5)不區分大小寫搜索用 TEXT(適合長文本)
  • 適用場景: 存儲長文本(如文章內容、評論)且搜索時不區分大小寫(如搜"hello"能匹配"Hello")
  • 注意: TEXT 類型本身默認不區分大小寫,實際行為取決于數據庫的排序規則
(6)區分大小寫搜索用 BLOB(或二進制類型)
  • 適用場景: 需要精確匹配大小寫(如密碼哈希、文件指紋)或存儲二進制數據(如圖片、音頻)
  • 優點: 嚴格區分大小寫,適合需要精確匹配的場景

注意:

  • 性能與空間的權衡: CHAR 快但可能浪費空間,VARCHAR 省空間但稍慢
  • ENUM/SET 的限制: 預設選項修改較麻煩(需改表結構),適合固定不變的選項
  • TEXT/BLOB 的區別: TEXT 用于文本,BLOB 用于二進制數據;搜索行為取決于數據庫配置(如排序規則)

通過合理選擇數據類型,既能保證數據準確性,又能提升存儲效率和查詢性能!

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

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

相關文章

shell腳本實現sha256sum校驗并拷貝校驗通過的文件

#!/bin/bash# 目標目錄 TARGET_DIR"/appdata/jn1m/versions/old/bin"# 校驗文件 CHECKSUM_FILE"checksum.txt"# 檢查目標目錄是否存在 if [ ! -d "$TARGET_DIR" ]; thenecho "錯誤&#xff1a;目標目錄 $TARGET_DIR 不存在"exit 1 fi#…

中小型泵站物聯網智能控制系統解決方案:構建無人值守的自動化泵站體系

一、系統核心架構與功能設計1.物聯網感知層設備互聯&#xff1a;網關對接壓力傳感器、超聲波液位計、智能電表、振動傳感器等&#xff0c;實時采集水泵運行狀態&#xff08;流量、壓力、溫度、振動&#xff09;、液位、水質&#xff08;pH值、濁度&#xff09;、能耗等關鍵參數…

網絡通信---Axios

1、什么是 Axios&#xff1f; Axios? 是一個基于 ?Promise? 的 ?HTTP 客戶端&#xff0c;用于瀏覽器和 Node.js 環境&#xff0c;用來發送 ?HTTP 請求&#xff08;如 GET、POST、PUT、DELETE 等&#xff09;?。 它常用于&#xff1a; 向后臺 API 發送請求獲取數據提交表…

Ubuntu 軟件源版本不匹配導致的依賴沖突問題及解決方法

在使用 Ubuntu 系統的過程中&#xff0c;軟件包管理是日常操作的重要部分。但有時我們會遇到各種依賴沖突問題&#xff0c;其中軟件源與系統版本不匹配是常見且棘手的一種。本文就來詳細分享一次因軟件源版本不匹配引發的依賴沖突問題&#xff0c;以及具體的解決思路和流程。一…

思考:高速場景的行星輪混動效率如何理解

行星輪混動 E-CVT&#xff08;電子無級變速器&#xff09;是一種專為混合動力汽車設計的動力分配系統&#xff0c;其核心原理是通過行星齒輪組和電機的協同工作&#xff0c;實現動力分流與無級變速。 一、核心結構與組成 E-CVT的核心部件包括 行星齒輪組 和 雙電機&#xff08;…

跨域及解決方案

跨域&#xff08;Cross-Origin&#xff09;是指瀏覽器在執行 JavaScript 的時候&#xff0c;因為同源策略&#xff08;Same-Origin Policy&#xff09;的限制&#xff0c;阻止了一個網頁去請求不同源&#xff08;域名、端口、協議有任意一個不同&#xff09;的資源。 1. 什么是…

PCA降維全解析:從原理到實戰

一文讀懂PCA降維&#xff1a;原理、實現與可視化全解析?本文6000字&#xff0c;涵蓋PCA核心原理、數學推導、代碼實戰及高頻面試題&#xff0c;建議收藏閱讀?一、為什么需要降維&#xff1f;數據爆炸時代的生存法則當數據集的特征維度激增&#xff08;如基因數據、推薦系統用…

Kafka工作機制深度解析:Broker、Partition 與消費者組協作原理

&#x1f42f; Kafka工作機制深度解析&#xff1a;Broker、Partition 與消費者組協作原理 &#x1f3c1; 前言 Kafka 已成為互聯網公司流式數據處理的事實標準&#xff0c;廣泛應用于日志收集、實時計算、事件驅動架構等場景。 很多開發者會用 Kafka&#xff0c;但不了解它底…

深入解析live555:開源流媒體框架的技術原理與應用實踐

引言&#xff1a;流媒體領域的"老兵"與技術基石 在實時音視頻傳輸技術的發展歷程中&#xff0c;live555作為一款誕生于1990年代末的開源項目&#xff0c;至今仍在流媒體服務器、嵌入式設備和安防監控等領域發揮著不可替代的作用。它由Live Networks公司開發并維護&a…

EN55014家用電器、電動工具和類似設備的電磁兼容

一、EN 55014標準定義與屬性&#xff1f;EN 55014 是針對家用電器、電動工具及類似設備的電磁兼容&#xff08;EMC&#xff09;標準&#xff0c;主要規定了這類產品在電磁騷擾發射&#xff08;避免干擾其他設備&#xff09;和抗擾度&#xff08;抵抗其他設備干擾&#xff09;方…

python自學筆記9 Seaborn可視化

Seaborn&#xff1a;統計可視化利器 作為基于 Matplotlib 的高級繪圖庫&#xff0c;有一下功能&#xff1a;一元特征數據 直方圖 import matplotlib.pyplot as plt import pandas as pd import seaborn as sns # import os # # 如果文件夾不存在&#xff0c;創建文件夾 # if…

kafka 消費者組的概念是什么?它是如何實現消息的點對點和發布/訂閱模式?

Kafka 消費者組&#xff08;Consumer Group&#xff09;是 Kafka 架構中的核心概念&#xff0c;它是一組共同協作來消費一個或多個主題&#xff08;Topic&#xff09;數據的消費者應用的集合。 通過簡單地為多個消費者實例配置相同的 group.id&#xff0c;它們就組成了一個消費…

C#文件復制異常深度剖析:解決“未能找到文件“之謎

一個看似簡單的文件操作問題 在C#開發中&#xff0c;文件操作是基礎中的基礎&#xff0c;但有時最基礎的File.Copy()方法也會拋出令人困惑的異常。最近我遇到了這樣一個問題&#xff1a; File.Copy(sourceFile, targetFilePath);當targetFilePath設置為D:\25Q1\MR3.6.6.1_C1.2.…

OpenCV Python——圖像查找(特征匹配 + 單應性矩陣)

1 圖像查找&#xff08;單應性矩陣&#xff09;2 單應性矩陣 應用舉例3 單應性矩陣 代碼示例P87 111 圖像查找&#xff08;單應性矩陣&#xff09; 特征匹配作為輸入&#xff0c;獲得單應性矩陣 點X在img1和img2中的成像分別為x,x 圖中H即為單應性矩陣 2 單應性矩陣 應用…

Ubuntu 安裝帶證書的 etcd 集群

1.概念 etcd 是由GO語言編寫的分布式的、可靠的鍵值存儲系統&#xff0c;主要用于分布式系統中關鍵數據的存儲和服務發現。 2.核心概念 節點&#xff08;Node&#xff09; 每個運行 etcd 的實例被稱為一個節點。一個或多個節點可以組成一個集群。 集群&#xff08;Cluster&…

360 集團20周年會:戰略升級ALL IN Agent,搶占智能體時代先機

發布 | 大力財經8月15日&#xff0c;360集團迎來二十周年&#xff0c;在北京奧林匹克體育中心舉辦的“360集團20周年榮耀慶典”上&#xff0c;創始人周鴻祎向現場數千名員工發表演講&#xff0c;回顧360集團二十年的發展歷程&#xff0c;并明確360集團下一階段的公司戰略&#…

命令模式C++

命令模式&#xff08;Command Pattern&#xff09;是一種行為型設計模式&#xff0c;它將請求封裝為一個對象&#xff0c;使你可以用不同的請求對客戶進行參數化&#xff0c;還能支持請求的排隊、記錄日志及撤銷操作。這種模式將發送者和接收者解耦&#xff0c;發送者無需知道接…

Web攻防-大模型應用LLM搭建接入第三方內容喂養AI插件安全WiKI庫技術賦能

知識點&#xff1a; 1、WEB攻防-LLM搭建-AI喂養&安全知識WIKI庫 演示案例&#xff1a;WEB攻防-LLM搭建-AI喂養&安全知識WIKI庫 使用參考 https://docs.web2gpt.ai/ https://mp.weixin.qq.com/s/qqTOW5Kg1v0uxdSpbfriaA 0、服務器環境&#xff1a;阿里云 Ubuntu22.04 …

圖片拼接-動手學計算機視覺8

前言圖片拼接&#xff08;image stitching&#xff09;就是將統一場景的不同拍攝出的圖片拼接到一起&#xff0c;如圖所示就是拼接全景圖&#xff0c;是圖片拼接的應用之一&#xff0c;手機拍照都有全景拍攝功能仔細觀察全景圖&#xff0c;尋找它們相似性&#xff0c;圖8-2的全…

Web第二次作業

作業一&#xff1a;學校官網1.1學校官網代碼如下&#xff1a;?<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">&l…