數字
- 擴充:顯示寬度,僅僅是告訴mysql當指定了顯示寬度的數字字元個數在少於指定的寬度時 是否 以空白填充前面。並不影響其 儲存範圍、大於指定寬度數位顯示。
- 與顯示寬度配套的擴充:zerofill,是否以”0“代替空格” “去填充。這個0 不影響數字參與的運算式計算;不影響普通的查詢,但可能影響複雜的查詢中用到的暫存資料表資料,mysql總是假定你的寬度設定是合適數位長度的
- unsigned:禁止儲存負數。對於整數會影響到數位範圍大小。對於其他數字僅僅阻止負數,不影響範圍
- auto_increment:整數和浮點數均可具有該屬性。當對該列賦值null或0時,該列會在最大值的基礎上 +1
- ansi標準中的float(n):此處的n只是指明precision,注意不是指明儲存範圍!mysql支援這一文法,但此處的n僅僅決定了需要使用的儲存空間:(0-23)為4位元組單精確度浮點型,(24-53)為8位元組雙精確度浮點型。ansi標準的double(n)與之類似
- mysql擴充了該類型定義:float(m,d)、real(m,d)、double precision(m,d) m只整個數位位元——相當於精度;d指小數點後的數字個數——相當於scale。mysql總是四捨五入到指定的d
- 預設情況下double=real=ansi的double precision類型。如果開啟了real_as_float,real就是float類型了
- bit(m)本質上就是一個bigint,但他的輸入、顯示形式不同
- 當一個更大範圍的數字儲存到較小範圍的數字時會發上什嗎?strict 模式下:錯誤!非strict 模式,截斷到合適的值存入!
日期時間類型
- allow_invalid_dates 可以儲存可能錯誤的日期如‘2009-02-30’
- no_zero_in_datel可以禁止mysql儲存”0“月、”0“日期,如”2009-03-00“
- mysql5.1.18之前,data 和 dateitme進行比較時,將datetime日期提取出來,和date進行字串比較。之後,將date + '00:00:00變換為datetime,進行值比較
- no_zero_in_date被禁止的話,可以使用‘0000-00-00’表示虛擬日期,主要是為了方便
- 儘管mysql可以以多種格式解析日期,但必須是”yyyy-mm-dd“的順序
- 在數字環境中,日期時間自動以數字值參與計算;反之一樣
- ”0“日期時間是十分特殊的東西。你可以顯示的引用、查看、併當作‘0’或0使用。myodbc驅動在2.50.12以上會自動轉換為null值
- 分隔字元隨意
- 長短格式均可
- 沒有分隔字元的數字串也是可以的。這依賴於其位元和數字範圍的有效性
- 字串和數字串均可
- 函數的計算結果
- 在有分隔字元的情況下:每個部分的0是可以省略的
- timestamp類型總是以utc日期時間儲存,但總是以當前時區顯示。mysql在內部處理上有一個轉換。
在create table時,第一個timestamp列可以有幾種建立方式:
timestamp預設為not null default current_timestamp on update current_timestamp
如果僅指定了default 而沒有on update,則當前日期時間作為其預設值,但不再自動更新
如果沒有default 而僅指定有on update,則當前日期時間作為0,可自動更新
如果指定了其他default值,指定了on update current_timestamp,則初始化為指定值,自動更新
如果指定了其他default值,沒有指定on update ,則初始化為指定值,不再自動更新
對於不是第一個timestamp列,如果想讓其自動初始化或自動更新為當前日期時間,就必須為第一個timestamp類指定一個其他default值!!
timestamp 不能儲存null值,除非你顯示指定null列約束後 指定default null
文本類型
- char 和varchar 基本上是類似的:區別在於二者的最大儲存長度、儲存是否尾隨空格、擷取是否截掉空格
- 當指定的字串範圍超過最大字元數時,嚴格sql模式下,如果被截取掉的不是空格,錯誤!非嚴格sql模式下,字串截斷到適合的長度
- char和varchar總進行字串比較是 永遠不考慮 尾隨空格
- binary 和 varbinary儲存的僅僅是沒有character set 的字元的數字形式二進位字串(不是bit串),沒有字元集轉換的資訊。注意這和 char varchar類型的binary屬性不同,後者是使用character set 二進位定序的代名詞
- binary右填充‘0x00’至指定的長度,但擷取是不會截斷‘0x00’
- enum類型 是一個 value:index 對的有限列表,特殊的null:null,‘’:0。其他為 val1:1、val2:2 .......
- 當enum用在數字環境時,它自動以其index值參與計算