MySQL 資料型別(轉貼)
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 | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59'/'838:59:59' | HH:MM:SS | 時間值或持續時間 |
YEAR | 1 | 1901/2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和時間值 |
TIMESTAMP | 8 | 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 和 VARCHAR 型別 CHAR 型別用於定長字串,並且必須在圓括號內用一個大小修飾符來定義。這個大小修飾符的範圍從 0-255。比指定長度大的值將被截短,而比指定長度小的值將會用空格作填補。 CHAR 型別可以使用 BINARY 修飾符。當用於比較運算時,這個修飾符使 CHAR 以二進
mysql資料型別(2018.09.26學習筆記)
1.mysql的資料型別 1.0數值 1.0.0整數 tinyint smallint mediumint int bigint 1.0.1浮點小數 float double 1.0.2定點小數 decimal
mysql 資料型別 (最大值 和 最小值)
1、整型 MySQL資料型別 含義(有符號) tinyint(m) 1個位元組 範圍(-128~127) smallint(m) 2個位元組 範圍(-32768~32767) mediumint(m) 3個位元組 範圍(-8388608
9 種流行的檔案、資料夾比較工具點評 (轉貼)
1、FCU推薦:★★主頁: http://fcu.smibe.com/功能:目錄比較,檔案比較特點:檔案比較以三個視窗顯示上部分的左側視窗和右側視窗為原始比較檔案,不同部分以顏色區別下部分視窗為合併對照檔案,相同部分不變,對於不同部分,交替顯示左右兩側的內容缺點:軟體提供基本的比較合併操作,不是特別方便系
js入門 關於js屬性及其資料型別(詳解)
1. js的本質就是處理資料。資料來自於後臺的資料庫。 所以變數就起到一個臨時儲存資料的作用。 ECMAScript制定了js的資料型別。 資料型別有哪些? 1. 字串 String 2. 數字 Number
JavaScript資料型別(細數)
JavaScript資料型別 前言 只有深入學精一門語言,學其他語言才能更好地舉一反三,觸類旁聽。 從接觸前端開發到現在已經將近 2 年了,最近又看了阮一鋒寫的: 《JavaScript 語言入門教程》 一書,重溫 JavaScript 。 小汪將工作和麵試遇到過的,沒多少人知道的
JTextField限制輸入資料型別(java GUI)
package javaBasic; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ControlClass { public static void main(String[] a
外企攻略(轉貼)
本人三流本科垃圾專業,先後供職flectronics,tyco,nokia. 現在一北京外企做管理,我開此帖非為炫耀,只是希望我的經歷與看法或許對你有點啟 迪。任何事物都有規律可尋,外企也一樣。 如果你想進還沒進入外企,那你要為此帖子頂一下,全當支援你自己。 如果你已經在外企工作
最簡潔的mysql資料遷移(目錄變更)
停止mysql服務 service mysql stop cp -rf /var/lib/mysql/* /data/mysql_data/ 新目錄許可權分配 chown -R mysql:mysql 新目錄 修改 my.cnf, [mysqld] 和[client
對敏捷軟體開發方法的一些體會(轉貼)
我覺得推行一個新技術最大的阻力還是來自程式設計師自身管理層一般不會關心開發方法和技術細節的問題struts的流行恐怕主要也是技術人員發自內心的認可和推崇造成的吧畢竟這牽涉到他的切身利益(工作效率、成就感、樂趣。。。)同樣的道理,單元測試和其他敏捷方法也要首先打動技術人員的心,
二、python 數值型別(字串切片)和資料型別(元組)
linux下 可以安裝python工具;yum install -y ipython ipython支援 命令補全 數值型別 數值型別分為整形 ,長整形,浮點型,複數行 整形:平常使用的整數 長整型:很大的整數。 type 為 long 浮點:帶小數點的數字 想
災難恢復方案設計的關鍵步驟(轉貼)
對於一個企業來說,災難發生過後,最嚴重的問題不是來自於如何從磁帶中將資料恢復出來,而是來自於:1、缺乏、甚或完全沒有文件化的恢復計劃和措施;2、在重新配置硬體的時候,找不到原始系統配置和設定的文件;3、磁帶文件、歸檔和跟蹤相關資料的缺失,或者不完整的磁帶歸檔策略;4、對部門級
opener.document.all是什麼意思(轉貼)
document.all代表的是ie瀏覽器..document.layers代表的是Netscape瀏覽器 比如if (!document.layers&&!document.all) 這句話判斷一下使用者所使用的瀏覽器 1、window.opene
網路socket程式設計指南 (轉貼)1
網路socket程式設計指南 (轉貼)1http://www.chinaunix.net 作者:流浪者 發表於:2003-04-11 17:09:07 Beej網路socket程式設計指南 ------------------------------------
(轉貼)徹底解除安裝hp印表機驅動
現將徹底解除安裝hp印表機的驅動程式的方法,羅列如下: 1、把安裝光碟放入光碟機,不要讓他自動執行,用滑鼠右鍵開啟光碟,在Utils資料夾中選擇Scrubber,然後選擇作業系統版本,然後點選Scrubber,會自動解除安裝印表機驅動。 2、在控制面板
(二)資料型別(data type)
資料型別(data type) 資料型別分為基本資料型別和引用資料型別。 1、基本資料型別 8種基本資料型別。各個基本型別之間是平等的,不存在大小和父子類的關係。它們之間的大小隻是從儲存資料所佔用的空間來比較的。 1.數值型 1.在Java
union 聯合資料型別(共用體)
union 共用體,聯合體,聯合資料型別,和struct類似的一種陣列型別,可以存放不同型別的資料,但是和struct又有很大的區別。union裡面的成員變數公用一個記憶體首地址地址。各成員的解析按照你列印的方式或者讀取的方式。 union的幾個特性: (
Kotlin入門之資料型別(Int String...)
val (不可變的 相當於java中的final修飾) var ( 可以變的 可以重複賦值)val mBoolean:Booolean=true val 不可變的值為true mBoolean變數名 :Booolean(資料型別)=true (值)
C位域詳解(轉貼)
二、位域的使用位域的使用和結構成員的使用相同,其一般形式為: 位域變數名·位域名 位域允許用各種格式輸出。main(){ struct bs { unsigned a:1; unsigned b:3; unsigned c:4; } bit,*pbit; bit.a=1; bit.b=7; bit.c=15;
Java的原生資料型別(8種)
Java 原生資料型別(8種) Java中的原生資料型別(Primitive DataType)共有8種: 1)整型: 使用int表示(32位)。 2)位元組型: 使用byte表示(從-128到127之間的256個整數)。 3)短整型: 使用short表示(16位)。 4)長整型: 使用long表