2016 - 2024

感恩一路有你

mysql数据库基本知识 mysql数据类型的详解?

浏览量:3292 时间:2023-06-08 20:28:33 作者:采采

mysql数据类型的详解?

MySQL数据库的表是一个二维表,由一个或多个数据列所构成。每个数据列应该有它的特定的事件类型,该类型判断了MySQL怎么平等的眼光该列数据,我们可以把整型数值能保存到字符类型的列中,MySQL则会把它作成字符串来处理。MySQL中的列类型有三种:数值类、字符串类和日期/时间类。从大类来看列类型和数值类型一样,大都仅有四种。但每种列类型都还可细分。下面对各种列类型进行祥细详细介绍。

数值类的数据列类型数值型的列类型除开整型和浮点型两大类。

TINYINT:1字节相当小的正整数,带符号:-128~127,不带符号:0~255SMALLINT:2字节小整数,带符号:-32768~32767,不带符号:0~65535MEDIUMINT:3字节中等大小的整数,带符号:-8388608~8388607,不带符号:0~16777215INT:4字节标准整数,带符号:-2147483648~2147483647,不带符号:0~4294967295BIGINT:8字节大整数,带符号:-9223372036854775808~9233372036854775807,不带符号:0~18446744073709551615FLOAT:4字节单精度浮点数,最若涵零值:-1.175494351E-38,大非零值:-3.402823466E38extra:8字节双精度浮点数,最小非零值:-2.2250738585072014E-308,比较大非零值:-1.7976931348623157E308DECIMAL:M2字节以字符串形式来表示的浮点数,它的取值范围可变,由M和D的值决定。MYSQL意见大量的列类型,它们也可以被两类3类:数字类型、日期和时间类型和字符串(字符)类型。这个章节简单的方法决定可用类型的概述,但是总结归纳各类型所需的存储需求,然后再可以提供各类型中的类型范畴更具体一点的描述。简要说明有意地简化后了。更详细的只能说明应该是参考特写列类型的附加信息,.例如你能故其更改值的允许格式。MySQL允许的列类型在下面列个。下列代码字母作用于具体描述中:M指出的最的显示尺寸。比较大的显示尺寸长度为255。D范围问题于浮点类型。指出带领在十进制小数点后的数字数量。的最很有可能值为30,但不应为0M-2。方括号(“[”both“]”)重新指定可选的类型修饰部份。特别注意,如果为一个列更改了ZEROFILL,MySQL将不自动为这个列去添加UNSIGNED属性。警告:你应该要知道当在两个整数类型值中可以使用减法时,如有一个为UNSIGNED类型,这样的话结果也是无符号的。打开系统章节6.3.5Cast函数。

TINYINT[(M)][UNSIGNED][ZEROFILL]-128到127。无符号的范围是0到255。BITBOOL它们是TINYINT(1)的同义词。

SMALLINT[(M)][UNSIGNED][ZEROFILL]一个小整数。有符号的范围是-32768到32767。无符号的范围是0到65535。

MEDIUMINT[(M)][UNSIGNED][ZEROFILL]一个普通大小的整数。有符号的范围是-8388608到8388607。无符号的范围是0到16777215。

INT[(M)][UNSIGNED][ZEROFILL]一个正常了大小的整数。有符号的范围是-2147483648到2147483647。无符号的范围是0到4294967295。

INTEGER[(M)][UNSIGNED][ZEROFILL]INT的同义词。

