mysql数据库优化课程---3、数据库设计是什么
一、总结
一句话总结:
就是设计各个字段及各个字段类型
1、char,varchar,text同存'ABC'的存储空间为多少?
char(255):255
varchar:4
text:5
列类型 |
存储需求 |
CHAR(M) |
M个字节,0 <= M <= 255 |
VARCHAR(M) |
L+1个字节,其中L <= M 且0 <= M <= 65535(参见下面的注释) |
BINARY(M) |
M个字节,0 <= M <= 255 |
VARBINARY(M) |
L+1个字节,其中L <= M 且0 <= M <= 255 |
TINYBLOB, TINYTEXT |
L+1个字节,其中L < 28 |
BLOB, TEXT |
L+2个字节,其中L < 216 |
MEDIUMBLOB, MEDIUMTEXT |
L+3个字节,其中L < 224 |
LONGBLOB, LONGTEXT |
L+4个字节,其中L < 232 |
ENUM('value1','value2',...) |
1或2个字节,取决于枚举值的个数(最多65,535个值) |
SET('value1','value2',...) |
1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员) |
2、text的范围有多大?
65,535
TEXT[(M)]
最大长度为65,535(216–1)字符的TEXT列。
3、varchar的最大值是多少?
并不是255,而是65535:这里的是字符数,而不是字节数,也就是65535个中文字符或者英文字符
4、人们对于类型(varchar,text等等)使用习惯是什么?
255以内:varchar
65535以内:text
更大:mediumtext或者longtext
5、存储时间一般用的是什么?
int,因为存的是时间戳:int还方便加减乘除,比如设置vip
6、如何设置vip时间一年?
最开始开通vip的时候就写了一年后的时间戳,每次登陆的时候判断这个时间戳有没有过期
二、内容在总结中
1、相关知识
表字段类型:
1.数值
1)tinyint
a.有符号
-128到+127
b.无符号
0到255
2)smallint
a.有符号
-32768到32767
b.无符号
0-65535
3)mediumint
a.有符号
-8388608到8388607
b.无符号
0-16777215
4)int
a.有符号
-2147483648到2147483647
b.无符号
0-4294967295
5)bigint
a.有符号
-9223372036854775808到9223372036854775807
b.无符号
0-18446744073709551615
2.字符串
1)char
2)varchar
3)text
3.日期时间
int
有符号数值:
create table t1(
id int
);
无符号数值:
create table t2(
id int unsigned
);
char类型:
create table t3(
username char(5)
);
varchar类型:
create table t4(
username varchar(5)
);
日期类型:
create table t5(
regtime int
);