MySQL數據庫的類型

文章目錄

  • 數值類型
    • tinyint類型
    • bit類型
    • 小數類型
    • decimal
  • 日期類型
    • 日期和時間類型
  • 字符串類型
    • char
    • varchar
  • enum和set

數值類型

類型大小范圍(有符號)范圍(無符號)用途
TINYINT1 Bytes(-128,127)(0,255)小整數值
SMALLINT2 Bytes(-32 768,32 767)(0,65 535)大整數值
MEDIUMINT3 Bytes(-8 388 608,8 388 607)(0,16 777 215)大整數值
INT或INTEGER4 Bytes(-2 147 483 648,2 147 483 647)(0,4 294 967 295)大整數值
BIGINT8 Bytes(-9,223,372,036,854,775,808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)極大整數值
FLOAT4 Bytes(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)單精度 浮點數值
DOUBLE8 Bytes(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)雙精度 浮點數值
DECIMAL對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2依賴于M和D的值依賴于M和D的值小數值

tinyint類型

說明:

  • 在MySQL中,整型可以指定是有符號的和無符號的,默認是有符號的。
  • 可以通過unsigned來說明某個字段是無符號的

例如:

注意:盡量不使用unsigned,還不如設計時,將int類型提升為bigint類型。

bit類型

基本語法:

bit[(M)] : 位字段類型。M表示每個值的位數,范圍從164。如果M被忽略,默認為1

如果我們有這樣的值,只存放0或1,這時可以定義bit(1)。這樣可以節省空間。

小數類型

語法:

float[(m, d)] [unsigned] : M指定顯示長度,d指定小數位數,占用空間4個字節

小數:float(4,2)表示的范圍是-99.99 ~ 99.99,MySQL在保存值時會進行四舍五入。

  • 如果為無符號的

例如:

decimal

語法:

decimal(m, d) [unsigned] : 定點數m指定長度,d表示小數點的位數
  • decimal(5,2) 表示的范圍是 -999.99 ~ 999.99
  • decimal(5,2) unsigned 表示的范圍 0 ~ 999.99
  • decimal和float很像,但是有區別:
    • float和decimal表示的精度不一樣

例如:

create table t6 (id int, salary float(10, 8), salary2 decimal(10, 8));
  • 發現decimal的精度更準確,因此如果我們希望某 個數據表示高精度,選擇decimal

說明:float表示的精度大約是7位。

  • decimal整數最大位數m為65。支持小數最大位數d是30。如果d被省略,默認為0。如果m被省略,默認是10。

建議:如果希望小數的精度高,推薦使用decimal。

日期類型

表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每個時間類型有一個有效值范圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。

類型大小 ( bytes)范圍格式用途
DATE31000-01-01/9999-12-31YYYY-MM-DD日期值
TIME3‘-838:59:59’/‘838:59:59’HH:MM:SS時間值或持續時間
YEAR11901/2155YYYY年份值
DATETIME8‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’YYYY-MM-DD hh:mm:ss混合日期和時間值
TIMESTAMP4‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-19 03:14:07’ UTC結束時間是第 2147483647 秒,北京時間 2038-1-19 11:14:07,格林尼治時間 2038年1月19日 凌晨 03:14:07YYYY-MM-DD hh:mm:ss混合日期和時間值,時間戳

日期和時間類型

常用的日期有如下三個:

date:日期 ‘yyyy-mm-dd’ ,占用三字節

datetime: 時間日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范圍從 1000 到 9999 ,占用八字節

timestamp:時間戳,從1970年開始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字節

  • 插入指定時間

  • 時間戳

  • 使用現在的時間

字符串類型

類型大小用途
CHAR0-255 bytes定長字符串
VARCHAR0-65535 bytes變長字符串
TINYBLOB0-255 bytes不超過 255 個字符的二進制字符串
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二進制形式的長文本數據
TEXT0-65 535 bytes長文本數據
MEDIUMBLOB0-16 777 215 bytes二進制形式的中等長度文本數據
MEDIUMTEXT0-16 777 215 bytes中等長度文本數據
LONGBLOB0-4 294 967 295 bytes二進制形式的極大文本數據
LONGTEXT0-4 294 967 295 bytes極大文本數據

char

語法:

char(L): 固定長度字符串,L是可以存儲的長度,單位為字符,最大長度值可以為255

說明:

  • char(2)表示可以存放兩個字符,可以是字母或漢字,但是不能超過2個, 最多只能是255

varchar

語法:

varchar(L): 可變長度字符串,L表示字符長度,最大長度65535個字節

說明:

  • 關于varchar(len),len到底是多大,這個len值,和表的編碼密切相關:

varchar長度可以指定為0到65535之間的值,但是有1 - 3個字節用于記錄數據大小,所以說有效字節數是65532。

