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存類 Mysql儲存型別選擇
基本原則 1.選擇小的型別 保證足夠的同時越小越好 可以選擇int就不選擇bigint 2.簡單 可以用整型就不用字元型,字元型占用空間運算較難等 3.盡量避免null 整型tinyint 8 smallint 16 mediumint 24 int 32 bigint 64 其中有unsigned...
mysql日誌類資料儲存 MySQL 日誌管理詳解
大綱 一 日誌分類 二 日誌詳解 注 mysql版本,mysql 5.5.32 不同版本的mysql變數有所不同 一 日誌分類 錯誤日誌 查詢日誌 慢查詢日誌 二進位制日誌 中繼日誌 事務日誌 滾動日誌 二 日誌詳解 1.錯誤日誌 說明 在對應的資料目錄中,以主機名 err命名的檔案,錯誤日誌記錄的...
Mysql儲存過程 字元類操作
一.字串類 concat string2 連線字串 instr string substring 返回substring首次在string中出現的位置,不存在返回0 lcase string2 轉換成小寫 left string2 length 從string2中的左邊起取length個字元 len...