扬州城市论坛 百科 MySQL的数据类型和建库策略

MySQL的数据类型和建库策略

无论是在微小的免费数据库空间,还是大型电子商务网站,都需要合理设计表结构,充分利用空间。这就要求我们对数据库系统的常见数据类型有充分的了解。在这里,我写一点我的经验,与大家分享。

1.数字的类型。按照我的分类方法,数字分为三类:整数、小数、数。

我说的“数类”是指十进制和数值,是同一类型。严格来说不是数字类型,因为他们实际上是以字符串的形式保存数字的;他的值的每一位(包括小数点)都要占用一个字节的存储空间,所以这种类型占用的空间很大。但其突出的优点是小数位数是固定的,在运算时不会“失真”,所以更适用于“价格”、“金额”等对精度要求不高但精度要求非常高的字段。

类,也就是浮点数,根据精度可以分为float(单精度)和DOUBLE(双精度)。他们的优势是准确。FLOAT可以表示绝对值很小的小数,约为1.17E-38 (0.000.0117,小数点后有37个零),而DOUBLE可以表示绝对值约为2.22E-308 (0.000)的小数.小数点后有307个零的0222)。浮点型和双精度型占用的存储空间分别为4字节和8字节。如果需要使用十进制字段,并且精度要求不高,当然要用FLOAT!但说实话,我们的“民用”数据怎么会要求这么高的精度呢?这两种类型的——我至今没用过,也没遇到适合用的情况。

最广泛使用和最经济的是整数类型。从只占用一个字节存储空间的TINYINT,到占用八个字节的BIGINT,选择一个“够用”且占用存储空间最小的类型是设计数据库时要考虑的。TINT、SMALLINT、MEDIUMINT、INT和BIGINT分别占用1字节、2字节、3字节、4字节和8字节。就无符号整数而言,这些类型可以表示的最大整数分别是255、65535、16777215、4294967295和1844674073709551616。如果是用来保存用户年龄的(比如在数据库中保存年龄是不可取的),TINYINT就足够了;《纵横》里九城,所有技能值用SMALLINT就够了;如果您想将它用作不超过16,000,000行的表的AUTO_INCREMENT的IDENTIFY字段,当然要使用MEDIUMINT而不是INT。试想每行节省一个字节,1600万行可以节省10多兆!

第二,日期和时间的类型。

而日期和时间类型相对简单,无非就是日期、时间、日期时间、时间戳和年份。对于只对日期敏感而对时间没有要求的字段,用DATE代替DATETIME就不用说了;单独使用时间的情况也时有发生:3354使用时间;但是DATETIME是使用最多的一个。关于日期和时间的类型没有什么关系,所以我在这里不赘述。

三。字符类型(字符串)。

不要以为人物类型是char!CHAR和VARCHAR的区别在于CHAR是固定长度的。只要你定义一个字段为CHAR(10),不管你存储的数据是否达到10字节,它都会占用10字节的空间。另一方面,VARVHAR的长度是可变的。如果一个字段的可能值长度不固定,我们只知道不能超过10个字符。定义为VARCHAR(10)最划算,VARCHAR类型的实际长度就是它的值(实际长度1)。为什么是“1”?这个字节用来存储实际长度!从这个“1”也应该看出,如果一个字段的最大可能值是10个字符,而在大多数情况下,当使用10个字符时,使用VARCHAR是不经济的:因为在大多数情况下,实际占用的空间是11个字节,比使用CHAR(10)多一个字节!

例如,它是一个存储股票名称和代码的表。股票名称大多是四个字,即8个字节;股票代码在上海是六位数,在深圳是四位数。这些都是定长的。当然,股票名称应该是char(8);虽然股票代码长度不固定,但是如果用VARVHAR(6)的话,一个深市股票代码实际占用5个字节,一个沪市股票代码占用7个字节!考虑到沪市股票比深市多,用VARCHAR(6)不如CHAR(6)划算。

虽然一个CHAR或VARVHAR的最大长度可以达到255,但是我认为大于20的CHAR很难用于——。很少有大于20字节的定长东西吧?如果不是定长,就用VARCHAR!大于100的VARCHAR也很少使用。——比这个大。只用文字。TINYTEXT,最大长度255,占用空间也是(实际长度1);文本,最大长度65535,占用空间为(实际长度2);MEDIUMTEXT,最大长度为1677215,占用空间为(实际长度3);LONGTEXT,最大长度为4294967295,占用空间为(实际长度4)。为什么是“1”?" 2"?" 3"?" 4"?如果还不知道,就打电话给PP,这些可以用在论坛,新闻等。以保存文章的文本。根据实际情况,从小到大选择不同的类型。

四。枚举和集合类型。

ENUM(枚举)类型,可以定义多达65,535个不同的字符串供选择。只能且必须选择其中之一。占用的存储空间是一个还是两个字节,由枚举值的个数决定;集合(SET)类型,最多可以有64个成员。你可以从零到无限数量中选择。所占用的存储空间是1到8个字节,这是由集合中可能的成员数决定的。

比如在SQLServer中,可以保存使用Bit类型来表示性别(男/女),但是mysql没有Bit,那么使用TINTINT?不是,可以用ENUM('帅哥''靓女')!只有两个选择,所以只有一个字节,——,和TINYINT一样大,但是可以通过字符串‘帅哥’和‘靓女’直接访问。多方便啊!

好了,MySQL的数据类型介绍的差不多了,我的数据库构建策略也随着数据类型的介绍介绍给大家。但这只是其中的一部分,篇幅有限,不能再细说了。其他的就看每个人对数据类型的理解了,多练习多讨论。

本文来自网络,不代表本站立场,转载请注明出处:https://baike.yzcslt.com/n/a6125.html

MySQL的数据类型和建库策略

扬州城市论坛后续将为您提供丰富、全面的关于MySQL的数据类型和建库策略内容,让您第一时间了解到关于MySQL的数据类型和建库策略的热门信息。小编将持续从百度新闻、搜狗百科、微博热搜、知乎热门问答以及部分合作站点渠道收集和补充完善信息。