MySQL數據類型詳解

      網友投稿 823 2025-04-03

      按照官方的文檔(8.0) 分析,MySQL的數據類型大概可以分為五類:數值數據類型、日期和時間數據類型、字符串數據類型、空間數據類型、JSON數據類型


      1、數值數據類型

      1.1、整數

      MySQL支持SQL表中整數integer(int)和smallint。作為一個可擴展標準,MySQL也支持整數tinyint、mediumint和bigint。

      MySQL支持的整數存儲空間和范圍

      1.2、定點數

      定點數 自變量的值范圍可以表示為:DECIMAL(M,D)

      m是最大位數(精度)。范圍是1到65。默認值為10

      d是小數點右邊的位數(小數位數)。范圍是0到30,并且不能大于m。默認值為0

      decimal的值使用二進制格式存儲,該格式將9個十進制數字打包為4個字節。每個值的整數和小數部分的存儲要求分別確定。九個數字的每個倍數需要4個字節,其余的剩余數字則需要4個字節的一部分。

      當decimal(65, 0)時,支持最大范圍[-1065-1, 1065-1]

      1.3、浮點數

      浮點數有float(單精度)和double(雙精度)

      浮點數可以和定點數一樣指定m和d,但是為了保證最大可能的可移植性,需要使用浮點數存儲的代碼應使用float或double precision,不規定精度或位數。

      1.4、位類型

      位類型(bit),它是用來存放二進制數據的,bit(1)表示存儲長度為1位的二進制數據。超出存儲長度會被直接截取。取值范圍[bit(1), bit(64)]

      2、日期和時間數據類型

      日期和時間數據類型用于表示時間值date、time、datetime、timestamp和year。

      timestamp自動設置為最新修改的日期和時間,定義一個字段為timestamp,這個字段里的時間數據會隨其他字段修改的時候自動刷新,存放這條記錄最后被修改的時間

      每個時間類型有一個有效值范圍和一個"零"值。

      3、字符串類型

      字符串數據類型char、varchar、binary、varbinary、blob、text、enum和set。

      3.1、char和varchar

      char(n)若存入字符數小于n,默認在后面補充空格,查詢的時候再將空格去掉。所以char類型存儲的字符串末尾不能有空格。

      varchar的值是可變長度的字符串。長度可以指定為0到65535之間的值。有效最大長度 取決于最大行大小和所使用的字符集。

      官方示例:

      顯示在表最后一行中的值僅在不使用嚴格的SQL模式 時才適用,如果啟用了嚴格模式,則會報錯。

      MySQL數據類型詳解

      3.2、binary和varbinary

      (binary、varbinary)和(char、varchar)類似,不同的是它們存儲二進制字節字符串而不是字符串。

      binary(n) 若存入字符數小于n,默認在后面補充0x00,查詢的時候再去掉。

      3.3、text和blob

      blob是一個二進制大對象,可以容納可變數量的數據。tinyblob、blob、mediumblob和longblob這四個blob類型。僅在它們可以保存的值的最大長度上有所不同。

      text的四個類型tinytext、text、mediumtext和longtext和blob的四種類型相對應。

      blob值被視為二進制字符串(字節字符串)。它們具有binary字符集和排序規則,并且比較和排序基于列值中字節的數字值。

      text值被視為非二進制字符串(字符字符串)。它們具有binary以外的字符集,并且根據字符集的排序規則對值進行排序和比較。

      3.3、enum

      enum是一個字符串對象,值是從允許輸入的列表中選擇的,這些值在表創建時在列規范中定義。

      enum列表的最大數量為65535,每個值末尾的空格都會被刪除。

      enum列表有not null屬性,其默認值為取值列表的第一個元素。

      enum列表沒有not null,則enum類型將允許插入null,并且null為默認值。

      enum列表中的每個值獨有一個順序排列的編號,MySQL會存入這個編號而不是對應的值。

      3.4、set

      set是可以具有零個或多個值的字符串對象,這些值在表創建時在列規范中定義。

      set的最大數量為64,每個值末尾的空格都會被刪除。

      取多個元素時,不同元素用逗號隔開。

      大概可以理解為enum的多選版。

      4、json數據類型

      MySQL支持json定義的數據類型,該類型可有效訪問json(javaScript對象表示法)文檔中的數據。

      自動驗證存儲在json列中的json文檔。無效的文檔會產生錯誤。

      查詢性能的提升:查詢不需要遍歷所有字符串才能找到數據。

      json存儲的數據不能是null,只能是json格式的數據

      5、空間數據類型

      注:沒有理解,拷貝部分官方的介紹。

      空間數據類型有下面幾種:

      GEOMETRY: 是層次結構的根類。可以存儲任何類型的幾何值。其他單值類型(POINT, LINESTRING和POLYGON)將其值限制為特定的幾何類型。

      Point:(點)指的是代表坐標空間中單個位置的幾何類。

      Curve: (曲線)是一種1維幾何對象,通常由一系列點表示。Curve的特殊子類定義了點之間的內插類型。Curve是一種非實例化類。

      LineString: 是具有點之間線性內插特性的Curve。

      Surface: 是一種2維幾何對象。它是一種非實例化類。其唯一的可實例化子類是Polygon。

      Polygon: 是代表多邊幾何對象的平面Surface。它由單個外部邊界以及0或多個內部邊界定義,其中,每個內部邊界定義為Polygon中的1個孔。

      GeometryCollection: 是由1個或多個任意類幾何對象構成的幾何對象。

      MultiPoint: 是一種由Point元素構成的幾何對象集合。這些點未以任何方式連接或排序。

      MultiCurve: 是一種由Curve元素構成的幾何對象集合。MultiCurve是一種非實例化類。

      MultiLineString: 是一種由LineString元素構成的幾何對象集合。

      MultiSurface: 是一種由Surface元素構成的幾何對象集合。MultiSurface是一種非實例化類。其唯一的可實例化子類是MultiPolygon。

      MultiPolygon: 是一種由Polygon元素構成的幾何對象集合。

      參考鏈接:MySQL的數據類型

      MySQL 數據結構

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:查找和替換文字
      下一篇:python中的測試框架
      相關文章
      亚洲AV永久无码精品一福利| 亚洲最大的成人网| 亚洲国产精品综合久久20| 久久丫精品国产亚洲av不卡| 久久久久亚洲精品美女| 人人狠狠综合久久亚洲婷婷| 亚洲一区二区三区偷拍女厕 | 另类专区另类专区亚洲| 亚洲丰满熟女一区二区哦| 亚洲高清毛片一区二区| 爱情岛亚洲论坛在线观看| 狠狠综合亚洲综合亚洲色| 国产精品亚洲一区二区在线观看 | 亚洲色欲色欱wwW在线| 亚洲国产精品美女| 精品丝袜国产自在线拍亚洲| 国产亚洲sss在线播放| 456亚洲人成影院在线观| 亚洲精品无码久久久久秋霞| 久久亚洲精品无码gv| 久久久久亚洲精品无码网址色欲 | 亚洲av色香蕉一区二区三区蜜桃| 亚洲Av永久无码精品一区二区| 最新亚洲人成无码网站| 亚洲色偷偷狠狠综合网| 在线A亚洲老鸭窝天堂| 国产成A人亚洲精V品无码性色| 亚洲av综合avav中文| 少妇中文字幕乱码亚洲影视| 亚洲国产理论片在线播放| 国产成人精品亚洲2020| 亚洲国产精品无码久久久秋霞1 | 国产成人亚洲精品播放器下载| 国产成人99久久亚洲综合精品| 久久亚洲欧洲国产综合| 久久亚洲精品国产精品黑人| 麻豆亚洲AV永久无码精品久久| 亚洲一区二区三区久久久久| 亚洲精品成a人在线观看☆| 国产亚洲精品免费| 亚洲日韩精品无码一区二区三区 |