We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
本文接着上篇 Mysql入门第一课《建表、改表、删表》 继续学习。
要建一个优秀的表,选择合适的数据类型非常重要,如果数据类型选择不当,不仅开发起来给自己找麻烦,而且还会造成数据库性能低下。
比如给student(学生表)添加age字段,选择TINYINT类型就够了,它的范围是 0-255(无符号) 比较适合,如果使用 INT 也可以满足条件,但INT占 4 个字节,而TINYINT只占 1 个字节,相比较当然TINYINT性能更好。
student
age
TINYINT
0-255
INT
刚才提到了UNSIGNED(无符号),我会在下文说明。
UNSIGNED
Mysql支持多种类型,大致分为三类:数值、字符串、日期/时间类型。
Mysql
我们各个击破
这里解释下上面提到的有符号、无符号:
有符号
无符号
对于平常开发来说,整数类型其实到 INT 的数值范围已经很大了。
建表时经常看到类似 INT(5) 后面有个 5,它表示显示宽度(M),M 的值不能大于取值范围长度。 举个例子: 如果age字段类型是INT(5) UNSIGNED ZEROFILL,插入一条数据age为99,最后显示为:00099
INT(5)
INT(5) UNSIGNED ZEROFILL
00099
UNSIGNED 为无符号, ZEROFILL 的作用是用 0 填充没有数字的位置。
ZEROFILL
我问过一些同事,在开发时为了方便,很多字段应该用数字类型 他们选择用字符串类型。这句话看看就好
字符串类型是建表时最最最常用的,下面看下它有哪些类型:
通常情况下,二进制的数据用的很少,一般像图片、音频都是存在 CDN 或 云服务器里,用的比较多的就是CHAR、VARCHAR、TEXT了。
CHAR
VARCHAR
TEXT
光看表格没啥概念,但可以知道字符串主要以字节来提现大小,我们开发中用的字符串一般就是英文字母和汉字,那就需要知道字节与它们的关系:
在 Mysql 的UTF8编码下:
UTF8
所以当我们存名称、简介和文章时,可以通过占用字节数选择合适的类型了,完美。
这个类型我们用的也很多,像生日、创建时间、修改时间等等都需要它。
在开发中,常用的是 DATETIME 和 TIMESTAMP 也有使用INT来记录时间,下面从可读性、存储空间、操作性上来分析:
DATETIME
TIMESTAMP
综合考虑,个人比较偏向TIMESTAMP,占用空间小,可读性强,如果对性能不是非常苛刻,在代码帮助下操作也很简单,但使用时要考虑它的时间范围!
结合 Mysql入门第一课《建表、改表、删表》 和本篇文章,有几处出现了约束条件,这里有必要说一下:
约束条件
本篇文章主要介绍数据类型 以及在开发中 如何使用合适的数据类型,然后在番外中介绍了下建表时出现的条件约束。
番外
条件约束
下篇文章将开始 Mysql入门第三课《数据的增删改》 欢迎阅读。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
前言
本文接着上篇 Mysql入门第一课《建表、改表、删表》 继续学习。
要建一个优秀的表,选择合适的数据类型非常重要,如果数据类型选择不当,不仅开发起来给自己找麻烦,而且还会造成数据库性能低下。
比如给
student
(学生表)添加age
字段,选择TINYINT
类型就够了,它的范围是0-255
(无符号) 比较适合,如果使用INT
也可以满足条件,但INT
占 4 个字节,而TINYINT
只占 1 个字节,相比较当然TINYINT
性能更好。刚才提到了
UNSIGNED
(无符号),我会在下文说明。数据类型
Mysql
支持多种类型,大致分为三类:数值、字符串、日期/时间类型。我们各个击破
数值类型
0,
(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)
为M+2否则为D+2
这里解释下上面提到的
有符号
、无符号
:对于平常开发来说,整数类型其实到
INT
的数值范围已经很大了。建表时经常看到类似
INT(5)
后面有个 5,它表示显示宽度(M),M 的值不能大于取值范围长度。举个例子: 如果
age
字段类型是INT(5) UNSIGNED ZEROFILL
,插入一条数据age
为99,最后显示为:00099
UNSIGNED
为无符号,ZEROFILL
的作用是用 0 填充没有数字的位置。字符串类型
字符串类型是建表时最最最常用的,下面看下它有哪些类型:
通常情况下,二进制的数据用的很少,一般像图片、音频都是存在 CDN 或 云服务器里,用的比较多的就是
CHAR
、VARCHAR
、TEXT
了。光看表格没啥概念,但可以知道字符串主要以字节来提现大小,我们开发中用的字符串一般就是英文字母和汉字,那就需要知道字节与它们的关系:
在 Mysql 的
UTF8
编码下:所以当我们存名称、简介和文章时,可以通过占用字节数选择合适的类型了,完美。
日期/时间类型
这个类型我们用的也很多,像生日、创建时间、修改时间等等都需要它。
在开发中,常用的是
DATETIME
和TIMESTAMP
也有使用INT
来记录时间,下面从可读性、存储空间、操作性上来分析:DATETIME
和TIMESTAMP
直观。INT
要方便很多,可以直接比较,加减等运算,其余两种需要利用代码工具进行计算和比较,此时性能最好的是INT
综合考虑,个人比较偏向
TIMESTAMP
,占用空间小,可读性强,如果对性能不是非常苛刻,在代码帮助下操作也很简单,但使用时要考虑它的时间范围!番外
结合 Mysql入门第一课《建表、改表、删表》 和本篇文章,有几处出现了
约束条件
,这里有必要说一下:总结
本篇文章主要介绍数据类型 以及在开发中 如何使用合适的数据类型,然后在
番外
中介绍了下建表时出现的条件约束
。下篇文章将开始 Mysql入门第三课《数据的增删改》 欢迎阅读。
The text was updated successfully, but these errors were encountered: