三九宝宝网宝宝教育学龄段教育

分析MySQL的数据类型以及建库策略

11月26日 编辑 39baobao.com

[“老师和我一起跳”以及“龙龙,今天你当小老师”]幼儿为做某件事而事先向老师说明自己的想法,以求得老师的同意。在这个案例中,龙龙就是以这种方式征求老师的意见想改变游戏的方式,老师并没有制止他的行为取向,而是给了他实施行...+阅读

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。

一、数字类型

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

我所谓的“数字类”,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失真”,所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度要求非常高的字段。

小数类,即浮点数类型,根据精度的不同,有FLOAT和DOUBLE两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约1.17E-38(0.000...0117,小数点后面有37个零)的小数,而DOUBLE更是可以表示绝对值小到约2.22E-308(0.000...0222,小数点后面有307个零)的小数。FLOAT类型和DOUBLE类型占用存储空间分别是4字节和8字节。如果需要用到小数的字段,精度要求不高的,当然用FLOAT了。可是说句实在话,我们“民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过――我还没有遇到适合于使用它们的事例。

用的最多的,最值得精打细算的,是整数类型。从只占一个字节存储空间的TINYINT到占8个字节的BIGINT,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT占用存储空间分别为1字节、2字节、3字节、4字节和8字节,就无符号的整数而言,这些类型能表示的整数分别为25

5、6553

5、167772

15、4294967295和18446744073709551615。如果用来保存用户的年龄(举例来说,数据库中保存年龄是不可取的),用TINYINT就够了;九城的《纵横》里,各项技能值,用SMALLINT也够了;如果要用作一个肯定不会超过16000000行的表的AUTO_INCREMENT的IDENTIFY字段,当然用MEDIUMINT不用INT,试想,每行节约一个字节,16000000行可以节约10兆多呢!

二、日期时间类型

日期和时间类型比较简单,无非是DATE、TIME、DATETIME、TIMESTAMP和YEAR等几个类型。只对日期敏感,而对时间没有要求的字段,就用DATE而不用DATETIME是不用说的了;单独使用时间的情况也时有发生――使用TIME;但最多用到的还是用DATETIME。在日期时间类型上没有什么文章可做,这里就不再详述。

三、字符(串)类型

不要以为字符类型就是CHAR,CHAR和VARCHAR的区别在于CHAR是固定长度,只要你定义一个字段是CHAR(10),那么不论你存储的数据是否达到了10个字节,它都要占去10个字节的空间;而VARCHAR则是可变长度的,如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为VARCHAR(10)是最合算的,VARCHAR类型的占用空间是它的值的实际长度+1。为什么要+1呢?这一个字节用于保存实际使用了多大的长度。从这个+1中也应该看到,如果一个字段,它的可能值最长是10个字符,而多数情况下也就是用到了10个字符时,用VARCHAR就不合算了:因为在多数情况下,实际占用空间是11个字节,比用CHAR(10)还多占用一个字节。

举个例子,就是一个存储股票名称和代码的表,股票名称绝大部分是四个字的,即8个字节;股票代码,上海的是六位数字,深圳的是四位数字。这些都是固定长度的,股票名称当然要用CHAR(8);股票代码虽然是不固定长度,但如果使用VARCHAR(6),一个深圳的股票代码实际占用空间是5个字节,而一个上海的股票代码要占用7个字节!考虑到上海的股票数目比深圳的多,那么用VARCHAR(6)就不如CHAR(6)合算了。

虽然一个CHAR或VARCHAR的长度可以到255,我认为大于20的CHAR是几乎用不到的――很少有大于20个字节长度的固定长度的东东吧?不是固定长度的就用VARCHAR。大于100的VARCHAR也是几乎用不到的――比这更大的用TEXT就好了。TINYTEXT,长度为255,占用空间也是实际长度+1;TEXT,长度65535,占用空间是实际长度+2;MEDIUMTEXT,长度16777215,占用空间是实际长度+3;LONGTEXT,长度4294967295,占用空间是实际长度+4。为什么+

1、+

2、+

3、+4?你要是还不知道就该打PP了。这些可以用在论坛啊、新闻啊,什么的,用来保存文章的正文。根据实际情况的不同,选择从小到大的不同类型。

四、枚举和集合类型

枚举(ENUM)类型,最多可以定义65535种不同的字符串从中做出选择,只能并且必须选择其中一种,占用存储空间是一个或两个字节,由枚举值的数目决定;集合(SET)类型,最多可以有64个成员,可以选择其中的零个到不限定的多个,占用存储空间是一个到八个字节,由集合可能的成员数目决定。

举个例子来说,在SQL Server中,你可以节约到用一个BIT类型来表示性别(男/女),但MySQL没有BIT,用TINTINT吗?不,可以用ENUM(’帅哥’,’美眉’),只有两种选择,所以只需一个字节――跟TINYINT一样大,但却可以直接用字符串’帅哥’和’美眉’来存取。真是太方便啦!

好了,MySQL的数据类型介绍得差不多,我的建库策略也随着介绍数据类型介绍给大家一些。但这只是其中一部分,篇幅有限,不能再细说;其他的,就靠各人在对数据类型理解的基础上,多多实践、多多讨论。

以下为关联文档:

如何搽香水以及喷洒香水的窍门虽然统称为香水,其实却包括各种不同的香味,因此在挑选时,往往令人不知所从。一般说来,当然是挑选自己喜欢的香味,但使用香水不只是你一个人在享受,同时也会影响到周围的人,因此就办...

小儿常见的肝炎症状以及治疗策略  脐氙痛 在饭前或者吃饭时主诉腹痛,腹痛会持续几分钟至30分钟左右。脐疝痛多见于2~6岁的有神经质的儿童。腹痛以后,大都又开始进食。在腹痛期间,也有的儿童会出现恶...

沙眼的症状以及怎样预防沙眼是结膜炎症,而不是眼内有沙子。是由一种病毒引起的结膜发炎.造成结膜粗糙不平,形似沙粒布在结膜上,故称沙眼。 得了轻度的沙眼,感觉不是很明显,常是在体检时被医生翻转眼皮时...

风湿热的常见病状以及预防措施风湿热是一种与B型溶血性链球菌感染有密切关系的全身结缔组织疾病。风湿热的主要临床表现有发热,全身多发性、游走性关节炎,以膝、踝、肘等大关节为主,躯干和四肢皮肤会出现大...

脑中风的病因以及预防方法 一、引起脑中风的危险因子。 (一)主要危险因子:以下几种情况较容易得到脑中风。 1.高龄者:年长者的脑血管逐渐硬化失去弹性,较易引起脑血管阻塞。 2.高血压患者:长久的高血压易...

在水一方《海底世界》教学设计以及精彩片段欣赏执教:陶慧红 一、 导入新课 1、多媒体展示画面:你刚才看到的是什么?板画“海”、书写“海”字。 2、你知道海有多大、有多深吗?让我来告诉你:海大约占了地球表面积的百分之七十,海...

小学课文《草原》教学案以及评课教学目标 1.理解课文内容,体会汉蒙情深、民族团结的思想感情,激发学生热爱草原、热爱草原人民的感情。 2.学习本课生字、新词,着重理解书后读读写写中的词语。练习用关联词语造句...

PEP小学英语的特点以及面临的挑战一·前言 当今世界,科学技术发展迅猛,国际竞争日趋激烈。世界范围的综合国力的竞争,关键是科学技术的竞争。现代科学技术的主要标志是信息技术。而社会生活的信息化和经济活动...

一年级主要是培养学生对于英语的学习兴趣以及养成良好不知不觉中,这个学期已接近了尾声。本单元谈论的话题是周末活动,教师可以结合学生用书四年级下册Unit2 After school和五年级上册unit4 Hobbies的内容,综合呈现语言知识。教师...

推荐阅读
图文推荐