搜尋
首頁資料庫mysql教程mysql的資料型別有哪些? mysql資料類型詳解

本文列舉了mysql的資料類型清單(list),主要包括五大類:整數類型、浮點數類型、字串類型、日期類型和其他資料類型,下文將圍繞這五大資料類型進行詳細的講解,還有mysql資料類型的長度和範圍並附有使用建議和選擇資料類型的基本原則。

一、MySQL的資料型別

主要包括以下五大類:

#整數型別:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT

浮點數類型:FLOAT、DOUBLE、DECIMAL

字串類型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB

日期類型:Date、DateTime、TimeStamp、Time、Year

其他資料類型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等

1、整數

MySQL資料型別 意義(有符號)
tinyint(m) 1個位元組  範圍(-128~127)
smallint(m) 2個位元組  範圍(- 32768~32767)
mediumint(m) 3個位元組  範圍(-8388608~8388607)
int (m) 4個位元組  範圍(-2147483648~2147483647)
bigint(m) 8個位元組  範圍( -9.22 *10的18次方)

取值範圍如果加了unsigned,則最大值翻倍,如tinyint unsigned的值範圍為(0~256)。

 int(m)裡的m是表示SELECT查詢結果集中的顯示寬度,並不影響實際的取值範圍,沒有影響到顯示的寬度,不知道這個m有什麼用。

2、浮點型(float和double)

##意思
#MySQL資料型別

#float(m,d)

單精確度浮點型    8位元精確度(4位元組)     m總個數,d小數位#double( m,d)雙精確度浮點型    16位元精確度(8位元組)    m總個數,d小數位元#3、定點數4、字串(char,varchar,_text)#MySQL資料類型意思
設定一個欄位定義為float(6,3),如果插入一個數123.45678,實際資料庫裡存的是123.457,但總個數還以實際為準,即6位。整數部分最大是3位,如果插入數12.123456,儲存的是12.1234,如果插入12.12,儲存的是12.1200.
#浮點型在資料庫中存放的是近似值,而定點類型在資料庫中存放的是精確值。  decimal(m,d) 參數m

char(n)

固定長度,最多255個字元

#varchar(n)

固定長度,最多65535個字符

tinytext

可變長度,最多255個字元

text

#可變長度,最多65535個字元

mediumtext

可變長度,最多2的24次方-1個字元#char和varchar:1.char(n ) 若存入字元數小於n,則以空格補於其後,查詢之時再將空格去掉。所以char型別儲存的字串結尾不能有空格,varchar不只限於此。 2.char(n) 固定長度,char(4)不管是存入幾個字符,都將佔用4個字節,varchar是存入的實際字符數1個字節(n255),所以varchar(4),存入3個字元將佔用4個位元組。 3.char類型的字串檢索速度比varchar類型的快。 varchar和text: 2.text類型不能有預設值。 1._BLOB和_text儲存方式不同,_TEXT以文字方式存儲,英文儲存區分大小寫,而_Blob是以二進位方式存儲,不分大小寫。
longtext 可變長度,最多2的32次方-1個字元
1.varchar可指定n,text不能指定,內部儲存varchar是存入的實際字元數1個位元組(n255),text是實際字元數2個字 #節。 
3.varchar可直接建立索引,text建立索引要指定前面多少個字元。 varchar查詢速度快於text,在都創建索引的情況下,text的索引似乎不起作用。 5.二進位資料(_Blob)
2._BLOB儲存的資料只能整體讀出。 ######3._TEXT可以指定字元集,_BLO不用指定字元集。 ######6.日期時間類型###############MySQL資料類型######意義############date# #####日期'2008-12-2'############time######時間'12:25:36'####################################################################### ##datetime######日期時間'2008-12-2 22:06:44'############timestamp######自動儲存記錄修改時間### ##########

若定義一個欄位為timestamp,這個欄位裡的時間資料會隨其他欄位修改的時候自動刷新,所以這個資料型別的欄位可以存放這條紀錄最後被修改的時間。

資料類型的屬性

##CHARACTER SET name二、MYSQL資料類型的長度與範圍
MySQL關鍵字 意思
NULL 資料列可包含NULL值
NOT NULL #資料列不允許包含NULL值
DEFAULT 預設值
PRIMARY KEY #主鍵
AUTO_INCREMENT # 自動遞增,適用於整數類型
UNSIGNED 無符號
##指定一個字符集合

各資料型別及位元組長度一覽表:

資料類型#Bit##1無符號[0,255],有符號[-128,127],天緣部落格備註:BIT和BOOL布林型都佔用1位元組TinyInt1整數[0,255]SmallInt2無符號[0,65535],有符號[-32768,32767 ]MediumInt3無符號[0,2^24-1],有符號[-2^23,2^23 -1]]Int4無符號[0,2^32-1],有符號[-2^31, 2^31-1]BigInt8#無符號[0,2^64-1],有符號[-2^ 63 ,2^63 -1]Float(M,D)4單一精確度浮點數。天緣部落格提醒這裡的D是精確度,如果D24則會自動轉換為DOUBLE型。 Double(M,D)8 雙精確度浮點。 Decimal(M,D)M 1或M 2未包裝的浮點數,用法類似FLOAT和DOUBLE,天緣部落格提醒您如果在ASP使用到Decimal資料類型,直接從資料庫讀出來的Decimal可能需要先轉換成Float或Double類型後再運算。 Date3以YYYY-MM-DD的格式顯示,例如:2009-07-19#Date Time8以YYYY-MM-DD HH:MM:SS的格式顯示,例如:2009-07-19 11:22:30TimeStamp4以YYYY-MM-DD的格式顯示,例如:2009-07-19#Time3以HH:MM:SS的格式顯示。例如:11:22:30Year1以YYYY的格式顯示。例如:2009Char(M)MVarChar(M)M#變長字串,要求MBinary(M)M類似Char的二進位存儲,特點是插入定長不足補0M#Max :255#Max:64KMax:16M##Long TextMax:4G 大小寫不敏感TinyBlob#Max:255大小寫敏感BlobMax:64K大小寫敏感#MediumBlob##大小寫敏感大小寫敏感##Enum1或2最大可達65535個不同的枚舉值Set可達8最大可達64個不同的值Geometry  
位元組長度 範圍或用法
定長字串。

##VarBinary(M )
類似VarChar的變長二進位存儲,特點是定長不補0 Tiny Text
大小寫不敏感 Text
大小寫不敏感 Medium Text
大小寫不敏感
##Max:16M
LongBlob Max:4G
##Point ##   
LineString  
Polygon    
MultiPoint  
MultiLineString  
MultiPolygon    
GeometryCollection  
#

三、使用建議

1、在指定資料類型的時候一般是採用從小原則,例如能用TINY INT的最好就不用INT,能用FLOAT類型的就不用DOUBLE類型,這樣會對MYSQL在運作效率上提高很大,尤其是在大數據量測試條件下。

2、不需要把資料表設計的太過複雜,功能模組上區分或許對於後期的維護更為方便,慎重出現大雜燴資料表

3、資料表和欄位的取名字也是一門學問

4、設計資料表結構之前請先想像一下是你的房間,或許結果會更加合理、高效

5、資料庫的最後設計結果一定是效率和可擴展性的折中,偏向任何一方都是欠妥的

選擇資料類型的基本原則

前提:使用適合儲存引擎。
選擇原則:根據選定的儲存引擎,決定如何選擇合適的資料類型。
下面的選擇方法按儲存引擎分類:

  • MyISAM 資料儲存引擎和資料列:MyISAM資料表,最好使用固定長度(CHAR)的資料列來代替可變長度(VARCHAR)的資料列。

  • MEMORY儲存引擎和資料列:MEMORY資料表目前都使用固定長度的資料行存儲,因此無論使用CHAR或VARCHAR列都沒有關係。兩者都是作為CHAR類型處理的。

  • InnoDB 儲存引擎和資料列:建議使用 VARCHAR類型。

對於InnoDB資料表,內部的行儲存格式沒有區分固定長度和可變長度列(所有資料行都使用指向資料列值的頭指標),因此本質上,使用固定長度的CHAR欄位不一定比使用可變長度VARCHAR欄位簡單。因而,主要的效能因素是資料行使用的儲存總量。由於CHAR平均佔用的空間多於VARCHAR,因為 此使用VARCHAR來最小化需要處理的資料行的儲存總量和磁碟I/O是比較好的。
下面說一下固定長度資料列與可變長度的資料列。

char與varchar

CHAR和VARCHAR類型類似,但它們保存和擷取的方式不同。它們的最大長度和是否尾部空格保留等方面也不同。在儲存或檢索過程中不進行大小寫轉換。
下面的表格顯示了將各種字串值儲存到CHAR(4)和VARCHAR(4)欄位後的結果,說明了CHAR和VARCHAR之間的差異:

CHAR(4) 儲存需求 VARCHAR(4) 儲存需求
'' '    ' 4個位元組 '' 1個位元組
'ab' 'ab  ' 4個位元組 'ab ' 3個位元組
'abcd' 'abcd' 4個位元組 'abcd' 5個位元組
'abcdefgh' 'abcd' #4個位元組 'abcd' 5個字節