當我們的表的編碼是utf8時,varchar(n)的參數n最大值是65532/3=21844(因為utf中,一個字符占用3個字節),如果編碼是gbkvarchar(n)的參數n最大是65532/2=32766(因為gbk中,一個字符占用2字節)。

enum和set

語法:

enum:枚舉,“單選”類型;

enum(‘選項1’,‘選項2’,‘選項3’,…);

該設定只是提供了若干個選項的值,最終一個單元格中,實際只存儲了其中一個值;而且出于效率考 慮,這些值實際存儲的是“數字”,因為這些選項的每個選項值依次對應如下數字:1,2,3,…最多65535 個;當我們添加枚舉值時,也可以添加對應的數字編號。

語法:

set:集合,“多選”類型;

set(‘選項值1’,‘選項值2’,‘選項值3’, …);

該設定只是提供了若干個選項的值,最終一個單元格中,設計可存儲了其中任意多個值;而且出于效率考慮,這些值實際存儲的是“數字”,因為這些選項的每個選項值依次對應如下數字:1,2,4,8,16,32,… 最多64個。

說明:不建議在添加枚舉值,集合值的時候采用數字的方式,因為不利于閱讀。

例如:

  • gender可以單選(enum)
  • 愛好可以多選(set)
create table stu(name varchar(6), gender enum('男','女'), hobby set('寫代碼', '打羽毛球', '籃球', '跑步')
);

  • 查找愛好只有寫代碼的人

  • 但是不能查詢出所有愛好寫代碼的人,就可以使用find_in_set函數

find_in_set(sub,str_list) :如果substr_list中,則返回下標;如果不在,返回0;str_list用逗號分隔的字符串。

總結:

  • 如果我們向mysql特定的類型中插入不合法的數據,MySQL一般都是直接攔截我們,不讓我們做對應的操作!
  • 反過來,如果我們已經有數據被成功插入到mysql中了,一定插入的時候是合法的!
  • 所以,mysq中,一般而言,數據類型本身也是一種:約束

  • mysql是否有無符號類型呢?
  • 答案是有的!但是mysql官方文檔里明確說,不建議使用無符號類型,而且會在未來的般版本中就不支持了

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

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

相關文章

【Docker基礎】Docker鏡像管理:docker build詳解

目錄 1 Docker鏡像基礎概念 1.1 什么是Docker鏡像 1.2 鏡像的分層結構 2 docker build命令詳解 2.1 docker build基本語法 2.2 構建上下文概念 3 Dockerfile編寫實踐示例 3.1 Dockerfile指令詳解 3.1.1 FROM 3.1.2 RUN 3.1.3 COPY vs ADD 3.1.4 CMD vs ENTRYPOINT …

在 macOS 上部署 Akash Network 的完整 Shell 腳本解決方案

以下是在 macOS 上部署 Akash Network 的完整 Shell 腳本解決方案,包含詳細注釋和錯誤處理: #!/bin/bash # Akash Network macOS 部署腳本 v2.5 # 功能:在 macOS 系統上完整部署 Akash Network 節點和客戶端工具 # 作者:DeepSeek 區塊鏈團隊 # 日期:2025-06-20 # 文檔:h…

【分布式理論】讀確認數與寫確認數:分布式一致性的核心概念

文章目錄 零、概述一、基本概念解釋1、 什么是寫確認數(w)?2、 什么是讀確認數(r)?3、一致性級別的對應關系 二、工作流程詳解1、 寫操作的完整流程2、 讀操作的完整流程 三、強一致性的數學原理1、 為什么…

滾珠導軌在醫療設備中有多重要?

在醫療設備領域,穩定性是保障手術安全、提升診斷精度的核心要素。無論是手術機器人精準的器械操作,還是CT掃描儀高速穩定的掃描運動,都離不開背后精密傳動系統的支持。作為線性運動的核心部件,滾珠導軌憑借其獨特的滾動摩擦原理與…

港科ISM選課攻略整理

畢業要求 課程和課程目錄(ISM專業) "D:\HKUST-ISM\prepare\中英Program & Course Catalog.pdf" 課程和課程目錄(全部ISOM課程) "D:\HKUST-ISM\prepare\全部ISOM Course Catalog.pdf" 兩個可選專業方向 Financial Technolo…

rent8_wechat-最常用出租屋管理系統-微信小程序

rent8_wechat-最常用出租屋管理系統是rent8的微信小程序,需要和rent8配合使用。rent8_wechat基于Tdesign開發。 核心功能 房產管理:新增房產信息、修改房產信息、刪除房產信息。房間管理:新增房間信息、修改房間信息、刪除房間信息、入住管…

