首頁 資料庫 mysql教程 MYSQL入门学习之四:MYSQL的数据类型_MySQL

MYSQL入门学习之四:MYSQL的数据类型_MySQL

Jun 01, 2016 pm 01:37 PM
database 表達式

bitsCN.com

MYSQL入门学习之四:MYSQL的数据类型

 

相关链接:

MYSQL入门学习之一:基本操作

http:///database/201212/173868.html

MYSQL入门学习之二:使用正则表达式搜索

http:///database/201212/173869.html

MYSQL入门学习之三:全文本搜索

http:///database/201212/173873.html

 

一、整型    

         整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种整数类型。MySQL数据库除了支持这两种类型外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。

         各种整数类型的取值范围、存储的字节数如下:

         整型        字节数  无符号数的取值范围  有符号数的取值范围

         TINYINT     1       0~255                   -128~127

         SMALLINT    2       0~65535                 -32768~12767

         MEDIUMINT   3       0~16777215              -8388608~8388607

         INT         4       0~4294967295            -2147483648~2147483647

         INTEGER     4       0~4294967295            -2147483648~2147483647  

         BIGINT      8       0~18446744073709551615  -9223372036954775808~9223372036854775807

         

 二、浮点数类型和定点数类型

         MySQL使用浮点数类型和定点数类型来表示小数。浮点数类型包括单精度浮点数(FLOAT类型)和双精度浮点数(DOUBLE类型)。定点数类型就是DECIMAL型。

         FLOAT型、DOUBLE型、DECIMAL型的取值范围、存储的字节数如下:

         小数类型     字节数  负数取值范围             无符号取值范围

         FLOAT        4       -3.402823466E+38~        0和1.175494351E-38~

                  -1.175494351E-38         3.402823466E+38

         DOUBLE       8       1.7976931348623157E+308~ 0和2.2250738585072014E~

                  -2.2250738585072014E-308 1.7976931348623157E+308

         DECIMAL(M,D) M+2     DOUBLE型                 同DOUBLE型

         或DEC(M,D)

         M:最大长度(包括小数部分,但不包括小数点)

         D:小数点后保留长度

         对于浮点数和定点数,当插入值的精度高于实际定义的精度,系统会自动进行四舍五入处理。其目的是为了使该值的精度达到要求。浮点数进行四舍五入不会报警,定点数出现警告。

         在未指定精度的情况下,浮点数和定点数有其默认的精度。FLOAT类型和DOUBLE类型默认会保存实际精度。这个精度与操作系统和硬件的精度有关。DECIMAL类型默认整数位为10, 小数位为0,即默认为整数。    

         在MySQL中,定点数精度比浮点数要高。而且,浮点数会出现误差。如果要对数据的精度要求比较高,应该选择定点数。

 三、日期和时间类型

 1、DATETIME类型

         DATETIME类型表示同时包含日期和时间信息的值。MySQL以'YYYY-MM-DD HH:MM:SS'格式检索和显示DATETIME值。支持的范围为'1000-01-01 00:00:00'~'9999-12-31 23:59:59'。

 2、DATE类型

         DATE类型表示只有日期值而没有时间值的值。MySQL用'YYYY-MM-DD'格式检索和显示DATE值。支持的范围为'1000-01-01'~'9999-12-31'。

 3、TIME类型

         TIME值可以使用多种表示格式。

         'D HH:MM:SS.fraction'格式的字符串。还可以使用下面任何一种“非严格”语法'HH:MM:SS.fraction'、'HH:MM:SS'、'HH:MM'、'D HH:MM:SS'、'D HH:MM'、'D HH'或'SS'。这里D表示日,可以取0~34的值。请注意MySQL不保存分数。

         'HHMMSS'格式的没有间隔符的字符串,被假定为是有意义的时间。例如,'101112'被理解为'10:11:12',但'109712'是不合法的(它有一个没有意义的分钟部分),其将变为'00:00:00'。

         HHMMSS格式的数值,被假定为是有意义的时间。例如,101112被理解为'10:11:12'。下面的格式也可以理解:SS、MMSS、HHMMSS、HHMMSS.fraction。请注意MySQL不保存分数。

 4、YEAR类型

         YEAR类型是一个单字节类型,用于表示年。MySQL以YYYY格式检索和显示YEAR值。范围为1901~2155。

         可以指定各种格式的YEAR值。

         四位字符串,范围为'1901'~'2155'。

         四位数字,范围为1901~2155。

         两位字符串,范围为'00'~'99'。'00'~'69'和'70'~'99'范围的值分别被转换为2000~2069和1970~1999范围的YEAR值。

         两位整数,范围为1~99。1~69和70~99范围的值分别被转换为2001~2069和1970~1999范围的YEAR值。请注意两位整数范围与两位字符串范围稍有不同,因为不能直接将零指定为数字并将它解释为2000。必须将它指定为一个字符串'0'或'00'或它被解释为0000。

 5、TIMESTAMP类型

         TIMESTAMP类型使用4个字节来表示日期和时间。TIMESTAMP类型的范围从1970-01-001 08:00:01到2038-01-19 11:14:07。MySQL中也是以'YYYY-MM-DD HH:MM:SS'的形式显示TIMESTAMP类型的值。从其形式可以看出,TIMESTAMP类型与DATETIME类型显示的格式一样的。给TIMESTAMP类型的字段赋值的表示方法基本与DATETIME类型相同。值的注意的是,TIMESTAMP类型范围比较小,没有DATETIME类型的范围大。因此,输入值时要保证在TIMESTAMP类型时有效范围内。

         

 四、字符串类型

         字符串类型是在数据库中存储字符串的数据类型。

 1、CHAR类型和VARCHAR类型

         CHAR类型和VARCHAR类型都是在创建表时指定最大长度,其基本形式如下:

         字符串类型(M)

         例如,CHAR(4)就是指数据类型为CHAR类型,其最大长度为4。  

         CHAR类型的长度是固定的,在创建表时就指定了。其长度可以是0~255的任意值。

         例如,CHAR(100)就是指定CHAR类型的长度为100。

         VARCHAR类型的长度是可变的,在创建时指定了最大长度。定义时,其最大值可以取0~65535之间的任意值。指定VARCHAR类型的最大值以后,其长度可以在0到最大长度之间。例如,VARCHAR(100)的最大长度是100。但是,不是每条记录都要占100个位置。而是在这个最大值范围内,使用多少分配多少。VARCHAR类型实际占用的空间为字符串的实际长度加1。这样,可以有效的节约系统的空间。

 2、TEXT类型

         TEXT类型是一种特殊的字符串类型。TEXT只能保存字符数据,如文章等。TEXT类型包含TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。

         类型        允许的长度       存储空间

         TINYTEXT    0~255字节        值的长度+2个字节

         TEXT        0~65535字节      值的长度+2个字节

         MEDIUMTEXT  0~167772150字节  值的长度+3个字节

         LONGTEXT    0~4294967295字节 值的长度+4个字节

         从表可以看出,各种TEXT类型的区别在于允许的长度和存储空间不同。因此在这几种TEXT中,根据需求选取既能满足需要以最节约空间的类型即可。  

 3、ENUM类型(枚举类型)    

         ENUM类型又称为枚举类型。在创建表时,ENUM类型的取值范围就以列表的形式指定了。

         属性名 ENUM('值1', '值2',...., '值n');

         其中, '属性名'参数指定字段名称;'值n'参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。

         ENUm类型的值只能列表中的一个元素。其取值列表中最多能有65535个值。列表中的每个值都有一个顺序排序的编号,MySQL中存入的是这个编号,而不是列表中的值。

         如果ENUm类型加上了NOT NULL属性,其默认值为取值列表的第1个元素。如果不加NOT NULL属性,ENUm类型将允许插入NULL,而且NULL为默认值。

         CREATE TABLE IF NOT EXISTS `test`.`enum_tbl`(

         `a` ENUM('male','female'),

         `b` ENUM('true','false') NOT NULL

         );

         INSERT INTO `test`.`enum_tbl` 

         VALUES('male', 'true'),(NULL, 'false'), (NULL, NULL),(20, 20);

         SELECT * FROM `enum_tbl`;

 4、SET类型

         基本形式如下:

         属性名 set('值1','值2','值3'...'值n');

         其中,'属性名'参数指定字段名称;'值n'参数列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。

         SET类型的值可以取列表中一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是64个元素构成的组合。列表中的每一个值都有一个顺序排列的编号。MySQL中存入的是这个编号,而不是列表中的值。

         插入记录时,SET字段里的元素顺序无关紧要。存入MySQL数据库后,数据库系统会自动按照定义时的顺序显示。    

         CREATE TABLE IF NOT EXISTS `test`.`set_tbl`(

         `a` SET('a','b','c','d','e','f','g')

         );

         INSERT INTO `test`.`set_tbl`    VALUES('f'),('a,b,c'),('d,e,a');

         INSERT INTO `test`.`set_tbl` VALUES('h');

         SELECT * FROM `set_tbl`;

         

 五、二进制类型

         二进制类型是在数据库中存储二进制数据的数据类型。

         二进制类型   取值范围

         BINARY(M)    字节数为M,允许长度为0~M的定长二进制字符串

         VARBINARY(M) 允许长度为0~M的变长二进制字符串,字节数为值的长度加一

         BIT(M)       M位二进制数据,M最大值为64

         TINYBLOB     可变长二进制数据,最多255个字节

         BLOB         可变长二进制数据,最多(2[16]-1)个字节

         MEDIUMBLOB   可变长二进制数据,最多(2[24]-1)个字节

         LONGBLOB     可变长二进制数据,最多(2[32]-1)个字节

 1、BINARY和VARBINARY类型

         BINARY和VARBINARY类型都是在创建表时指定了最大长度,其基本形式如下 :

         字符串类型(M)

         这与CHAR类型和VARCHAR类型相似。

         例如,BINARY(10)就是指数据类型为BINARY类型,其最大长度为10。

         BINARY类型的长度是固定的,在创建表是就指定了。不足最大长度的空间由"/0"补全。例如,BINARY(50)就是指定BINARY类型的长度为50。

         VARBINARY类型的长度是可变的,在创建表时指定了最大长度。指定好了VARBINARY类型的最大值以后,基长度可以在0到最大长度之间。例如,VARBINARY(50)的最大字节长度是50。但是,不是每条记录的字节长度都是50。在这个最大范围内,使用多少分配多少。VARBINARY类型实际占用的空间为实际长度加一。这样,可以有效的节约系统的空间。

 2、BIT类型

         BIT类型也是创建表时指定了最大长度,其基本形式如下:

         BIT(M)

         其中,'M'指定了该二进制的数的最大字节长度为M,M的最大值为64。例如,BIT(4)就是数据类型BIT类型,长度为4.若字段的类型BIT(4),存储的数据是从0到15。因为,变成二进制以后,15的值为1111,其长度为4。如果插入的值为16,其二进制数为10000,长度为5,超过了最大长度。因此大于等于16的数是不能插入到BIT(4)类型的字段中的。在查询BIT类型的数据时,要用BIN(字段名+0)来将值转换为二进制显示。

 3、BLOB类型

         BLOB类型是一种特殊的二进制类型。BLOB可以用来保存数据量很大的二进制数据,如图片等。BLOB类型包括TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。这几种BLOB类型最大的区别就是能够保存的最大长度不同。LONGBLOB的长度最大,TINYBLOB的长度最小。

         BLOB类型与TEXT类型很类似。不同点在于BLOB类型用于存储二进制数据,BLOB类型数据是根据其二进制编码进行比较和排序。而TEXT类型是文本模式进行比较和排序的。
 

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱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 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

