Heim > Datenbank > MySQL-Tutorial > 建立mysql数据库字段类型的选择【转】_MySQL

建立mysql数据库字段类型的选择【转】_MySQL

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2016-06-01 13:35:02
Original
1046 Leute haben es durchsucht

bitsCN.com

现 在很多人开发网站使用的程序是PHP+mysql,在建立数据库的时候,不仅要考虑到数据库字段的全面性,我们还要考虑到表的字段类型设置的合理性,因为 一个数据库对表的设计没有要求的话,会很浪费数据库的,当然如果你说你的数据库足够大,那你对字段的设置也需要了解一些内容,它可以让你更灵活的写程序。
其实,我以前也没怎么注意过数据库字段的设置,遵循一套老办法,是数字类型的就用int类型,是字符串类型的就用varchar类型,是文本的就用text类型,呵呵,当今天在CSDN上看到一个问题,让我对字段类型的选择又有了重新的定义。
CSDN上的问题是这样的:
在数据库里记录时间,是用datetime好还是用时间戳好?
我第一反应就是datetime是什么类型?我知道时间戳是一串数字,可以用php函数对这串数字处理,来变成各样的时间类型,比如2011-06-20或者06/20/2011等。对已datetime真的很陌生,只有请教下google了。
网络的解释是这样的:
一个日期和时间组合。支持的范围是’1000-01-01 00:00:00′到’9999-12-31 23:59:59′。MySQL以’YYYY-MM-DD HH:MM:SS’格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。
对于上面的问题,CSDN论坛上面的又一个网友的回答我感觉还是蛮好的:
“如果你不打算将你的程序用于其他数据库的话,用 datetime 好。
这样可以方便的使用数据库提供的丰富的日期时间函数
否则用 int 类型保存 unix 时间戳比较好。
因为各种数据库提供的日期时间函数是不同的,很难在 sql 指令中协调起来
对于日期时间的计算只能借助 php 了”
对于datetime类型的数据可以用sql函数处理,我也没去探究,我知道的sql函数少之又少,如果大家想搞的更明白还是亲自建个数据库试试。

在这里我们探讨的是怎么设置字段类型,时间类型的我们说过了,我们就说说其他类型,比如我建一个班的学生数据库表。首先这个表应该包括以下这些字段
id 学生的id 这个设为主键
name 学生的姓名
sex 学生的性别
ok,现在我们就来探讨下,id的类型,因为这是一个数字类型,我们会想到int,但是有没有更好的呢?可能你对smallint tinyint 等其他的类型不熟悉,我们还是先看下网了解释
TINYINT[(M)] [UNSIGNED] [ZEROFILL]

一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。

SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

一个小整数。有符号的范围是-32768到32767,无符号的范围是0到65535。

MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。

INT[(M)] [UNSIGNED] [ZEROFILL]

一个正常大小整数。有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。

看到上面的这些内容,我们是否会考虑使用tinyint呢,因为一个班人数不会超过100人,如果使用int不是大材小用嘛!

所以,我们熟悉这些类型的范围后可能会设计出更合理的类型。当然你也可以使用int(3),MEDIUMINT(3)等都可以。

另外要说的是,name类型,一般我们会使用varchar类型,varchar类型会根据你字符串的大小自动扩张和收缩,看样子不错,但是什么时候使用char类型呢?在这里给大家推荐一篇文章 “varchar和char之争”相信读完这篇文章大家可能会对varchar和char的使用更加明确。
关于更多的类型使用,还是需要大家在项目中多多总结得来的,另外不要忘了查看下mysql手册哦。

 

转自:http://www.phperblog.net/?p=125

bitsCN.com
Verwandte Etiketten:
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage