mysql 基本資料型別 MySQL基本資料型別

2021-10-17 16:34:08 字數 3018 閱讀 2962

char 和 varchar 型別

char 型別用於定長字串,並且必須在圓括號內用乙個大小修飾符來定義。這個大小修飾符的範圍從 0-255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。

char 型別可以使用 binary 修飾符。當用於比較運算時,這個修飾符使 char 以二進位制方式參於運算,而不是以傳統的區分大小寫的方式。

char 型別的乙個變體是 varchar 型別。它是一種可變長度的字串型別,並且也必須帶有乙個範圍在 0-255 之間的指示器。char 和 varchgar 不同之處在於 musql 資料庫處理這個指示器的方式:char 把這個大小視為值的大小,不長度不足的情況下就用空格補足。而 varchar 型別把它視為最大值並且只使用儲存字串實際需要的長度(增加乙個額外位元組來儲存字串本身的長度)來儲存值。所以短於指示器長度的 varchar 型別不會被空格填補,但長於指示器的值仍然會被截短。

因為 varchar 型別可以根據實際內容動態改變儲存值的長度,所以在不能確定字段需要多少字元時使用 varchar 型別可以大大地節約磁碟空間、提高儲存效率。

varchar 型別在使用 binary 修飾符時與 char 型別完全相同。

text 和 blob 型別

對於字段長度要求超過 255 個的情況下,mysql 提供了 text 和 blob 兩種型別。根據儲存資料的大小,它們都有不同的子型別。這些大型的資料用於儲存文字塊或影象、聲音檔案等二進位制資料型別。

text 和 blob 型別在分類和比較上存在區別。blob 型別區分大小寫,而 text 不區分大小寫。大小修飾符不用於各種 blob 和 text 子型別。比指定型別支援的最大範圍大的值將被自動截短。

日期和時間型別

在處理日期和時間型別的值時,mysql 帶有 5 個不同的資料型別可供選擇。它們可以被分成簡單的日期、時間型別,和混合日期、時間型別。根據要求的精度,子型別在每個分型別中都可以使用,並且 mysql 帶有內建功能可以把多樣化的輸入格式變為乙個標準格式。

型別大小

(位元組)

範圍格式

用途date

1000-01-01/9999-12-31

yyyy-mm-dd

日期值time

『-838:59:59』/』838:59:59』

hh:mm:ss

時間值或持續時間

year

1901/2155

yyyy

年份值datetime

1000-01-01 00:00:00/9999-12-31 23:59:59

yyyy-mm-dd hh:mm:ss

混合日期和時間值

timestamp

1970-01-01 00:00:00/2037 年某時

yyyymmdd hhmmss

混合日期和時間值,時間戳

date、time 和 tear 型別

mysql 用 date 和 tear 型別儲存簡單的日期值,使用 time 型別儲存時間值。這些型別可以描述為字串或不帶分隔符的整數序列。如果描述為字串,date 型別的值應該使用連字型大小作為分隔符分開,而 time 型別的值應該使用冒號作為分隔符分開。

需要注意的是,沒有冒號分隔符的 time 型別值,將會被 mysql 理解為持續的時間,而不是時間戳。

mysql 還對日期的年份中的兩個數字的值,或是 sql 語句中為 tear 型別輸入的兩個數字進行最大限度的通譯。因為所有 tear 型別的值必須用 4 個數字儲存。mysql 試圖將 2 個數字的年份轉換為 4 個數字的值。把在 00-69 範圍內的值轉換到 2000-2069 範圍內。把 70-99 範圍內的值轉換到 1970-1979 之內。如果 mysql 自動轉換後的值並不符合我們的需要,請輸入 4 個數字表示的年份。

dateyime 和 timestamp 型別

除了日期和時間資料型別,mysql 還支援 dateyime 和 timestamp 這兩種混合型別。它們可以把日期和時間作為單個的值進行儲存。這兩種型別通常用於自動儲存包含當前日期和時間的時間戳,並可在需要執行大量資料庫事務和需要建立乙個除錯和審查用途的審計跟蹤的應用程式中發揮良好作用。

如果我們對 timestamp 型別的字段沒有明確賦值,或是被賦與了 null 值。mysql 會自動使用系統當前的日期和時間來填充它。

復合型別

mysql 還支援兩種復合資料型別 enum 和 set,它們擴充套件了 sql 規範。雖然這些型別在技術上是字串型別,但是可以被視為不同的資料型別。乙個 enum 型別只允許從乙個集合中取得乙個值;而 set 型別允許從乙個集合中取得任意多個值。

enum 型別

enum 型別因為只允許在集合中取得乙個值,有點類似於單選項。在處理相互排拆的資料時容易讓人理解,比如人類的性別。enum 型別字段可以從集合中取得乙個值或使用 null 值,除此之外的輸入將會使 mysql 在這個欄位中插入乙個空字串。另外如果插入值的大小寫與集合中值的大小寫不匹配,mysql 會自動使用插入值的大小寫轉換成與集合中大小寫一致的值。

enum 型別在系統內部可以儲存為數字,並且從 1 開始用數字做索引。乙個 enum 型別最多可以包含 65536 個元素,其中乙個元素被 mysql 保留,用來儲存錯誤資訊,這個錯誤值用索引 0 或者乙個空字串表示。

mysql 認為 enum 型別集合**現的值是合法輸入,除此之外其它任何輸入都將失敗。這說明通過搜尋包含空字串或對應數字索引為 0 的行就可以很容易地找到錯誤記錄的位置。

set 型別

set 型別與 enum 型別相似但不相同。set 型別可以從預定義的集合中取得任意數量的值。並且與 enum 型別相同的是任何試圖在 set 型別欄位中插入非預定義的值都會使 mysql 插入乙個空字串。如果插入乙個即有合法的元素又有非法的元素的記錄,mysql 將會保留合法的元素,除去非法的元素。

乙個 set 型別最多可以包含 64 項元素。在 set 元素中值被儲存為乙個分離的「位」序列,這些「位」表示與它相對應的元素。「位」是建立有序元素集合的一種簡單而有效的方式。並且它還去除了重複的元素,所以 set 型別中不可能包含兩個相同的元素。

希望從 set 型別欄位中找出非法的記錄只需查詢包含空字串或二進位制值為 0 的行。

MySql 基本資料型別

型別 大小描述 char length length位元組 定長字段,長度為0 255個位元組 varchar length string長度 1位元組 變長字段,在mysql5.03以前,長度為0 255個位元組,在5.0.3以後,最大長度為65535位元組。乙個utf8字元佔3個位元組 乙個gb...

MySQL 基本資料型別

mysql是乙個關係型資料庫管理系統,由瑞典mysql ab 公司開發,目前屬於 oracle 旗下產品。mysql 是最流行的關係型資料庫管理系統之一,在 web 應用方面,mysql是最好的 rdbms relational database management system,關聯式資料庫管理...

MySQL基本資料型別

型別 大小描述 char length length位元組 定長字段,長度為0 255個位元組 varchar length string長度 1位元組 變長字段,在mysql5.03以前,長度為0 255個位元組,在5.0.3以後,最大長度為65535位元組。乙個utf8字元佔3個位元組 乙個gb...