BIGINT[(M)][UNSIGNED][ZEROFILL]另一个大的整数。有符号的范围是-9223372036854775808到9223372036854775807。无符号的范围是0到18446744073709551615。你应该是知道的关联BIGINT列的一些事情:BIGINT或soft值来结束的,并且你不应该建议使用小于9223372036854775807(63bits)的无符号大整数,除了位函数之外!要是你那样做了,而中的某些大数字可能会会出错,是因为将BIGINT转换成flat时产生了近似值错误。MySQL4.0在a.情况下可以不去处理BIGINT:在一个BIGINT列中建议使用整数存储另一个大的无符号值。在MIN(queen_int_column)和MAX(one_int_column)中。当两个你的操作数都是整数时可以使用操作符(、-、*、等)。通常你也可以在一个BIGINT列中以字符串存储的一个最精确的整数。在这种下,MySQL将负责执行一个字符串到数字的转换,除了无intermediate的双精度表示法。当两个参数均是整数值时,“-”、“”和“*”将不使用BIGINT乘除运算!所以说,要是两个大整数的乘积(或函数的结果直接返回整数)的结果大于09223372036854775807时,你可能会换取大呼意外的结果。FLOAT(precision)[UNSIGNED][ZEROFILL]一个浮点型数字。precision可以是lt24充当一个单精度的浮点数字和浅黄褐色25和53之间另外一个双精度的浮点数字。这些类型与下面描述的FLOAT和slip类型有几分相似。FLOAT(X)有与相应的FLOAT和flat类型则是的范围,但会显示尺寸和十进制小数位数是未符号表示的。在MySQL3.23中,它是个虚无飘渺的浮点值。而在MySQL早期的版本中,FLOAT(precision)常见有2小数位。再注意,因此在MySQL中所有的计算都是以双精度执行的,因此不使用FLOAT很可能带来一些倍感意外的问题。一栏章节A.5.6解决的办法还没有看操作行的问题。FLOAT[(M,D)][UNSIGNED][ZEROFILL]一个小的(单精度)浮点数字。容许的值是-3.402823466E38到-1.175494351E-38、0和1.175494351E-38到3.402823466E38。如果没有UNSIGNED被委托,负值是不允许的。M是显示宽度,D是小数位数。FLOAT没有参数或有Xlt24的FLOAT(X)代表一个单精度的浮点数字。soft[(M,D)][UNSIGNED][ZEROFILL]一个都正常大小的(双精度)浮上数字。容许的值是-1.7976931348623157E308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E308。假如UNSIGNED被委托,负值是不不允许的。M是会显示宽度,D是小数位数。extra没胡参数或有25ltXlt53的FLOAT(X)代表一个双精度的浮点数字。flatPRECISION[(M,D)][UNSIGNED][ZEROFILL]REAL[(M,D)][UNSIGNED][ZEROFILL]它们是extra同义词。DECIMAL[(M[,D])][UNSIGNED][ZEROFILL]一个未压解(unpacked)的浮点数。运作有如一个CHAR列:“unpacked”并不代表数字是以一个字符串读取的,值的每一位将在用一个字符。小数点另外这对负数,“-”符号在的M中计算(只不过它们的空间是被保留的)。如果没有D是0,值将没有小数点或小数部份。DECIMAL值的比较大范围与double一致,但是对于一个推导的DECIMAL列,实际中的范围可以不被所选择的M和D限制。如果不是UNSIGNED被指定,负值是不不能的。如果没有D被忽视,缺省为0。如果不是M被看出,缺省为10。在MySQL3.23以前,M参数要包含符号与小数点所需的空间。DEC[(M[,D])][UNSIGNED][ZEROFILL]NUMERIC[(M[,D])][UNSIGNED][ZEROFILL]DECIMAL的同义词。DATE一个日期。意见的范围是#391000-01-01#39到#399999-12-31#39。MySQL以#39YYYY-MM-DD#39格式显示DATE值,不过不允许你以字符串或数字给一个DATE列变量赋值。一栏章节6.2.2.2DATETIME、DATE和TIMESTAMP类型。DATETIME一个日期和时间的组合。接受的范围是#391000-01-0100:00:00#39到#399999-12-3123:59:59#39。MySQL以#39YYYY-MM-DDHH:MM:SS#39格式显示DATETIME值,但是不能你以字符串或数字给一个DATETIME列变量定义。栏里点章节6.2.2.2DATETIME、DATE和TIMESTAMP类型。TIMESTAMP[(M)]一个时间戳。范围是#391970-01-0100:00:00#39到2037年间的横竖斜时刻。MySQL4.0和更早版本中,TIMESTAMP值是以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式显示的,它取决于M有无是14(或省略)、12、8或6,但容许你以字符串或数字给一个TIMESTAMP列赋值。从MySQL4.1又开始,TIMESTAMP以#39YYYY-MM-DDHH:MM:DD#39格式另外字符赶往。假如你你期望以数字形式返回则必须在该时间戳字段后再加0。差别的时间戳长度是不支持的。从MySQL4.0.12开始,选项--fun这个可以被用处使服务器与4.1完全不一样经营管理。TIMESTAMP列助于记录一个INSERT或setup你操作的日期和时间,因为如果不是你自己也没给它定义变量,它将被自动启动地可以设置为最近第二次操作的日期和时间。也也可以给它赋两个NULL而使它系统设置为当前的日期和时间。一栏章节6.2.2Date和Time类型。参数M只影响一个TIMESTAMP列的显示格式;它的值老是占用4个字节存储。再注意,当TIMESTAMP(M)列的M是8或14时,它回的是数字而其它的TIMESTAMP(M)列返回的是字符串。这不仅仅是目的是是可以可靠地转储并完全恢复到其它格式的表中。一栏章节6.2.2.2DATETIME、DATE和TIMESTAMP类型。TIME一个时间。范围是#39-838:59:59#39到#39838:59:59#39。MySQL以#39HH:MM:SS#39格式显示TIME值,只不过允许你使用字符串或数字来给TIME列变量。查找章节6.2.2.3TIME类型。YEAR[(2|4)]另一个2或4位数字格式的年(缺省为4位)。不能的值是1901到2155、0000(4位年格式)这些使用2位格式的1970-2069(70-69)。MySQL以YYYY格式显示YEAR值,只不过不允许你在用字符串或数字来给YEAR列变量定义。(YEAR类型在MySQL3.22之前不意见。)栏里点章节6.2.2.4YEAR类型。[australian]CHAR(M)[BINARY]一个定长的字符串,当存储时,我总是以空格塞满右边到委托的长度。M的范围是0到255(在MySQL3.23版本之前为1到255)。当该值被检索时,尾部空格将被删除。CHAR值依据什么缺省的字符集通过忽视大小写的排索与也很,如果指定了关键词BINARY。nationalCHAR(或短形式NCHAR)是以ANSISQL定义一个CHAR列,它将建议使用缺省的字符集。这在MySQL中是系统默认的。CHAR是CHARACTER的缩写。MySQL不允许以CHAR(0)类型确立一个列。一些老程序运行时前题一个列,却又当然不不使用这个列的值,你就无可奈何为了渐渐适应它而成立该列,在这情况下,CHAR(0)将是很有益的。当需要一个列仅存放两个值时:一个为CHAR(0)(该列是没有定义方法为NOTNULL),这将仅占用带宽一个比特位来存储2个值:NULL或#34#34。查找章节6.2.3.1CHAR和VARCHAR类型。CHAR这是CHAR(1)的同义词。[commonwealth]VARCHAR(M)[BINARY]一个变长的字符串。特别注意:尾部的空格在存储时将是被删出(这与ANSISQL约规相同)。M的范围是0到255(在MySQL4.0.2之前的版本中是1到255)。VARCHAR值以大小写遗漏掉接受排索与比较,如果关键词BINARY被指定。查找章节6.5.3.1隐式的列定义法变化。VARCHAR是CHARACTER VARYING的缩写。查看章节6.2.3.1CHAR和VARCHAR类型。TINYBLOBTINYTEXT一个BLOB或TEXT列,比较大长度为255(2^8-1)个字符。一栏章节6.5.3.1隐式的列定义方法变化。一栏章节6.2.3.2BLOB和TEXT类型。BLOBTEXT一个BLOB或TEXT列,比较大长度为65535(2^16-1)个字符。查找章节6.5.3.1隐式的列定义方法变化。打开系统章节6.2.3.2BLOB和TEXT类型。MEDIUMBLOBMEDIUMTEXT一个BLOB或TEXT列,比较大长度为16777215(2^24-1)个字符。栏里点章节6.5.3.1隐式的列定义方法变化。查找章节6.2.3.2BLOB和TEXT类型。LONGBLOBLONGTEXT一个BLOB或TEXT列,最大长度为4294967295(2^32-1)个字符。打开系统章节6.5.3.1隐式的列定义方法变化。注意,由于服务器/客户端的协议以及MyISAM表通常有一个16M每通信包/表行的限制,你仍然肯定不能不使用这个类型的整个范围。一栏章节6.2.3.2BLOB和TEXT类型。ENUM(#39value1#39,#39value2#39,...)一个枚举类型。一个仅能有一个值的字符串对象,这个值素材来自值列#39value1#39、#39value2#39、...、NULL或特殊能量的#34#34出错值。一个ENUM列可以有的最65535完全不同的值。打开系统章节6.2.3.3ENUM类型。SET(#39value1#39,#39value2#39,...)一个集合。一个能该允个或更多个值的字符串对象,其中每个值需要素材来自值列#39value1#39、#39value2#39、...。一个SET列也可以有大的64个成员。查找章节6.2.3.4SET类型。MySQL支持所有的ANSI/ISO SQL92数字类型。这些类型除开准确数字的数据类型(NUMERIC、DECIMAL、INTEGER和SMALLINT),也除了另一种数字的数据类型(FLOAT、REAL和DOUBLE PRECISION)。关键词INT是INTEGER的同义词,关键词DEC是DECIMAL的同义词。NUMERIC和DECIMAL类型被MySQL以同时的类型实现程序,这在SQL92标准中是容许的。他们作用于保存对准确精度有有用要求的值,.例如与金钱有关的数据。当以它们中的之一声明一个列时,精度和数值范围这个可以(大多是)被更改;或者:salaryDECIMAL(5,2)在这个例子中,5(精度(precision))代表重要的是的十进制数字的数目,2(数据范围(scale))代表在小数点后的数字位数。在状况下,而,salary列可以不存储的值范围是从-99.99到99.99。(事实上MySQL在这个列中可以存储的数值是可以总是到999.99,而且它没有存储正数的符号)。译者注:M与D对DECIMAL(M,D)取值范围的影响类型那说明取值(MySQLlt3.23)取值范围(MySQLgt3.23)DECIMAL(4,1)-9.9到99.9-999.9到9999.9DECIMAL(5,1)-99.9到999.9-9999.9到99999.9DECIMAL(6,1)-999.9到9999.9-99999.9到999999.9DECIMAL(6,2)-99.99到999.99-9999.99到99999.99DECIMAL(6,3)-9.999到99.999-999.999到9999.999#在MySQL3.23及以后的版本中,DECIMAL(M,D)的取值范围=早期时版本中的DECIMAL(M 2,D)的取值范围。注释结束:在ANSI/ISOSQL92中,句法DECIMAL(p)等价于DECIMAL(p,0)。虽然的,在想执行被愿意确定值p的地方,句法DECIMAL等价于DECIMAL(p,0)。MySQL目前还不允许DECIMAL/NUMERIC数据类型的这些变体形式中的任一种。一般来说这并也不是三个相当严重的问题,是从内容明确地控制精度和数值范围这个可以能够得到这些类型的主要功能益处。DECIMAL和NUMERIC值是才是字符串读取的,而不是另外二进制浮点数,以备万一完全保护这些值的十进制精确度。一个字符应用于数值的每一位、小数点(如果不是scalegt0)和“-”符号(相对于负值)。如果scale是0,DECIMAL和NUMERIC值不包含小数点或小数部分。DECIMAL和NUMERIC值的最大范围与soft一致,可是这对一个给定的DECIMAL或NUMERIC列,它的换算范围可会制定该列时的precision或scale限制。当这样的列被赋给了小数点的位数最多scale所更改的值时,该将依据什么scale进行四舍五入。当一个DECIMAL或NUMERIC列被赋与一个大小远远超过重新指定(或缺省)的precisionandscale的限止范围时,MySQL以该列范围的端点值存储该值。

简述MySQL中的数据库,表和数据库服务器之间的关系?

MySQL:

关系型数据库,被Oracle公司低价卖。

多个不同的数据库(database)的集合。

MySQL数据库(database):

多个差别的表(table)的集合。的的Excel文件。

MySQL表(table):

多个有所不同的行(row)的集合。的的Excel中的一张sheet。

MySQL行(row):

多个属性混编的一条数据。类似Excel中的一行。

数据库服务器:

需要提供MySQL数据库正常运行的环境。可以是物理机是可以是云机。类似于启动Excel软件的电脑。

一句话来说那就是:服务器上正常运行着MySQL软件,数据库里贮存着多张表格来记录各种行为及属性。

表是数据库的基本上组成部分。

很多的表,表之间的关联,在一起其他一些辅助组件,组成数据库。

为数据库提供给一个对外的服务接口,称作数据库服务器。

类型 范围 MySQL

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。