2Python全棧之路系列之MysQl基本數(shù)據(jù)類型-創(chuàng)新互聯(lián)

Python全棧之路系列之MySQL基本數(shù)據(jù)類型


成都創(chuàng)新互聯(lián)公司總部坐落于成都市區(qū),致力網(wǎng)站建設(shè)服務(wù)有網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)絡(luò)營銷策劃、網(wǎng)頁設(shè)計(jì)、網(wǎng)站維護(hù)、公眾號搭建、小程序制作、軟件開發(fā)等為企業(yè)提供一整套的信息化建設(shè)解決方案。創(chuàng)造真正意義上的網(wǎng)站建設(shè),為互聯(lián)網(wǎng)品牌在互動(dòng)行銷領(lǐng)域創(chuàng)造價(jià)值而不懈努力!

MySQL中定義數(shù)據(jù)字段的類型對你數(shù)據(jù)庫的優(yōu)化是非常重要的。

MySQL支持多種類型,大致可以分為三類:

  1. 數(shù)字類型

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

  3. 字符串類型


數(shù)字類型

類型大小用途
BIT-二進(jìn)制
TINYINT1字節(jié)小整數(shù)值
INT or INTEGER4字節(jié)大整數(shù)值
BIGINT8字節(jié)極大整數(shù)值
DECIMAL對DECIMAL(M,D) ,如果M>D,為M+2否則為D+2小數(shù)值
FLOAT4字節(jié)單精度浮點(diǎn)數(shù)值
DOUBLE8字節(jié)雙精度浮點(diǎn)數(shù)值
BOOL, BOOLEAN-布爾值
  • BIT[(M)]

二進(jìn)制位(101001),m表示二進(jìn)制位的長度(1-64),默認(rèn)m=1

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

小整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:

范圍(有符號)范圍(無符號)
-128 to 1270 to 255

特別的: MySQL中無布爾值,使用tinyint(1)構(gòu)造。

  • INT[(M)] [UNSIGNED] [ZEROFILL]

整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:

范圍(有符號)范圍(無符號)
-2147483648 to 21474836470 to 4294967295

整數(shù)類型中的m僅用于顯示,對存儲范圍無限制。例如: int(5),當(dāng)插入數(shù)據(jù)2時(shí),select時(shí)數(shù)據(jù)顯示為:00002

  • BIGINT[(M)] [UNSIGNED] [ZEROFILL]

大整數(shù),數(shù)據(jù)類型用于保存一些范圍的整數(shù)數(shù)值范圍:

范圍(有符號)范圍(無符號)
-9223372036854775808 to 92233720368547758070 to 18446744073709551615
  • DECIMAL[(M[,D])] [UNSIGNED] [ZEROFILL]

準(zhǔn)確的小數(shù)值,m是數(shù)字總個(gè)數(shù)(負(fù)號不算),d是小數(shù)點(diǎn)后個(gè)數(shù)。 m大值為65,d大值為30。

特別的:對于精確數(shù)值計(jì)算時(shí)需要用此類型decaimal能夠存儲精確值的原因在于其內(nèi)部按照字符串存儲。

  • FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

單精度浮點(diǎn)數(shù)(非準(zhǔn)確小數(shù)值),m是數(shù)字總個(gè)數(shù),d是小數(shù)點(diǎn)后個(gè)數(shù)。

  • 無符號:
    -3.402823466E+38 to -1.175494351E-38,
    0
    1.175494351E-38 to 3.402823466E+38

  • 有符號:
    0
    1.175494351E-38 to 3.402823466E+38

數(shù)值越大,越不準(zhǔn)確

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

雙精度浮點(diǎn)數(shù)(非準(zhǔn)確小數(shù)值),m是數(shù)字總個(gè)數(shù),d是小數(shù)點(diǎn)后個(gè)數(shù)。

  • 無符號:
    -1.7976931348623157E+308 to -2.2250738585072014E-308
    0
    2.2250738585072014E-308 to 1.7976931348623157E+308

  • 有符號:
    0
    2.2250738585072014E-308 to 1.7976931348623157E+308

數(shù)值越大,越不準(zhǔn)確

  • BOOL, BOOLEAN

這些類型是TINYINT的同義詞。零值被認(rèn)為是假的。非零值被認(rèn)為是正確的:

mysql> SELECT IF(0, 'true', 'false'); +------------------------+ | IF(0, 'true', 'false') | +------------------------+ | false                  | +------------------------+ 1 row in set (0.00 sec) mysql> SELECT IF(1, 'true', 'false'); +------------------------+ | IF(1, 'true', 'false') | +------------------------+ | true                   | +------------------------+ 1 row in set (0.00 sec) mysql> SELECT IF(2, 'true', 'false'); +------------------------+ | IF(2, 'true', 'false') | +------------------------+ | true                   | +------------------------+ 1 row in set (0.00 sec)

然而,真假的值僅僅是為了分別為1和0,別名,如下所示:

mysql> SELECT IF(0 = FALSE, 'true', 'false'); +--------------------------------+ | IF(0 = FALSE, 'true', 'false') | +--------------------------------+ | true                           | +--------------------------------+ 1 row in set (0.01 sec) mysql> SELECT IF(1 = TRUE, 'true', 'false'); +-------------------------------+ | IF(1 = TRUE, 'true', 'false') | +-------------------------------+ | true                          | +-------------------------------+ 1 row in set (0.00 sec) mysql> SELECT IF(2 = TRUE, 'true', 'false'); +-------------------------------+ | IF(2 = TRUE, 'true', 'false') | +-------------------------------+ | false                         | +-------------------------------+ 1 row in set (0.00 sec) mysql> SELECT IF(2 = FALSE, 'true', 'false'); +--------------------------------+ | IF(2 = FALSE, 'true', 'false') | +--------------------------------+ | false                          | +--------------------------------+ 1 row in set (0.00 sec)

時(shí)間類型

表示時(shí)間值的日期和時(shí)間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每個(gè)時(shí)間類型有一個(gè)有效值范圍和一個(gè)”零”值,當(dāng)指定不合法的MySQL不能表示的值時(shí)使用”零”值。

類型大小(字節(jié))格式用途
DATE3YYYY-MM-DD日期值
DATETIME8YYYY-MM-DD HH2Python全棧之路系列之MysQl基本數(shù)據(jù)類型SS混合日期和時(shí)間值
TIMESTAMP8YYYYMMDD HHMMSS混合日期和時(shí)間值,時(shí)間戳
TIME3HH2Python全棧之路系列之MysQl基本數(shù)據(jù)類型SS時(shí)間值或持續(xù)時(shí)間
YEAR1YYYY年份值
類型范圍
DATE'1000-01-01' to '9999-12-31'
DATETIME'1000-01-01 00:00:00.000000' to '9999-12-31 23:59:59.999999'
TIMESTAMP'1970-01-01 00:00:01.000000' UTC to '2038-01-19 03:14:07.999999'
TIME'-838:59:59.000000' to '838:59:59.000000'
YEAR1901 to 2155

字符串類型

類型大小(字節(jié))用途
CHAR(M)0 to 255固定長度的字符串,即使數(shù)據(jù)小于M長度,也會(huì)占用M長度
VARCHAR(M)0 to 65535一個(gè)可變長度的字符串,M表示在字符的大列長度
TEXT[(M)]0 to 65535長文本列
MEDIUMTEXT0 to 16777215中等長度文本列
LONGTEXT4294967295 or 4GB極大文本列
ENUM('value1','value2',...)
枚舉類型
SET('value1','value2',...)
集合類型
  • VARCHAR(M)注

雖然VARCHAR(M)使用起來較為靈活,但是從整個(gè)系統(tǒng)的性能角度來說,CHAR(M)數(shù)據(jù)類型的處理速度更快,有時(shí)甚至可以超出VARCHAR(M)處理速度的50%。因此,用戶在設(shè)計(jì)數(shù)據(jù)庫時(shí)應(yīng)當(dāng)綜合考慮各方面的因素,以求達(dá)到最佳的平衡

  • ENUM('value1','value2',...)

CREATE TABLE shirts (     name VARCHAR(40),     size ENUM('x-small', 'small', 'medium', 'large', 'x-large') ); INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),   ('polo shirt','small');    mysql> SELECT name, size FROM shirts WHERE size = 'medium'; +---------+--------+ | name    | size   | +---------+--------+ | t-shirt | medium | +---------+--------+ 1 row in set (0.00 sec) UPDATE shirts SET size = 'small' WHERE size = 'large'; COMMIT;
  • SET('value1','value2',...)

SET是一個(gè)字符串對象,它可以有0更多個(gè)值,每個(gè)值均必須選自一個(gè)允許值列表中,該列表在表創(chuàng)建時(shí)被指定。

mysql> CREATE TABLE myset (col SET('a', 'b', 'c', 'd')); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d'); Query OK, 5 rows affected (0.01 sec) Records: 5  Duplicates: 0  Warnings: 0 mysql> SELECT col FROM myset; +------+ | col  | +------+ | a,d  | | a,d  | | a,d  | | a,d  | | a,d  | +------+ 5 rows in set (0.00 sec)

參考:

  1. http://www.cnblogs.com/wupeiqi/articles/5713315.html

  2. http://www.runoob.com/mysql/mysql-data-types.html

  3. http://dev.mysql.com/doc/refman/5.7/en/data-type-overview.html

#Python全棧之路

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享標(biāo)題:2Python全棧之路系列之MysQl基本數(shù)據(jù)類型-創(chuàng)新互聯(lián)
當(dāng)前URL:http://bm7419.com/article6/ipeog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化、網(wǎng)站建設(shè)、網(wǎng)站排名網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司