MySQL数据包括?
mysql数据类型有BOOL、TINYINT、INT、BIGINT、FLOAT、DOUBLE、DECIMAL、CHAR、VARCHAR、TINYTEXT、TEXT、Date、DateTime、TimeStamp、Year等等。
首先,MySQL数据类型
主要包括以下五类:
整数类型:BIT,BOOL,TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT。
浮点类型:浮点、双精度、十进制。
字符串类型:CHAR,VARCHAR,TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT,TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB。
日期类型:日期、日期时间、时间戳、时间、年份。
其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等。
创建表结构时常用数据类型的作用?
除了标准化插入的数据之外,数据类型还具有以下功能:
提高效率
对不同的数据赋予不同的类型,可以使数据库更好地存储和管理数据,从而减少空间占用,提高数据访问速度。例如,如果将数字123454321存储为文本类型,它将占用9个字节的存储空间,而如果存储为整数类型,它将只占用4个字节的存储空间。
2.能够确定处理数据的正确。
比如如果是整数类型,那么123234解释为两个整数相加,所以结果是357;如果是文本类型,那么123234将被解释为两个字符串的串联,所以结果是123234。
mysql数据类型的详解?
MySQL数据库的表是一个二维表,由一个或多个数据列组成。每个数据列都有其特定的类型,这决定了MySQL如何查看列数据。我们可以将整数值存储在字符类型的列中,MySQL会将它们视为字符串。MySQL中有三种类型的列:数字、字符串和日期/时间。从大类来说,列类型只有三种,就像数值类型一样。但是每个列类型都可以细分。下面详细描述了各种列类型。
数值类的数据列类型包括整型和浮点型。键入两个类别。
Tinyint:1字节极小整数,有符号:-128~127,无符号:0~255smallint:2字节小整数,有符号:-32768~32767,无符号:0~65535mediumint:3字节中等大小整数,有符号:-8388608。无符号:0~16777215int:4字节标准整数,有符号:-2147483648~2147483647,无符号:0~4294967295bigint:8字节大整数,有符号:-9223372036854775808~92338。无符号:0~18446440770951615float:4字节单精度浮点数,最小非零值:-1.175494351E-38,最大非零值:-3.4466e38double:8字节双精度浮点数,最小非零值:-2.5089.00000000675最大非零值:-1.796913486233本章首先概述了可用的类型并总结了每种类型的存储要求,然后提供了每种类型中类型类别的更详细的描述。概述被有意简化。更详细的描述应该参考特写列类型的附加信息,例如,您可以为它指定值的允许格式。下面列出了MySQL支持的列类型。描述中使用了以下代码字母:m表示最大显示尺寸。最大显示大小长度为255。d适用于浮点类型。指示小数点后的位数。最大可能值是30,但不应大于M-2。方括号("["和"]")指定可选的类型修饰符。注意,如果为某列指定了ZEROFILL,MySQL将自动为该列添加无符号属性。警告:您应该知道,当您在两个整数值之间使用减法时,如果其中一个是无符号的,那么结果也是无符号的。参见第6.3.5节Cast函数。
tinyint[(m)][无符号][零填充]-128到127。无符号范围是0到255。BITBOOL它们是TINYINT的同义词。
SMALLINT[(M)][取消签名小整数。有符号的范围是-32768到32767。无符号范围是0到65535。
mediumint[(m)][unsigned][zerofill]是一个中等大小的整数。有符号范围是-8388608到8388607。无符号范围是0到16777215。
INT[(M)][UNSIGNED][ZEROFILL]正常大小的整数。有符号范围是-2147483648到214743647。无符号范围是0到4294967295。
integer[(m)][unsigned][zerofill]int的同义词。
bigint[(m)][无符号][zerofill]是一个大整数。有符号范围是-9223372036854775808到9223685447.5807。无符号范围是0到1844674407370951615。你应该对BIGINT列有所了解:BIGINT或者DOUBLE值,所以不应该使用大于9223372036854775807(63位)的无符号大整数,bit函数除外!如果这样做,结果中的一些大数字可能是错误的,因为在将BIGINT转换为DOUBLE时存在舍入误差。MySQL4.0可以在以下情况下处理BIGINT:使用整数在BIGINT列中存储一个大的无符号值。InMIN(big_int_column)和MAX(big_int_column)。运算符(、-、*等。)在两个操作数都是整数时使用。通常,您可以将精确整数作为字符串存储在BIGINT列中。在这种情况下,MySQL将执行一个字符串到数字的转换,包括一个双精度表示,没有中间值。当两个参数都是整数值时-",""和"*"会用BIGINT运算!这意味着如果两个大整数乘积的结果(或者函数返回一个整数的结果)大于9223372036854775807,可能会得到意想不到的结果。float(precision)[unsigned][zerofill]浮点数。精度可以是lt24作为单精度浮点数,以及介于25和53之间的双精度浮点数。这些类型类似于下面描述的FLOAT和DOUBLE类型。浮动(x)与相应的FLOAT和DOUBLE类型具有相同的范围,但显示大小和小数位数未定义。在MySQL3.23中,它是一个真正的浮点值。在MySQL的早期版本中,FLOAT(precision)通常有2个小数位。注意,由于MySQL中的所有计算都是以双精度进行的,所以使用FLOAT可能会带来一些意想不到的问题。见A.5.6节解决没有匹配线的问题。Float[(m,d)][unsigned][zerofill]小的(单精度)浮点数。允许的值为-3.4083466E38到-1.175494351E-38,0和1.14351E-38到3.366E38。如果指定了UNSIGNED,则不允许负值。m是显示宽度,d是小数位数。FLOAT没有参数,或者带有Xlt24的FLOAT(X)表示单精度浮点数。Double[(m,d)][unsigned][zerofill]正常大小的浮点数(双精度)。允许的值为-1.79769134863157e308到-2.2014e-308,0和2.2014e-308到1.77e33586。如果指定了UNSIGNED,则不允许负值。m是显示宽度,d是小数位数。DOUBLE没有Hu参数,或者FLOAT(X)具有25ltXlt53表示双精度浮点数。双精度[(m,d)][无符号][零填充]实数[(m,d)][无符号][零填充]它们是DOUBLE的同义词。Decimal[(m[,d])][unsigned][zerofill]未压缩的浮点数。工作类似于CHAR列:"打开包装意味着数字存储为字符串,并且值的每一位将使用一个字符。小数点和负数-"符号不计入m(但它们的空间是保留的)。如果d为0,该值将没有小数点或小数部分。十进制值的最大范围与DOUBLE一致,但对于给定的十进制列,实际范围可以受所选m和d的限制,如果指定了UNSIGNED,则不允许负值。如果省略d,则默认为0。如果省略m,则默认为10。存在在MySQL3.23之前,m参数必须包含符号和小数点所需的空格。dec[(m[,d])][无符号][零填充]numeric[(m[,d])][无符号][零填充]decimal的同义词。约会。支持的范围是#391000-01-01#39到#399999-12-31#39。MySQL以#39YYYY-MM-DD#39格式显示日期值,但是允许您以字符串或数字的形式为日期列赋值。参见第6.2.2.2章日期时间、日期和时间戳类型。日期时间是日期和时间的组合。支持的范围是#391000-01-0100:00:00#39到#399999-12-3123:59:59#39。MySQL以#39yyyy-mm-DDhh:mm:ss#39的格式显示日期时间值,但允许您将值作为字符串或数字赋给日期时间列。参见第6.2.2.2章日期时间、日期和时间戳类型。时间戳[(M)]时间戳。范围是#391970-01-0100:00:00#392037年之间的任何时间。在MySQL4.0和更早版本中,时间戳值以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式显示,具体取决于m是14(或省略)、12、8还是6,但您可以将时间戳列指定为字符串或数字。从MySQL4.1开始,时间戳以字符形式返回,格式为#39yyyy-mm-DDHH:·梅乔12-@.comDD#39。如果要以数字形式返回,必须在时间戳字段后添加0。不支持不同的时间戳长度。从MySQL4.0.12开始,可以使用-n:59:59#39到#39838:59:59#39。MySQL以#39hh:m:ss#39的格式显示时间值,但允许您使用字符串或数字为时间列赋值。参见第6.2.2.3章时间类型。YEAR[(2|4)]2位数或4位数格式的年份(默认为4位数)。允许的值是1901到2155,0000(4位年份格式)和1970-2069(70-69),使用2位格式。MySQL以YYYY格式显示年份值,但允许您使用字符串或数字为YEAR列赋值。(MySQL3.22之前不支持年份类型。)参见第6.2.2.4章年份类型。[NATIONAL]CHAR(M)[BINARY]一个固定长度的字符串,在存储时,总是用空格将右侧填充到指定的长度。m的范围是0到255(MySQL3.23版之前是1到255)。当值被检索时,尾随空格将被删除。除非指定了关键字BINARY,否则将根据默认字符集对CHAR值进行排序和比较,而不考虑大小写。NATIONALCHAR(或简称NCHAR)是由ANSISQL定义的CHAR列,它将使用默认字符集。这是MySQL中的默认设置。CHAR是CHARACTER的缩写。MySQL允许您创建CHAR(0)类型的列。一些老程序在运行时需要一个栏目,但他们不需要。;t使用该列的值,因此您必须构建该列以适应它。在这种情况下,CHAR(0)将非常有益。当一个列只需要存储两个值:一个是CHAR(0)(该列没有定义为NOTNULL)时,只需要一位就可以存储两个值:NULL或#34#。34。参见第6.2.3.1章CHAR和VARCHAR类型。CHAR这是CHAR(1)的同义词。[NATIONAL]VARCHAR(M)[BINARY]长度可变的字符串。注意:保存时尾部空格将被删除(这与ANSISQL约定不同)。m的范围是0到255(MySQL4.0.2之前的版本是1到255)。VARCHAR值以不区分大小写的进行排序和比较,除非指定了关键字BINARY。参见第6.5.3.1章。;的隐式列定义更改。VARCHAR是字符变化的缩写。参见第6.2.3.1章CHAR和VARCHAR类型。TINYBLOBTINYTEXT是一个BLOB或文本列,最大长度为255(2^8-1)个字符。参见第6.5.3.1章。;的隐式列定义更改。参见第6.2.3.2章BLOB和文本类型。最大长度为65535(2^16-1)个字符的BLOBTEXTBLOB或文本列。参见第6.5.3.1章。;的隐式列定义更改。参见第6.2.3.2章BLOB和文本类型。最大长度为16777215(2^24-1)个字符的BLOB或文本列。参见第6.5.3.1章。;的隐式列定义更改。参见第6.2.3.2章BLOB和文本类型。最大长度为4294967295(2^32-1)个字符的BLOB或文本列。参见第6.5.3.1章。;的隐式列定义更改。注意,由于服务器/客户机协议和MyISAM表通常有每个通信包/表行16M的限制,所以您仍然可以不要使用这种类型的所有产品。参见第6.2.3.2章BLOB和文本类型。枚举(#39值1#39,#39值2#39,...)一个枚举类型。只有一个值的字符串对象,该值选自值列#39value1#39、#39value2#39、...,NULL或特殊#34#34错误值。一个枚举列最多可以有65535个不同的值。参见第6.2.3.3节枚举类型。设置(#39值1#39,#39值2#39,...)一套。一个可以有零个或多个值的string对象,其中每个值都必须从值列#39value1#39,#39value2#3中选择。9、...。集合列最多可以有64个成员。参见第6.2.3.4章器械包类型。MySQL支持所有ANSI/ISOSQL92数字类型。这些类型包括精确数字的数据类型(数字、小数、整数和小整数)和近似数字的数据类型(浮点、实数和双精度)。关键字INT是整数的同义词,关键字DEC是小数的同义词。MySQL将数字和十进制类型实现为相同的类型,这在SQL92标准中是允许的。它们用于存储对准确性有重要要求的值,如与货币相关的数据。当用其中一个来声明一个列时,可以(通常)指定精度和数值范围;例如,本例中的salaryDECIMAL(5,2),5(precision)表示重要的小数位数,2(datascale)表示小数点后的位数。因此,在这种情况下,salary列可以存储范围从-99.99到99.99的值。(实际上,MySQL可以在这个列中存储高达999.99的值,因为它不存储正符号)。翻译和翻译注:M和D对DECIMAL(M,D)范围的影响类型表示取值范围(MySQLlt3.23)和取值范围(MySQLgt3.23)DECIMAL(4,1)-9.9到99.9-9999.9到9999.9DECIMAL(5,1)-999.9到9999.9-9999.9到9999.9DECIMAL(6,1)-999.9到9999.9注释结束:在ANSI/ISOSQL92中,语法DECIMAL(p)等价于DECIMAL(p,0)。类似地,在执行允许的决策值p的地方,语法DECIMAL等价于DECIMAL(p,0)。MySQL目前不支持DECIM。AL/NUMERIC数据类型的任何变体。一般来说,这不是一个严重的问题,这些类型的主要功能优势可以通过明确控制精度和数值范围来获得。十进制和数字值存储为字符串,而不是二进制浮点数,以保护这些值的十进制准确性。数值的每一位、小数点(如果scalegt0)和"-"符号(表示负值)。如果scale为0,小数和数值不包含小数点或小数部分。DECIMAL和NUMERIC值的最大范围与DOUBLE相同,但对于给定的DECIMAL或NUMERIC列,其实际范围可以设置该列的精度或小数位数限制。当分配给该列小数点的位数超过scale指定的值时,该列将根据scale进行舍入。当十进制或数字列的大小超过precisionandscale的指定(或默认)限制范围时,MySQL会将该值存储为列范围的端点值。