discuz database error怎麼解決 discuz database error怎麼解決 Nov 20, 2023 am 10:10 AM

discuz database error的解決方法有:1、檢查資料庫配置;2、確保資料庫伺服器正在運作;3、檢查資料庫表狀態;4、備份資料;5、清理快取;6、重新安裝Discuz;7、檢查伺服器資源;8、聯繫Discuz官方支持。解決Discuz資料庫錯誤需要從多個方面入手,逐步排除問題原因,並採取相應的措施進行修復。

洩漏揭示了英特爾 Arrow Lake-U、-H、-HX 和 -S 的關鍵規格 洩漏揭示了英特爾 Arrow Lake-U、-H、-HX 和 -S 的關鍵規格 Jun 15, 2024 pm 09:49 PM

英特爾ArrowLake預計將基於與LunarLake相同的處理器架構,這意味著英特爾全新的LionCove效能核心將與經濟體的Skymont效率核心結合。

Can't drop database 'database_name'; database doesn't exist - 如何解決MySQL錯誤:無法刪除資料庫,資料庫不存在 Can't drop database 'database_name'; database doesn't exist - 如何解決MySQL錯誤:無法刪除資料庫,資料庫不存在 Oct 05, 2023 am 11:46 AM

如何解決MySQL報錯:無法刪除資料庫,資料庫不存在概述:MySQL是一種常用的關係型資料庫管理系統。在使用MySQL中,我們經常需要對資料庫進行管理,包括建立資料庫、刪除資料庫等操作。然而,在刪除資料庫時,有時會遇到報錯提示"Can'tdropdatabase'database_name';databasedoesn'texist",即無法刪