OpenCV CUDA模塊設備層---- 絕對值函數abs()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 這是 OpenCV 的 cv::cudev 模塊中用于 CUDA 設備端(device)的絕對值函數,專門處理 uchar1 類型(即…

IEC61850 通信協議測試驗證方法詳解

一、MMS 協議測試方法 MMS(制造報文規范)是 IEC61850 中用于設備監控和控制的核心協議,測試需覆蓋以下維度: (一)協議棧實現驗證 連接管理測試 測試用例:建立和釋放 MMS 連接 100 次&#xf…

關于 Kyber:抗量子密碼算法 Kyber 詳解

一、基本概念 后量子密碼學(PQC) │ ├──> 是一個領域(研究如何在“量子時代”保護數據安全) │ └──> Kyber 是這個領域中設計出來的一個“抗量子密碼算法”└──> Kyber 是用于加密密鑰交換的算法(叫…

如何保障具身智能系統級安全?鴻道OS給出中國方案

由東土科技自主研發完成的鴻道(Intewell)工業操作系統正式發布。東土科技董事長李平與該公司全資子公司光亞鴻道總經理鄒露君在接受第一財經等采訪時,解釋了如何通過操作系統為具身智能產業提供底層支撐,解決產業規模化落地的安全…

深入淺出:JavaScript ES6中類(Class)的革新與實踐

深入淺出:JavaScript ES6中類(Class)的革新與實踐 在JavaScript的發展歷程中,ES6(ECMAScript 2015)無疑是一個里程碑式的版本。它不僅引入了let、const、箭頭函數等特性,更通過**類&#xff08…

華大北斗TAU804M-N2B0雙頻單北斗高精度定位模塊 100%國產雙頻北斗 打破u-blox技術壟斷

華大北斗TAU804M-N2B0雙頻單北斗模塊深度解析 1. 產品定位 TAU804M-N2B0 是華大北斗(HDSC)推出的 雙頻單北斗高精度定位模塊,支持 B1IB2a雙頻信號接收,專為 高精度定位、抗多徑干擾 場景設計,是北斗三號系統應用的標桿…

IP證書申請攻略細則,有何作用?

IP證書申請攻略細則及作用解析 一、IP證書的作用 數據加密傳輸 IP證書通過SSL/TLS協議對客戶端與服務器之間的數據進行加密,防止數據在傳輸過程中被竊取或篡改,適用于物聯網設備、API接口、測試服務器等直接通過IP訪問的場景。 身份驗證與防偽造 瀏覽器…

回文鏈表C++

給你一個單鏈表的頭節點 head ,請你判斷該鏈表是否為回文鏈表。如果是,返回 true ;否則,返回 false 。 時間復雜度較大的解法: /*** Definition for singly-linked list.* struct ListNode {* int val;* Lis…

限流系列之三:TDMQ for Apache Pulsar 限流技術深度解析

導語 在高速、高吞吐量的消息處理場景中,TDMQ Pulsar 版以其卓越的性能和可擴展性成為眾多企業的首選。然而,隨著生產者和消費者以極高的速度生產/消費大量消息,服務器資源如 CPU、內存、網絡及磁盤 IO 等可能會面臨飽和風險。為此&#xff…

非研發部門參與產品開發過程的價值體現

漢捷咨詢 胡紅衛 企業已經越來越意識到新產品開發項目需要市場、銷售、制造、采購、服務、財務等非研發部門的參與,嘗試建立跨部門的項目組,安排相關人員參與項目,但是效果如何呢?在漢捷咨詢對很多企業調研診斷過程中,…

Kafka的存儲與索引:數據處理的底層奧秘

一、引言 Kafka 之所以能在海量數據的傳輸和處理過程中保持高效的性能和低延遲,背后隱藏著眾多精妙的設計,而其存儲與索引機制便是其中的核心奧秘。接下來,讓我們深入探尋 Kafka 存儲機制的基石與架構。 二、分區與日志組織? Kafka 中的消…

大模型與搜索引擎的技術博弈及未來智能范式演進

基于認知革命與技術替代的全景綜述 一、大模型對搜索引擎的替代性分析:技術范式與市場重構 (1)技術原理的代際分野 傳統搜索引擎遵循 "爬蟲抓取 - 索引構建 - 關鍵詞排序" 的三段式架構,其核心是基于 PageRank 算法的…

XC7K325T數據采集卡設計原理圖:786-基于X86 CPU+XC7K325T的16路16bit 1M sps同步數據采集卡

基于X86 CPUXC7K325T的16路16bit 1M sps同步數據采集卡 一、板卡概述 板卡為緊湊型的X86FPGA的工業監測處理平臺,高度集成的硬件和完整的labview開發軟件,大大方便客戶現場使用。 二、板卡功能 板卡功能 參數內容 X86 SOM核心板 主頻 2.0GHz …

單片機3種按鍵程序消抖方法

1,查詢法延時模式 u8 key01;u8 x0;KEY1;while(1){if(KEY0) //"按鍵按下"{delay(10); //延時10msif(KEY0 && kdy01) //按下有10ms 且上狀態是1。即下降沿時{key00; //將上狀態置0.防止按住不放時&#xff0…