請注意上表中最後一行的值只適用不使用嚴格模式時;如果MySQL運行在嚴格模式,超過列長度不的值儲存,並且會出現錯誤。
從CHAR(4)和VARCHAR(4)列檢索的值並不總是相同,因為檢索時從CHAR列刪除了尾部的空格。透過下面的範例說明該差異:
mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO vc VALUES ('ab  ', 'ab  ');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT CONCAT(v, ' '), CONCAT(c, ' ') FROM vc;
---------------- ----------------
| CONCAT(v, ' ') | CONCAT(c, ' ') |
----------------------------------
| ab            | ab             |
# ----------------------------------
1 row in set (0.00 sec)

相關文章:

MYSQL資料類型詳解

詳解MySQL資料類型之數字型別正確使用

#相關影片:

資料庫mysql影片教學

#

以上是mysql的資料型別有哪些? mysql資料類型詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
解釋InnoDB緩衝池及其對性能的重要性。解釋InnoDB緩衝池及其對性能的重要性。Apr 19, 2025 am 12:24 AM

InnoDBBufferPool通過緩存數據和索引頁來減少磁盤I/O,提升數據庫性能。其工作原理包括:1.數據讀取:從BufferPool中讀取數據;2.數據寫入:修改數據後寫入BufferPool並定期刷新到磁盤;3.緩存管理:使用LRU算法管理緩存頁;4.預讀機制:提前加載相鄰數據頁。通過調整BufferPool大小和使用多個實例,可以優化數據庫性能。

MySQL與其他編程語言:一種比較MySQL與其他編程語言:一種比較Apr 19, 2025 am 12:22 AM

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。MySQL以其高性能、可扩展性和跨平台支持著称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

學習MySQL:新用戶的分步指南學習MySQL:新用戶的分步指南Apr 19, 2025 am 12:19 AM

MySQL值得學習,因為它是強大的開源數據庫管理系統,適用於數據存儲、管理和分析。 1)MySQL是關係型數據庫,使用SQL操作數據,適合結構化數據管理。 2)SQL語言是與MySQL交互的關鍵,支持CRUD操作。 3)MySQL的工作原理包括客戶端/服務器架構、存儲引擎和查詢優化器。 4)基本用法包括創建數據庫和表,高級用法涉及使用JOIN連接表。 5)常見錯誤包括語法錯誤和權限問題,調試技巧包括檢查語法和使用EXPLAIN命令。 6)性能優化涉及使用索引、優化SQL語句和定期維護數據庫。

MySQL:初學者的基本技能MySQL:初學者的基本技能Apr 18, 2025 am 12:24 AM

MySQL適合初學者學習數據庫技能。 1.安裝MySQL服務器和客戶端工具。 2.理解基本SQL查詢,如SELECT。 3.掌握數據操作:創建表、插入、更新、刪除數據。 4.學習高級技巧:子查詢和窗口函數。 5.調試和優化:檢查語法、使用索引、避免SELECT*,並使用LIMIT。

MySQL:結構化數據和關係數據庫MySQL:結構化數據和關係數據庫Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

MySQL:解釋的關鍵功能和功能MySQL:解釋的關鍵功能和功能Apr 18, 2025 am 12:17 AM

MySQL是一個開源的關係型數據庫管理系統,廣泛應用於Web開發。它的關鍵特性包括:1.支持多種存儲引擎,如InnoDB和MyISAM,適用於不同場景;2.提供主從復制功能,利於負載均衡和數據備份;3.通過查詢優化和索引使用提高查詢效率。

SQL的目的:與MySQL數據庫進行交互SQL的目的:與MySQL數據庫進行交互Apr 18, 2025 am 12:12 AM

SQL用於與MySQL數據庫交互,實現數據的增、刪、改、查及數據庫設計。 1)SQL通過SELECT、INSERT、UPDATE、DELETE語句進行數據操作;2)使用CREATE、ALTER、DROP語句進行數據庫設計和管理;3)複雜查詢和數據分析通過SQL實現,提升業務決策效率。

初學者的MySQL:開始數據庫管理初學者的MySQL:開始數據庫管理Apr 18, 2025 am 12:10 AM

MySQL的基本操作包括創建數據庫、表格,及使用SQL進行數據的CRUD操作。 1.創建數據庫:CREATEDATABASEmy_first_db;2.創建表格:CREATETABLEbooks(idINTAUTO_INCREMENTPRIMARYKEY,titleVARCHAR(100)NOTNULL,authorVARCHAR(100)NOTNULL,published_yearINT);3.插入數據:INSERTINTObooks(title,author,published_year)VA

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具