跟我一起學習MySQL技術內幕(第五版):(第三章學習日記3)

來源:互聯網
上載者:User

標籤:

3.2MySQL資料類型
3.2.1資料類型概述
3.2.2表定義裡的特殊列類型
3.2.3指定列的預設值
———————————————————————————————
3.2.1資料類型概述

MySQL數字類型包括整數,定點數,浮點數和位值。除bit外其他的資料類型可以帶有加號或減號,也可以不帶加號或減號。

類型名稱               含義tinyint               非常小的整數smallint              小整數mediumint             中等大小的整數int                   標準的整數bigint                大整數decimal               定點數float                 單精確度浮點數double                雙精確度浮點數bit                   位域

字串可以容納任何內容,可以容納表示映像和聲音的位元據,可以按照大寫進行比較,也可以進行模式比對。

類型名稱               含義char                  固定長度的非二進位字串varchar               可變長度的非二進位串binary                固定長度的二進位串varbinary             可變長度的二進位串tinyblob              非常小型的blob(二進位大對象)blob                  小型blobmediumblob            中型bloblongblob              大型blobtinytext              非常小型的非二進位串text                  小型非二進位串mediutext             中等大小的非二進位串longtext              大型非二進位串enum                  枚舉集合set                   集合(每個列取值可以為若干個集合元素)

時態類型:
MySQL提供的類型有:
日期與時間(合并或者分開表示)
時間戳記(專門記載某個行最近一次修改時間的類型)

類型名稱              含義date                 日期值,格式為‘ccyy-mm-dd’time                 時間值,格式為‘hh:mm:ss’datetime             日期加時間值,格式為‘ccyy-mm-dd hh:mm:ss’timestamp            時間戳記值,格式為‘ccyy-mm-dd hh:mm:ss’year                 年份值,格式為ccyy或yy 

分別表示:

        cc      yy       mm     dd      hh      mm      ss              世紀、   年、      月 、   日   、 小時  、 分鐘   、秒

3.2.2表定義裡的特殊 列 類型

create table mytabl1(   f float(10,4),   c char (15)  not null default ‘none‘   i tinyint unsigned null);

列定義的文法如下:

col_name col_type [type_attrs] [general_attrs]

col_type表示列類型,即表明這一列可以用來容納何種類型的值。
1.有些類型說明符會表明儲存在列裡的值所允許的最大長度(char(10))
2.有些類型說明符允許長度隱含在名稱裡(tinytext)
3.有些類型說明符允許你指定一個最大顯示寬度
4.對於定點類型和浮點類型,還可以指定有效位和小數位

在列的資料類型後面,除了指定多個通用屬性外,還可以指定一些類型特有的可選屬性。這些屬性的作用是對該類型做進一步的修飾和限定

1.所允許的特有類型取決於具體的資料類型   2.通用屬性可用於任何一種資料類型3.如果存在多個屬性,通常將資料類型特有的屬性放在通用屬性的前面

3.2.3指定列的預設值

除了blob與text類型、空間類型或者具有auto_increment屬性的列以外,

還可以指定default def_value 子句.用以表明建立新的行時,如果沒有顯示地指定某個值,該列將會被預設值 def_value

除了timestamp列和datetime列有限制以外,這裡的預設值def_value必須是一個常量。他不能為運算式,也不能引用其他列

如果沒有顯式包含default子句,且該列允許為null值,那麼其預設值為NULL

如果該列不允許為NULL值,也沒有default子句,這就會影響MySQL對列的處理:

1.如果沒有啟用SQL的strict 模式,這列將會被設定成其資料類型的隱含預設值。2.啟用SQLstrict 模式之後,如果表是事務性的,就會出現錯誤。這條語句會中止執行,然後復原。對於非事務性的表,如果這行是該語句插入的第一個行,那麼會出現一個錯誤,該語句中止執行,如果不是第一行,那麼可以選擇中止執行,或選擇把這列設定為它的隱含預設值,同時發出一條警告資訊

列的隱含預設值取決於它的資料類型。

1.對於數字列(不包含那些具有auto_increment屬性的列),其預設值為0.  對於auto_increment列,預設值是下一個列的列序號。2.對於大多數時態類型列,其預設值為該類型的“零”值  對於enum列,預設值為枚舉集裡的第一個元素,  對於set列,如果不允許NULL值,預設值將是一個空集不過它等價於空串。              

跟我一起學習MySQL技術內幕(第五版):(第三章學習日記3)

聯繫我們

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