如何解決Python的表達式語法錯誤? 如何解決Python的表達式語法錯誤? Jun 24, 2023 pm 05:04 PM

Python作為一種高階程式語言,易於學習和使用。一旦需要編寫Python程式時,無法避免地遇到語法錯誤,表達式語法錯誤是常見的一種。在本文中,我們將討論如何解決Python的表達式語法錯誤。表達式語法錯誤是Python中最常見的錯誤之一,它通常是由於錯誤的使用語法或缺少必要組件而導致的。在Python中,表達式通常由數字、字串、變數和運算子組成。最常見的

在C和C++中,逗號(comma)的用法是用來分隔表達式或語句 在C和C++中,逗號(comma)的用法是用來分隔表達式或語句 Sep 09, 2023 pm 05:33 PM

在C或C++中,逗號「,」有不同的用途。在這裡我們將了解如何使用它們。逗號作為運算符。逗號運算符是一個二元運算符,它計算第一個操作數,然後丟棄結果,然後計算第二個運算符並傳回值。逗號運算子在C或C++中的優先權最低。範例#include<stdio.h>intmain(){  intx=(50,60);  inty=(func1(),func2());}這裡60將被指派給x。對於下一語句,將會先執行func1(

介紹C語言中的指數函數表達式 介紹C語言中的指數函數表達式 Feb 18, 2024 pm 01:11 PM

