Mysql:文法:資料類型、文字常量

來源:互聯網
上載者:User

數字類型:對於整數允許進行顯示寬度的設定,這個設定並不影響其值的實際範圍;對於bit數、浮點、定點小數,m是指其有效數字位元,影響值的範圍。

  • serial:bigint unsigned not null auto_increment unique
  • serial default value: not null auto_increment unique
  • bit[(m:=1:64)]  m預設為1
  • tinyint[(m)] [unsigned] [zerofill]
  • {bool|boolean}:tinyint[1]  --實際上 true=1 false=0,在儲存時,任何非0的值都是true(1)
  • smallint[(m)] [unsigned] [zerofill]
  • mediumint[(m)] [unsigned] [zerofill]
  • {int|integer}[(m)] [unsigned] [zerofill]
  • bigint[(m)] [unsigned] [zerofill]
  • float[(m,d)] [unsigned] [zerofill]:--預設依賴於硬體
  • float[(p)]:--為了odbc而提工的類型
  • {double [precision]}[(m,d)] [unsigned] [zerofill]:--預設依賴於硬體
  • {dec|decimal|numeric|fixed}[(m:=10:65,d:0:30)] [unsigned] [zerofill] m預設為10,d預設為0

 

日期時間類型

  • date :'1000-01-01':'9999-12-31'  顯示: 'YYYY-MM-DD' 輸入:{文字常量|數字}
  • 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:01'UTC:'2038-01-09 03:14:07'UTC  顯示: 'YYYY-MM-DD HH:MM:SS' 輸入:{文字常量|數字}

    • timestamp儲存的值是自'1970-01-01 00:00:00'依賴經過的秒數,但它卻無法表示'1970-01-01 00:00:00',因為 他的值為0時有其他的含義表示'0000-00-00 00:00:00'
    • timestamp的主要作用就是自動更新現有記錄的insert或update的時間:表裡第一個timestamp列會自動在這兩種操作發生時更新,或者 為他賦值null時。當然你也可以在顯示給他符其他值!
    • 通常timestamp列總是作為19位的字串,你可以通過“+0”讓他隱式轉換為bigint值
  • time '-838:59:59':'838:59:59' 顯示:'HH:MM:SS' 輸入:{文字常量|數字}
  • year[(4|2)]:'1901':'2155'   預設為4位長度,2位長度的範圍為'1970:2069'

 

文本類型

  1. 通常文本類型有以下通用特性
  2. 文本類型的長度是字元長度,不是位元組長度
  3. 文本類型具有[character set|charset]字元集屬性、[collate]定序屬性、[binary]屬性——該屬性會改變文本類型的資料類型
  4. ascii 是 character set latin1的簡稱
  5. unicode 是 character set ucs2的簡稱
  6. binary 是指定character set 的二進位定序,這將是字串的排序、比較依據字元集的數字值進行
  • [national] {character|char}[(m:1:255)] [character set cs_name] [collate c_name]  --mysql 允許m=0的char,僅僅是考慮相容部分應用程式而已,他的值只能是null或‘’。char的尾隨空格是否刪除是受pad_char_to_full_length控制的
  • nchar 是 national char的簡稱,使用utf8字元集
  • [national] {character varying|varchar} [(m:1:65535)] [character set cs_name] [collate c_name]  --其最大長度受行大小和其他列、字元集影響的。每個varchar列還額外佔用1-2個位元組寸草其實際長度
  • nvchar 是 national varchar的簡稱,使用utf8字元集
  • binary(m)  --和char類似,只是其儲存的是二進位的串,單位為位元組
  • varbinary(m)  --和char類似,只是其儲存的是二進位的串,單位為位元組
  • tinyblob  --最大儲存2^8-1個bytes,另外1個位元組的值儲存實際長度
  • tinytext [character set cs_name] [collate c_name]  --最大儲存2^8-1個char,另外1個位元組的值儲存實際長度
  • blob  --最大儲存2^16-1個bytes,另外2個位元組的值儲存實際長度
  • text [character set cs_name] [collate c_name]  --最大儲存2^16-1個char,另外2個位元組的值儲存實際長度
  • mediumblob  --最大儲存2^24-1個bytes,另外3個位元組的值儲存實際長度
  • mediumtext [character set cs_name] [collate c_name]  --最大儲存2^24-1個char,另外4個位元組的值儲存實際長度
  • longblob  --最大儲存2^32-1個bytes,另外3個位元組的值儲存實際長度
  • longtext [character set cs_name] [collate c_name]  --最大儲存2^32-1個char,另外4個位元組的值儲存實際長度
  • enum ('v1','v2',.....)  [character set cs_name] [collate c_name]  --最多65535個不同的值,enum字串對象只能具有{列表中的|null|''}中的1個值,其內部已整數表示
  • set('v1','v2',.....)  [character set cs_name] [collate c_name]  --最多64個不同的值,enum字串對象只能具有列表中的的任意個值,其內部已整數表示

 

資料類型的預設值

  • 表列可以通過default關鍵字為列指定預設值
  • 預設值鼻必須是常量,例外的是timestamp列:可以指定current_timestamp
  • 如果列可以為null 可以顯示指定 default null
  • 如果列不可以為null,在insert、replace、update等操作裡。mysql看是否啟用strict sql mode。strict 模式下會出現錯誤;非strict 模式下:
  1. 數字為0,當數字類型為auto_increment時,為下一個值
  2. timestamp 為當前的日期時間
  3. 其他日期時間類型為適當的”零“值
  4. enum型為第一個值
  5. 其他字元類型為空白串 ''

 

 

 

 

字元常量:[_字元集名稱]'字元序列....'   [定序名稱]  --是可以識別"\"逸出字元的c風格字串

  • 雙引號字串表示風格,不推薦。
  • 逸出字元是大小寫敏感的。不是逸出字元將不做轉義
  • N'字元序列' = n'字元序列' = _utf8'字元序列'

 

數字常量:還用說嗎!!

 

十六進位文字常量:

  • {X|x}'{[0-9a-fA-F]}*'   --標準sql風格
  • 0x{[0-9a-fA-F]}*  --odbc標準風格
  • 注意:十六進位字元常量在數字環境會轉換為bigint型,在文本環境會轉換為character字串

 

布爾型:true、false  --不區分大小寫

 

二進位文字常量:

  • b'{[01]}*'  --標準sql風格
  • 0b{[01]}*  --odbc風格
  • 注意:二進位文字常量總是作為二進位字串;要想當作數字使用,必須顯式的cast

 

NULL:未知或沒有資料的意思,不等於0 或Null 字元串 或 ascii的nul(ascii值為0)

  • 不區分大小寫
  • 注意可以使用"\N"來表示

 

 

相關知識:

  • ansi_quotes設定
  • 字元集
  • 定序
  • hex()、bin()、oct()、cast()函數
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.