乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

       靜幻堂 2018-09-03
      C與Python實(shí)戰(zhàn) 2018-08-02 20:03:43
      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      前面的講解中已經(jīng)接觸到了表的創(chuàng)建,表的創(chuàng)建是對(duì)字段的聲明,比如:

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      上述語(yǔ)句聲明了字段的名稱、類型、所占空間、默認(rèn)值 和是否可以為空等信息。其中的 int、varchar、chardecimal 都是 MySQL 所支持的數(shù)據(jù)類型,本節(jié)將詳細(xì)介紹 MySQL 支持的數(shù)據(jù)類型。

      MySQL 中定義數(shù)據(jù)字段的類型對(duì)數(shù)據(jù)庫(kù)的優(yōu)化非常重要。MySQL中的每種數(shù)據(jù)類型都可以通過(guò)以下特征來(lái)確定:

      • 它用來(lái)表示數(shù)據(jù)值。
      • 占用的空間以及值是固定長(zhǎng)度還是可變長(zhǎng)度。
      • 數(shù)據(jù)類型的值可以被索引。
      • MySQL如何比較特定數(shù)據(jù)類型的值。

      MySQL 支持的數(shù)據(jù)類型可以分為三類:數(shù)值日期/時(shí)間字符串(字符)類型,另外還有空間數(shù)據(jù)類型JSON數(shù)據(jù)類型,本節(jié)以前三種數(shù)據(jù)類型為主,最后兩種簡(jiǎn)單介紹一下。

      1、數(shù)值類型

      MySQL支持所有標(biāo)準(zhǔn)SQL數(shù)值數(shù)據(jù)類型。

      這些類型包括嚴(yán)格數(shù)值數(shù)據(jù)類型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數(shù)值數(shù)據(jù)類型(FLOAT、REAL和DOUBLE PRECISION)。

      關(guān)鍵字INT是INTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞。

      作為SQL標(biāo)準(zhǔn)的擴(kuò)展,MySQL也支持整數(shù)類型TINYINT、MEDIUMINT和BIGINT。下面的表顯示了需要的每個(gè)整數(shù)類型的存儲(chǔ)和范圍。

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      1.1 整形數(shù)值


      以 TINYINT 為例詳細(xì)介紹整形數(shù)值型的一些屬性及操作。

      TINYINT[(M)][UNSIGNED][ZEROFILL]

      M表示每個(gè)值的位數(shù),此處為顯示的位數(shù),并不是占用字節(jié)大小。該可選顯示寬度規(guī)定用于顯示寬度小于指定的列寬度的值時(shí)從左側(cè)填滿寬度。當(dāng)結(jié)合可選擴(kuò)展屬性ZEROFILL使用時(shí), 默認(rèn)補(bǔ)充的空格用零代替。例如,對(duì)于聲明為INT(5) ZEROFILL的列,值5檢索為00005。

      注意:M 要與 ZEROFILL 配合使用才有效果。

      如果一個(gè)數(shù)值列指定為 ZEROFILL, MySQL自動(dòng)為該列添加 UNSIGNED 屬性。

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      1.2 浮點(diǎn)型數(shù)值


      對(duì)于浮點(diǎn)列類型,在MySQL中單精度值使用4個(gè)字節(jié),雙精度值使用8個(gè)字節(jié)。

      DOUBLE[(M,D)][UNSIGNED][ZEROFILL]

      • M:精度,代表“總位數(shù)”;
      • D:標(biāo)度,代表小數(shù)位(小數(shù)點(diǎn)右邊的位數(shù))

      1.3 布爾值


      MySQL 沒(méi)有內(nèi)置的 BOOLEANBOOL 數(shù)據(jù)類型,使用最小的整數(shù)類型,也就是 TINYINT(1)來(lái)表示。

      2、日期和時(shí)間類型

      表示時(shí)間值的日期和時(shí)間類型為 DATETIME、DATETIMESTAMP、TIMEYEAR。

      每個(gè)時(shí)間類型有一個(gè)有效值范圍和一個(gè)"零"值,當(dāng)指定不合法的MySQL不能表示的值時(shí)使用"零"值。

      TIMESTAMP 類型有專有的自動(dòng)更新特性,將在后面描述。

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      注意:

      • 包含兩位數(shù)年份值的日期是不明確的,因?yàn)槭兰o(jì)是未知的,MySQL 使用如下規(guī)則解釋兩位數(shù)的年份值:
      • 年份值在70~99之間轉(zhuǎn)換為1970~1999
      • 年份值在00~69之間轉(zhuǎn)換為2000~2069
      • 通過(guò)連接器/ODBC使用的“零”值日期或時(shí)間值將自動(dòng)轉(zhuǎn)換為NULL,因?yàn)镺DBC無(wú)法處理這些值。

      3、字符串類型

      在MySQL中,字符串可以容納從純文本到二進(jìn)制數(shù)據(jù)(如圖像或文件)的任何內(nèi)容。 字符串類型指 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      3.1 CHAR 和 VARCHAR


      CHAR 和 VARCHAR 類型類似,但它們保存檢索的方式不同。它們的最大長(zhǎng)度和是否尾部空格被保留等方面也不同。在存儲(chǔ)或檢索過(guò)程中不進(jìn)行大小寫轉(zhuǎn)換。

      CHAR和VARCHAR類型聲明時(shí)需要一個(gè)長(zhǎng)度值,該值表示你想要想要存儲(chǔ)的字符的最大數(shù)量。例如,CHAR(30)可以容納30個(gè)字符。 CHAR 列的寬度在創(chuàng)建表時(shí)已經(jīng)固定下來(lái)了,如果插入記錄該字段的寬度不足指定寬度,那么要在右側(cè)自動(dòng)填補(bǔ) 空格。檢索CHAR值時(shí),除非啟用 PAD_CHAR_TO_FULL_LENGTH SQL模式,否則將刪除尾部空格。

      存儲(chǔ) VARCHAR 值時(shí),不會(huì)填充。在與標(biāo)準(zhǔn)SQL一致的情況下,存儲(chǔ)和檢索值時(shí)保留尾部空格。

      下表展示了CHAR和VARCHAR之間的差異,它展示了將各種字符串值存儲(chǔ)到CHAR(4)和VARCHAR(4)列的結(jié)果(假設(shè)此列使用了一個(gè)單字節(jié)字符集,如latin1)。

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      請(qǐng)看下面例子:

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      01.vchar_varchar

      3.2 BINARY 和 VARBINARY


      BINARY 和 VARBINARY 類似于 CHAR 和 VARCHAR,不同的是它們包含二進(jìn)制字符串而不要非二進(jìn)制字符串。也就是說(shuō),它們包含字節(jié)字符串而不是字符字符串。這說(shuō)明它們沒(méi)有字符集,并且排序和比較基于列值字節(jié)的數(shù)值。

      3.3 BLOB 和 TEXT


      BLOB 是一個(gè)二進(jìn)制大對(duì)象,可以容納可變數(shù)量的數(shù)據(jù)。有 4 種 BLOB 類型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它們區(qū)別在于可容納存儲(chǔ)范圍不同。四種 TEXT 類型是TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。它們對(duì)應(yīng)于四個(gè) BLOB 類型,并且具有相同的最大長(zhǎng)度和存儲(chǔ)要求。

      3.4 ENUM 類型


      ENUM 是一個(gè)字符串對(duì)象,它從一個(gè)允許值列表中選擇了一個(gè)值,這些值在表創(chuàng)建時(shí)顯式地列出了列規(guī)范中。它有這些優(yōu)勢(shì):

      • 在一列有有限的可能值集合的情況下,壓縮數(shù)據(jù)存儲(chǔ)。你指定為輸入值的字符串被自動(dòng)編碼為數(shù)字。
      • 可讀的查詢和輸出。在查詢結(jié)果中,這些數(shù)字被轉(zhuǎn)換回相應(yīng)的字符串。

      枚舉值必須是引用的字符串文字。 你可以這樣用枚舉列創(chuàng)建表:

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      假如向該表中插入一百萬(wàn)條 值為 'medium' 的記錄,存儲(chǔ)空間需要一百萬(wàn)字節(jié)。相比而言,如果以字符串 'medium' 存儲(chǔ),則需要六百萬(wàn)字節(jié)。

      3.5 SET 類型


      SET 是一個(gè)字符串對(duì)象,可以有0個(gè)或多個(gè)值,并且每一個(gè)值都必須從表創(chuàng)建時(shí)指定的允許值列表中選擇。SET 的列值由多個(gè)集合成員組成的,用逗號(hào)(,)分隔。這樣的話,SET成員值本身不應(yīng)該包含逗號(hào)。

      例如,由 SET('one', 'two') NOT NULL 指定的數(shù)據(jù)列可以有這些值:

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      SET 列最多可以包含64個(gè)不同的成員。

      看如下例子:

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      從查詢結(jié)果可以看出:如果一條記錄里已經(jīng)包含 SET 的一個(gè)成員了,就不會(huì)重復(fù)保存該值。

      4、空間數(shù)據(jù)類型

      MySQL支持許多包含各種幾何和地理值的空間數(shù)據(jù)類型,如下表所示:

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      5、JSON 數(shù)據(jù)類型

      MySQL 支持由 RFC 7159 規(guī)定的原生 JSON 數(shù)據(jù)類型,以更有效地存儲(chǔ)和管理JSON文檔。 本機(jī)JSON數(shù)據(jù)類型提供JSON文檔的自動(dòng)驗(yàn)證和最佳存儲(chǔ)格式。 JSON 列不能有默認(rèn)值。

      MySQL 從零開(kāi)始:05 數(shù)據(jù)類型

      可以看到,如果我們插入的記錄 JSON 數(shù)據(jù)格式不正確是不能成功的。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多