C語言中指數函數表達式的寫法介紹及代碼範例什麼是指數函數指數函數是數學中一類常見的函數,可以表示為f(x)=a^x的形式,其中a為底數,x為指數。指數函數主要用來描述指數成長或指數衰減的情況。指數函數的程式碼範例在C語言中,我們可以使用數學庫中的pow()函數來計算指數函數,以下是一個範例程式:#include

Java 中的 lambda 表達式 Java 中的 lambda 表達式 Jun 09, 2023 am 10:17 AM

Java中的lambda表達式隨著Java8的發布,lambda表達式成為了Java開發者們最關注和討論的話題之一。 Lambda表達式可以簡化Java程式設計師繁瑣的書寫方式,同時也能夠提升程式的可讀性和維護性。在本文中,我們將深入探討Java中的lambda表達式,以及它們如何在Java程式碼中提供更簡單、更直覺的程式設計體驗。

使用lambda表達式對集合進行循環 使用lambda表達式對集合進行循環 Feb 19, 2024 pm 07:32 PM

lambda表達式是一種匿名函數,它可以很方便地用於遍歷集合。在這篇文章中,我們將介紹如何使用lambda表達式遍歷集合,並提供具體的程式碼範例。在Python中,lambda表達式的語法格式如下:lambda參數列表:表達式lambda表達式的參數列表可以包含一個或多個參數,並用逗號隔開。表達式是lambda函數的回傳值。下面我們來看一個簡單的例子,假設

See all articles