MySQL 資料庫中的數據類型

来源:https://www.cnblogs.com/Yee-Q/archive/2022/04/16/16153180.html
-Advertisement-
Play Games

整數類型 標準 SQL 中支持 INTEGER 和 SMALLINT 這兩種類型,MySQL 資料庫除了支持這兩種類型以外,還擴展支持了 TINYINT、MEDIUMINT 和 BIGINT 整數類型 位元組數 無符號數的取值範圍 有符號數的取值範圍 TINYINT 1 (0,255) (-128,1 ...



整數類型

標準 SQL 中支持 INTEGER 和 SMALLINT 這兩種類型,MySQL 資料庫除了支持這兩種類型以外,還擴展支持了 TINYINT、MEDIUMINT 和 BIGINT

整數類型 位元組數 無符號數的取值範圍 有符號數的取值範圍
TINYINT 1 (0,255) (-128,127)
SMALLINT 2 (0,65535) (-32768,32767)
MEDIUMINT 3 (0,16777215) (-8388608,8388607)
INT 4 (0,4294967295) (-2147483648,2147483647)
INTEGER 4 (0,4294967295) (-2147483648,2147483647)
BIGINT 8 (0,18446744073709551615) (-9223372036854775808,9223372036854775807)

浮點數類型和定點數類型

數據表中用浮點數類型和定點數類型來表示小數,浮點數類型包括單精度浮點數(FLOAT)和雙精度浮點數(DOUBLE),定點數類型就是 DECIMAL

類型 位元組數 負數的取值範圍 非負數的取值範圍
FLOAT 4 (-3.402823466E+38,-1.175494351E-38) 0,(1.175494351E-38,3.402 823466E+38)
DOUBLE 4 (-1.7976931348623157E+308,-2.2250738585072014E-308) 0,(2.2250738585072014E-308,1.7976931348623157 E+308)
DECIMAL(M,D) M+2 取決於 M 和 D 取決於 M 和 D

FLOAT 和 DOUBLE 類型存儲數據時存儲的是近似值,DECIMAL 存儲的是字元串,因此提供了更高的精度。在金融系統中,表示貨幣金額的時候會優先考慮 DECIMAL 類型;在一般的價格體系,比如購物平臺的商品標價,一般用 FLOAT 類型即可


日期和時間類型

每種日期與時間類型都有一個有效範圍如果插入的值超過這個範圍,系統就會報錯,並將零值插入到資料庫

類型 位元組數 取值範圍 零值
YEAR 1 1901 ~ 2155 0000
DATE 4 1000-01-01 ~ 9999-12-31 0000:00:00
TIME 3 -838:59:59 ~ 838:59:59 00-00-00
DATETIME 8 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 0000-00-00 00:00:00
TIMESTAMP 4 19700101080001 ~ 2038011911407 00000000000000

字元串類型

1. CHAR 和 VARCHAR 類型

CHAR 類型和 VARCHAR 類型都在創建表時指定了最大長度,CHAR 類型的長度是固定的,其長度可以是 0 ~ 255 的任意值。而 VARCHAR 類型的長度是可變的,其最大值可以取 0 ~ 65535 之間的任意值,VARCHAR 類型實際占用的空間為字元串的實際長度加一,這樣可以有效節約系統的空間

2. TEXT 類型

TEXT 類型是一種特殊的字元串類型,各種 TEXT 類型的區別在於允許的長度和存儲空間不同

類型 允許的長度 存儲空間
TINYTEXT 0-255 值的長度+2個位元組
TEXT 0-65535 值的長度+2個位元組
MEDIUMTEXT 0-16772150 值的長度+3個位元組
LONGTEXT 0-4294967295 值的長度+4個位元組

3. ENUM 類型

ENUM 類型又稱枚舉類型,在創建表時,ENUM 類型的取值範圍以列表的形式指定

屬性名 ENUM('值1', '值2', ..., '值n')
  • 屬性名:指欄位的名稱
  • 值n:表示列表中的第 n 個值

ENUM 類型的值只能取列表中的某一個元素,取值列表最多能有 65535 個值。列表中的每個值獨有一個順序排列的編號,MySQL 存入的是這個編號,而不是列表中的值

如果 ENUM 類型加上了 NOT NULL 屬性,其預設值為取值列表的第一個元素。如果不加 NOT NULL 屬性,ENUM 類型將允許插入 NULL,而且 NULL 為預設值

4. SET 類型

在創建表時,SET 類型的取值範圍就以列表的形式指定了

屬性名 SET('值1', '值2', ..., '值n')

參數和 ENUM 一致,SET 類型的值可以取列表中的一個或多個元素,取多個元素時,不同元素之間用逗號隔開,SET 類型的值最多只能是由 64 個元素構成的組合


二進位類型

二進位型是存儲二進位數據的數據類型

類型 取值範圍
BINARY(M) 位元組數為M,允許長度為0~M的定長二進位字元串
VARBINARY (M) 允許長度為0~M的變長二進位字元串,位元組數為值的長度加1
BIT(M) M位二進位數據,M最大值為64
TINYBLOB 可變長二進位數據,最多255個位元組
BLOB 可變長二進位數據,最多(2^16-1)個位元組
MEDIUMBLOB 可變長二進位數據,最多(2^24-1)個位元組
LONGBLOB 可變長二進位數據,最多(2^32-1)個位元組

1. BINARY 和 VARBINARY 類型

BINARY 類型的長度是固定的,不足最長長度的空間有 '\0' 補全

VARBINARY 類型的長度是可變的,在最大範圍內使用多少就分配多少

2. BIT 類型

例如,BIT(4) 就是指定數據類型為 BIT 類型,長度為 4,若存儲的數據是 0 ~ 15,因為變成二進位後的 15 的值為 1111,則其長度為 4。如果插入的值為 16,其二進位數為 10000,長度為 5 超過最大長度,則插入失敗

3. BLOB 類型

BLOB 用來保存數據量很大的二進位數據,如圖片等。BLOB 類型與 TEXT 類型類似,不同在於 BLOB 類型用於存儲二進位數據,根據其二進位編碼進行比較和排序,而 TEXT 類型是以文本模式進行比較和排序的


JSON 類型

在 MySQL 中,JSON 值是以字元串形式寫入的,MySQL 會對字元串進行解析,如果不符合 JSON 格式,那麼寫入將失敗

名稱 描述
json_array() 創建json數組
json_array_append() 數組尾部追加元素
json_array_insert() 在數組的指定位置插入元素
json_extract() / -> / ->> 根據條件提取文檔中的數據
json_contains(target,candidate[,path]) 查詢文檔中是否包含指定的元素
json_contains_path() 查詢文檔中是否包含指定的路徑
json_depth() json文檔的深度(元素最大嵌套層數)
json_insert() 向json文檔插入值
json_keys() 提取json中的鍵值為json數組
json_length() json文檔的長度(元素的個數)
json_merge() / json_merge_preserve() 將兩個文檔合併,保留重覆鍵值
json_merge_patch() 將兩個文檔合併,替換重覆鍵值
json_object() 創建json對象
json_pretty() 美化json格式
json_quote() / json_unquote() 加上/去掉json文檔兩邊的雙引號
json_remove() 刪除文檔中指定位置的元素
json_replace() 替換文檔中指定位置的元素
json_search() 返回所有符合條件的路徑集合
json_set() 給文檔中指定位置的元素設置新值
json_storage_free() json文檔更新操作後的剩餘空間
json_storage_size() json文檔占用的存儲空間
json_table() 將json文檔轉換為表格
json_type() json文檔類型(數組/對象/標量)
json_valid() json格式是否合法

Spatial 數據類型

Spatial 數據即空間數據,又稱幾何數據,表示物體的位置、形態、大小分佈等各方面信息

MySQL 包含的空間數據類型有幾何體(GEOMETRY)、點(POINT)、線(LINESTRING)和多邊形(POLYGON),其中幾何體可以存儲任何類型的幾何數據,而其他三種只能存儲對應類型的幾何數據



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

-Advertisement-
Play Games
更多相關文章
  • 1. DevOps的一些介紹 DevOps(Development和Operations的組合詞)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。 它是一種重視“軟體開發人員(Dev)”和“IT運維技術人員(Ops)”之間溝通合 ...
  • 工具 這裡用到兩個工具分別為Procdump+Windbg Procdump:ProcDump是一個命令行實用工具,主要目的是監視應用程式,以便在管理員或開發人員可用於確定峰值的原因期間監視 CPU 峰值和生成故障轉儲。 ProcDump 還包括使用視窗掛起 (使用相同的視窗掛起定義,Windows ...
  • 在實際的軟體開發過程中,我們通常會採用一種前後端分離的開發模式,在這種模式下一般會由前後端兩類開發人員協同開發,在這種情況下後端開發人員則需要提供API文檔去與前端人員進行對接,這樣才能保障後續的工作能夠順利開展。 並且當前項目在與外部系統進行業務往來或者數據交互的時候,我們通常會作為“介面方”對外 ...
  • 1. 前言 通過之前的學習,我們已經掌握了crank的配置以及對應http基準工具bombardier、wrk、wrk2的用法,本篇文章介紹一下如何將其用於實戰,在實際的項目中我們如何使用crank來完成壓測任務。 2. 項目背景 目前有一個項目,我們希望通過壓測來瞭解其QPS、吞吐量、以及臨界值, ...
  • RTF文檔即富文本格式(Rich Text Format)的文檔。我們在處理文件時,遇到需要對文檔格式進行轉換時,可以將RTF轉為其他格式,如轉為DOCX/DOC、PDF或者HTML,以滿足程式設計需要。網上有開發者提供了可實現RTF轉為HTML格式的方法,但是方法可能不一定適用於所有程式,比如可能 ...
  • 實驗網站 課程網站:CSAPP 源碼下載 源碼下載 實驗文檔下載 我的實驗環境:Ubuntu 20.04 lab7文檔解讀 ​ 查看 tsh.c (tiny shell) 文件,您會看到它包含一個簡單的 Unix shell 的功能骨架。為了幫助您入門,我們已經實現了不太有趣的功能。你的任務是完成下 ...
  • 官方wiki:https://wiki.archlinux.org/ 基礎安裝 一:製作安裝介質 下載ISO鏡像文件: https://archlinux.org/download/ # 官方下載網址 在linux系統中可以用pgp驗證系統簽名: gpg --keyserver-options au ...
  • 概述 資料庫中關於數據的查詢有時非常複雜,例如表連接、子查詢等,這種查詢編寫難度大,很容易出錯。另外,在具體操作表時,有時候要求只能操作部分欄位。 為了提高複雜 SQL 語句的復用性和表的操作的安全性,MySQL 提供了視圖特性。所謂視圖,本質上是一種虛擬表,同樣包含一系列帶有名稱的列和行數據。行和 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...