最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制....
这可难受了, 然后总数被围绕着, 怎么导入数据, 导出EXCEL .... 之类的, 或者是说导入数据不方便, 怎么字段还要有类型.... 每至于此, 我其实内心是崩溃的, 但非常理解. 不理解, 还能怎么办呢.(当然, 开个玩笑)
这里引出一个问题, 为啥要舌设置类型以及约束? 因为数据类型影响着数据存储的资源占用空间和保证数据的完整性. 经常让我头疼的是, 拿到一些都是公式嵌套的Excel表, 一打开, 该进程直接凉凉, 或者是表没有唯一标识, 或是字段总在变化, 这可让我难受坏了, so, 规则的约定是非常重要的呀, 于是找了一些常用的, 做一个简单记录.
小结: 数据类型是为了"节约内存,提高计算", 数据约束是为了, 完整性(存储关系).
常用数据类型
- decimal 表示浮点数, 如decimal(5,2)表示一个有5位数, 小数占2位
- char 表示固定长度的字符串, 如char(5), 如果值是"yg", 则会自动补齐空格
- varchar表可变长度字符串, 如, varchar(5), 值为"yg",则存储的仍是‘yg‘
- text 表示存大文本, 一种说法是说, 字符大于4000时才会用
常见数据约束
Primary key: 物理上的存储顺序, 主键, 一个表设置id字段, 类型为 int unsigned.
Foreign key: 表之间的"沟通"字段, 在insert 和delete是都要先在关联表中查询.
虽然外键约束可以保证数据的有效性, 做开发时也非常方便, 但在增删查改时, 会降低数据库性能, 不能随意增删数据(好比excel的数据嵌套了其它表), 操作上的确有些难受.
整数类型
类型 | 字节 | Signed | Unsigned |
---|---|---|---|
tinyint | 1 | -128 ~ 127 | 0 ~ 255 |
smallint | 2 | -32768 ~ 32767 | 0 ~ 65535 |
mediumint | 3 | -838 8608 ~ 838 8608 | 0 ~ 1677 7215 |
int | 4 | -21 4748 3648 ~ 21亿 | 0 ~ 42亿 |
bigint | 8 | 很大 | 0 ~ 真的大 |
字符串
类型 | 字节 |
---|---|
char | 0 ~ 65535 |
varchar | 0 ~ 65535 |
text | 0 ~ 很大 |
效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char。
char和varchar可以有默认值,text不能指定默认值。
数据库选择合适的数据类型存储还是很有必要的,对性能有一定影响. 对于int类型的,如果不需要存取负值,最好加上unsigned;对于经常出现在where语句中的字段,考虑加索引,整形的尤其适合加索引。
日期时间类型
类型 | 字节 | 演示 |
---|---|---|
date | 4 | "2020-01-01" |
time | 3 | "12:56:49" |
datetime | 8 | "2020-01-01 12:12:12" |
year | 1 | ‘2020‘ |
timestamp | 4 | 2019-10-05 22:21:23 |
数据类型是为了"节约内存,提高计算", 数据约束是为了, 完整性(存储关系).
尽量使用占位空间小的类型, 同时为提高查询效率, 可建立合适的索引.
Mysql常见字段约束: Primary key; Not null; Unique; Default; Foreign key.
原文:https://www.cnblogs.com/chenjieyouge/p/11626008.html