2024年10月mysql数字类型(mysql中常见的数据类型)

 更新时间:2024-10-12

  ⑴mysql数字类型(mysql中常见的数据类型

  ⑵假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BillGates,如:MUNERIC(,)一个NUMERIC型数据的整数部分最大只能有位,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的,现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,一个文本型字段中的数据通常要么为空,你可以在NUMERIC型字段中存储小数.,NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多,FLOAT类型和DOUBLE类型占用存储空间分别是字节和字节。

  ⑶mysql中常见的数据类型

  ⑷一:MySQL数据类型

  ⑸MySQL中定义数据字段的类型对你数据库的优化是非常重要的

  ⑹MySQL支持多种数据类型,大致可以分为三类:数值日期/时间和字符串

  ⑺如果希望保证值比较准确,推荐使用定点数数据类型。MySql中的浮点类型有float,double和real。他们定义方式为:FLOAT(M,D)、REAL(M,D)、DOUBLEPRECISION(M,D)。

  ⑻FLOAT和DOUBLE中的M和D的取值默认都为,即除了最大最小值,不限制位数。允许的值理论上是-.E+~-.E-、和.E-~.E+。M、D范围如下:

  ⑼(MySql.实测,与IEEE标准计算的实际是不同的,下面介绍:M取值范围为~。FLOAT只保证位有效数字的准确性,所以FLOAT(M,D)中,M《=时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。

  ⑽D取值范围为~,同时必须《=M。double只保证位有效数字的准确性,所以DOUBLE(M,D)中,M《=时,数字通常是准确的。如果M和D都有明确定义,其超出范围后的处理同decimal。

  ⑾CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉,所以,我们在存储时字符串右边不能有空格,即使有,查询出来后也会被删除。在存储或检索过程中不进行大小写转换。

  ⑿定点数的比较特殊,而且与具体版本也有关系,此处单独解释:

  ⒀使用二进制格式将个十进制(基于)数压缩为个字节来表示DECIMAL列值。每个值的整数和分数部分的存储分别确定。每个位数的倍数需要个字节,并且“剩余的”位需要个字节的一部分。下表给出了超出位数的存储需求:

  ⒁从版本..开始,存储需求就有所改变,根据精度而定。不确定部分需要的存储如下:

  ⒂比如,TIME(),TIME(),TIME(),和TIME()分别使用,,,bytes。

  ⒃为了优化存储,在任何情况下均应使用最精确的类型。

  ⒄例如,如果列的值的范围为从到,若使用整数,则MEDIUMINTUNSIGNED是好的类型。在所有可以表示该列值的类型中,该类型使用的存储最少。

  ⒅用精度为位十进制数(基于)对DECIMAL列进行所有基本计算(+、-、*、/)。

  ⒆使用双精度操作对DECIMAL值进行计算。如果准确度不是太重要或如果速度为最高优先级,DOUBLE类型即足够了。为了达到高精度,可以转换到保存在BIGINT中的定点类型。这样可以用位整数进行所有计算,根据需要将结果转换回浮点值。

  ⒇使用其他数据库的SQL语句

  ⒈为了使用为其它数据库编写的SQL执行代码,MySQL按照下表所示对列类型进行映射。通过这些映射,可以很容易地从其它数据库引擎将表定义导入到MySQL中:

  ⒉mysql数据库中有几种数据类型

  ⒊MySQL数据类型之一字符型VARCHARVSCHARVARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符串长度小于的字符。假如你向一个长度为四十个字符的VARCHAR型字段中输入数据BillGates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串BillGates的长度。现在假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要MySQL数据类型之二文本型TEXT使用文本型数据,你可以存放超过二十亿个字符的字符串。当你需要存储大串的字符时,应该使用文本型数据。注意文本型数据没有长度,而上一节中所讲的字符型数据是有长度的。一个文本型字段中的数据通常要么为空,要么很大。当你从HTMLform的多行文本框(TEXTAREA)中收集数据时,你应该把收集的信息存储于文本型字段中。但是,无论何时,只要你能避免使用文本型字段,你就应该不适用它。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。一旦你向文本型字段中输入了任何数据(甚至是空值),就会有K的空间被自动分配给该数据。除非删除该记录,否则你无法收回这部分存储空间。MySQL数据类型之三数值型SQL支持许多种不同的数值型数据。你可以存储整数INT、小数NUMERIC、和钱数MONEY。INTVSSMALLINTVSTINYINT他们的区别只是字符长度:INT型数据的表数范围是从-,,,到,,,的整数SMALLINT型数据可以存储从-到的整数TINYINT型的字段只能存储从到的整数,不能用来储存负数通常,为了节省空间,应该尽可能的使用最小的整型数据。一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。这看起来似乎差别不大,但是在比较大的表中,字节数的增长是很快的。另一方面,一旦你已经创建了一个字段,要修改它是很困难的。因此,为安全起见,你应该预测以下,一个字段所需要存储的数值最大有可能是多大,然后选择适当的数据类型。MUNERIC为了能对字段所存放的数据有更多的控制,你可以使用NUMERIC型数据来同时表示一个数的整数部分和小数部分。NUMERIC型数据使你能表示非常大的数——比INT型数据要大得多。一个NUMERIC型字段可以存储从-到范围内的数。NUMERIC型数据还使你能表示有小数部分的数。例如,你可以在NUMERIC型字段中存储小数.。当定义一个NUMERIC型字段时,你需要同时指定整数部分的大小和小数部分的大小。如:MUNERIC(,)一个NUMERIC型数据的整数部分最大只能有位,小数部分的位数必须小于或等于整数部分的位数,小数部分可以是零。MONEYVSSMALLMONEY你可以使用INT型或NUMERIC型数据来存储钱数。但是,专门有另外两种数据类型用于此目的。如果你希望你的网点能挣很多钱,你可以使用MONEY型数据。如果你的野心不大,你可以使用SMALLMONEY型数据。MONEY型数据可以存储从-,,,,.到,,,,.的钱数。如果你需要存储比这还大的金额,你可以使用NUMERIC型数据。SMALLMONEY型数据只能存储从-,.到,.的钱数。同样,如果可以的话,你应该用SMALLMONEY型来代替MONEY型数据,以节省空间。MySQL数据类型之四逻辑型BIT如果你使用复选框(CHECKBOX)从网页中搜集信息,你可以把此信息存储在BIT型字段中。BIT型字段只能取两个值:或。当心,在你创建好一个表之后,你不能向表中添加BIT型字段。如果你打算在一个表中包含BIT型字段,你必须在创建表时完成。MySQL数据类型之五日期型DATETIMEVSSMALLDATETIME一个DATETIME型的字段可以存储的日期范围是从年月日第一毫秒到年月日最后一毫秒。如果你不需要覆盖这么大范围的日期和时间,你可以使用SMALLDATETIME型数据。它与DATETIME型数据同样使用,只不过它能表示的日期和时间范围比DATETIME型数据小,而且不如DATETIME型数据精确。一个SMALLDATETIME型的字段能够存储从年月日到年月日的日期,它只能精确到秒。DATETIME型字段在你输入日期和时间之前并不包含实际的数据,认识这一点是重要的。

  ⒋MySQL的数据类型和建库策略

  ⒌无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。一、数字类型数字类型按照我的分类方法分为三类:整数类、小数类和数字类。我所谓的“数字类”,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失真”,所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度要求非常高的字段。小数类,即浮点数类型,根据精度的不同,有FLOAT和DOUBLE两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约.E-(....,小数点后面有个零)的小数,而DOUBLE更是可以表示绝对值小到约.E-(....,小数点后面有个零)的小数。FLOAT类型和DOUBLE类型占用存储空间分别是字节和字节。如果需要用到小数的字段,精度要求不高的,当然用FLOAT了。可是说句实在话,我们“民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过——我还没有遇到适合于使用它们的事例。用的最多的,最值得精打细算的,是整数类型。从只占一个字节存储空间的TINYINT到占个字节的BIGINT,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT占用存储空间分别为字节、字节、字节、字节和字节,就无符号的整数而言,这些类型能表示的最大整数分别为、、、和。如果用来保存用户的年龄(举例来说,数据库中保存年龄是不可取的),用TINYINT就够了;九城的《纵横》里,各项技能值,用SMALLINT也够了;如果要用作一个肯定不会超过行的表的AUTO_INCREMENT的IDENTIFY字段,当然用MEDIUMINT不用INT,试想,每行节约一个字节,行可以节约兆多呢。二、日期时间类型日期和时间类型比较简单,无非是DATE、TIME、DATETIME、TIMESTAMP和YEAR等几个类型。只对日期敏感,而对时间没有要求的字段,就用DATE而不用DATETIME是不用说的了;单独使用时间的情况也时有发生——使用TIME;但最多用到的还是用DATETIME。在日期时间类型上没有什么文章可做,这里就不再详述。三、字符(串)类型不要以为字符类型就是CHAR,CHAR和VARCHAR的区别在于CHAR是固定长度,只要你定义一个字段是CHAR(),那么不论你存储的数据是否达到了个字节,它都要占去个字节的空间;而VARCHAR则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过个字符,把它定义为VARCHAR()是最合算的,VARCHAR类型的占用空间是它的值的实际长度+。为什么要+呢?这一个字节用于保存实际使用了多大的长度。从这个+中也应该看到,如果一个字段,它的可能值最长是个字符,而多数情况下也就是用到了个字符时,用VARCHAR就不合算了:因为在多数情况下,实际占用空间是个字节,比用CHAR()还多占用一个字节。举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用CHAR();股票代码虽然是不固定长度,但如果使用VARCHAR(),一个深圳的股票代码实际占用空间是个字节,而一个上海的股票代码要占用个字节!考虑到上海的股票数目比深圳的多,那么用VARCHAR()就不如CHAR()合算了。虽然一个CHAR或VARCHAR的最大长度可以到,我认为大于的CHAR是几乎用不到的——很少有大于个字节长度的固定长度的东东吧?不是固定长度的就用VARCHAR。大于的VARCHAR也是几乎用不到的——比这更大的用TEXT就好了。TINYTEXT,最大长度为,占用空间也是实际长度+;TEXT,最大长度,占用空间是实际长度+;MEDIUMTEXT,最大长度,占用空间是实际长度+;LONGTEXT,最大长度,占用空间是实际长度+。为什么+、+、+、+?你要是还不知道就该打PP了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。四、枚举和集合类型枚举(ENUM)类型,最多可以定义种不同的字符串从中做出选择,只能并且必须选择其中一种,占用存储空间是一个或两个字节,由枚举值的数目决定;集合(SET)类型,最多可以有个成员,可以选择其中的零个到不限定的多个,占用存储空间是一个到八个字节,由集合可能的成员数目决定。举个例子来说,在SQLServer中,你可以节约到用一个BIT类型来表示性别(男/女),但MySQL没有BIT,用TINTINT吗?不,可以用ENUM(’帅哥’,’美眉’),只有两种选择,所以只需一个字节——跟TINYINT一样大,但却可以直接用字符串’帅哥’和’美眉’来存取。真是太方便啦!好了,MySQL的数据类型介绍得差不多,我的建库策略也随着介绍数据类型介绍给大家一些。但这只是其中一部分,篇幅有限,不能再细说;其他的,就靠各人在对数据类型理解的基础上,多多实践、多多讨论。

您可能感兴趣的文章:

相关文章