MySQL資料類型

來源:互聯網
上載者:User
mysql|資料|資料類型 MySQL資料類型 
根據定義,資料庫管理系統的目的就是管理資料。即使一條簡單的SELECT 1語句也涉及運算式求值以產生一個整型資料值。MySQL中的每個資料值都有類型。例如, 37.4 是一個數,而“ a b c”是一個串。有時,資料的類型是明顯的,因為在使用CREATE TABLE 語句時指定了作為表的組成部分定義的每個列的類型,如:

    而有時,資料類型是不明確的,如在一個運算式中引用直接值時,將值傳送給一個函數,或使用從該函數返回的值,如:

   INSERT 陳述式完成下列操作,這些操作全都涉及資料類型:
   ■ 將整數值14 賦給整數列i n t _ c o l。
   ■ 將串值“ a”和“b”傳遞給函數C O N C AT( )。C O N C AT( ) 返回串值“a b”,這個串值被賦予串列s t r _ c o l。
   ■ 將整數值1999 0 115 賦給日期列date _ c o l。而這是不匹配的,因此, MySQL將自動進行資料類型轉換。要有效地利用MySQL,必須理解其怎樣處理資料。本章描述了MySQL能夠處理的資料類型,並討論了在處理這些資料類型時所出現的問題,主要內容如下:
   ■ 通用資料類型,包括NULL 值。
   ■ 特殊資料類型,以及描述每種列類型的屬性。有些列類型是相當常見的,如CHAR 串類型。而有的如AUTO_INCREMENT 整型和T I M E S TAMP 日期類型,其效能很特殊,應該加以理解以免出錯。
   ■ 恰當地選擇表的列類型。在建立表時,重要的是要瞭解怎樣為自己的目的選擇最好的類型,以及在幾種類型都可以用於想要儲存的值時選擇一種類型。
   ■ 運算式求值規則。MySQL提供了許多可用於運算式的運算子和函數,以便對資料進行檢索、顯示和處理。運算式求值的規則包括類型轉換規則,在一種類型的值用於另一類型的值的情況時需用到類型轉換規則。理解何時進行類型轉換以及怎樣進行轉換很重要;有的轉換沒有意義而且會產生錯誤值。將串“13”賦給整數列結果為值13,但是將串“a b c” 賦給該列得到0 值,因為“a b c”不是一個數。更壞的是,如果進行比較而不瞭解值的轉換,可能會帶來很大的危險,如在打算只對幾行進行操作時,可能會更新或刪除了表中的所有行。附錄B和附錄C提供了MySQL列類型、運算和函數的更多資訊。
   2.1MySQL資料類型
   MySQL有幾種資料類型,下面分別進行介紹。
   1. 數值值
   數值是諸如48 或193.62 這樣的值。MySQL支援說明為整數(無小數部分)或浮點數(有小數部分)的值。整數可按十進位形式或十六進位形式表示。整數由數字序列組成。以十六進位形式表示的整數由“ 0 x”後跟一個或多個十六進位數字(” 0”到“9”及“a”到“f”)組成。例如, 0x0a 為十進位的10,而0 x ffff 為十進位的6 5 5 3 5。十六進位數字不區分大小寫,但其首碼“ 0 x”不能為“ 0 X”。即0x0a 和0x0A 都是合法的,但0X0a 和0X0A 不是合法的。浮點數由一個阿拉伯數字序列、一個小數點和另一個阿拉伯數字序列組成。兩個阿拉伯數字序列可以分別為空白,但不能同時為空白。MySQL支援科學標記法。科學標記法由整數或浮點數後跟“ e”或“E”、一個符號(“+”或“-”)和一個整數指數來表示。1.34E+12 和43.27e-1都是合法的科學標記法表示的數。而1.34E12 不是合法的,因為指數前的符號未給出。指數前的“ e”也是一個合法的十六進位數字,因此有可能會弄錯。數值前可放一個負號“ -”以表示負值。
  2. (字元)串值 串是諸如“Madison, Wi s c o n s i n”或“patient shows improvement”這樣的值。既可用單引號也可用雙引號將串值括起來。串中可使用幾個逸出序列,它們用來表示特殊的字元,見表2 - 1。每個序列以一個反斜線(“\”)開始,指出臨時不同於通常的字元解釋。注意NUL 位元組與NULL 值不同;NUL 為一個零值位元組,而NULL 為沒有值。

    要在串中包括一個引號,可有如下三種選擇:
    ■ 如果串是用相同的引號括起來的,那麼在串中需要引號的地方雙寫引號即可。如:

    ■ 如果串是用另外的引號括起來的,則不需要雙寫相應引號。如:

    ■ 用反斜線方式表示;這種方法不去管用來將串括起的是單引號還是雙引號。如:

    在串的環境中,可用十六進位常數來指定串值。其文法與前面描述的數值值相同,但是每對十六進位的數字都被看作ASCII 代碼並轉換為字元,其結果用於串。例如, 0 x 6 16 2 6 3作為串時為“ a b c”。
    3. 日期和時間值
    日期和時間是一些諸如“ 1999 - 0 6 - 17”或“12 : 3 0 : 4 3”這樣的值。MySQL還支援日期/時間的組合,如“ 1999-06-17 12:30:43”。要特別注意這樣一個事實,即MySQL是按年-月-日的順序表示日期的。MySQL的初學者通常對這一點很驚奇,其實這是ANSI SQL 的標準格式。可以利用DATE _ F O R M AT( ) 函數以任意形式顯示日期值,但是預設顯示格式首先顯示年,而且輸入值也必須首先給出年。
    4. NULL 值
    NULL 是一種“無類型”的值。它過去慣常表示的意思是“無值”、“未知值”、“丟失的值”、“溢出值”以及“沒有上述值”等。可將NULL 值插入表中、從表中檢索它們,測試某個值是否是NULL,但不能對NULL 值進行算術運算(如果對NULL 進行算術運算,其結果為NULL)。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.