Mysql 常见数据类型及约束
Mysql 常见数据类型及约束
最近在跟几个不太懂技术的同事(哈哈, 其实我也不懂), 要整一个数据库项目, 然后前端, 后端, 都没有像样的, 数据输出还不是由我们控制....
这可难受了, 然后总数被围绕着, 怎么导入数据, 导出EXCEL .... 之类的, 或者是说导入数据不方便, 怎么字段还要有类型.... 每至于此, 我其实内心是崩溃的, 但非常理解. 不理解, 还能怎么办呢.(当然, 开个玩笑)
这里引出一个问题, 为啥要舌设置类型以及约束? 因为数据类型影响着数据存储的资源占用空间和保证数据的完整性. 经常让我头疼的是, 拿到一些都是公式嵌套的Excel表, 一打开, 该进程直接凉凉, 或者是表没有唯一标识, 或是字段总在变化, 这可让我难受坏了, so, 规则的约定是非常重要的呀, 于是找了一些常用的, 做一个简单记录.
小结: 数据类型是为了"节约内存,提高计算", 数据约束是为了, 完整性(存储关系).
数据类型
常用数据类型
- 整数: tinyint, smallint(2, 无符号, 0-32367), mediumint (3, 8388607), int...
- 小数: decimal, float, double..
- 字符串: char, varchar, text...
- 时间日期: date, time, datetime
- 枚举型: enum
- decimal 表示浮点数, 如decimal(5,2)表示一个有5位数, 小数占2位
- char 表示固定长度的字符串, 如char(5), 如果值是"yg", 则会自动补齐空格
- varchar表可变长度字符串, 如, varchar(5), 值为"yg",则存储的仍是'yg'
- text 表示存大文本, 一种说法是说, 字符大于4000时才会用
常见数据约束
Primary key: 物理上的存储顺序, 主键, 一个表设置id字段, 类型为 int unsigned.
- Not null: 该字段不允许空值.
- Unique: 该字段不允许值重复.
- Default: 给该字段给定一个默认值.
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常用的数据类型: bit, int; decimal, float; char, varchar; date, time, date time; enum...
尽量使用占位空间小的类型, 同时为提高查询效率, 可建立合适的索引.
Mysql常见字段约束: Primary key; Not null; Unique; Default; Foreign key.
Mysql 常见数据类型及约束的更多相关文章
- mysql 常见数据类型
---恢复内容开始--- MySQL常见的数据类型 一.数据类型是什么? 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 有一些数据是要存储为 ...
- MySql数据库数据类型及约束介绍
1,MySql中数据类型介绍 整型及浮点型 数据类型 存储范围 字节 TINYINT 有符号值:-2^到2^7-1 无符号值:0到2^8-1 2 SMALLINT 有符号值:-2^15到2^15-1 ...
- MySql基本数据类型及约束
1. 常用的数据类型(data_type) 字符串类型 CHAR(n) : 固定长度 VARCHAR(n) : 可变长度 NCHAR(n) : 使用utf8存储,固定长度 NVARCHAR(n) : ...
- MySQL基本数据类型和约束方式
常用数据类型 1.mysql中的基本数据类型 整型.浮点型.字符类型.日期类型.枚举和集合. 2.常用的约束条件 PRIMARY KEY.UNIPUE KEY.NOT NULL.FOREIGN KEY ...
- mysql常见数据类型
#常见的数据类型 /* 数值型: 整型 小数: 定点数 浮点数 字符型: 较短的文本:char.varchar 较长的文本:text.blob(较长的二进制数据) 日期型: */ #一.整型 /* 分 ...
- (七)MySQL常见的数据类型、约束和标识列
一.MySQL常见数据类型 1.数值型: ①整型:tinyint.smllint.mediumint.int/integer.bigint 图源:尚硅谷李玉婷 案例1:关键表格teacher,分别添加 ...
- MySQL常见的数据类型(八)
不多说,直接上干货! MySQL常见的数据类型 一.数据类型是什么? 数据类型是指列.存储过程参数.表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型. 有一些数据是要存储为数字 ...
- MySQL常见建表选项以约束
一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认 ...
- MySQL常见建表选项及约束
阅读目录---MySQL常见的建表选项及约束: 1.create table选项 1.指定列选项:default.comment 2.指定表选项:engine.auto_increment.comme ...
随机推荐
- 工具推荐--Mac下画图软件:Omnigraffle
场景描述: 日常工作中,开发的小伙伴可能会遇到,需要画流程图,架构图,时序图,UML图,网络拓扑图...等等各种图,有的小伙伴用Visio,ProcessOn,亿图图示......又是一堆软件,先不说 ...
- python开发笔记-str转字典
后台接收到post请求数据格式为json格式的字符串,不能直接用字典的get方法 909090909090909090909090909090909 Internal Server Error: /g ...
- TCP报文结构
来自:https://blog.csdn.net/qq_32998153/article/details/79680704
- IIS配置实现反向代理(图文)
需求: 网站在备案,本来的网站不符合要求,先反向到别的网站.原网站:test.com, 目标网站:target.com 设置反向代理的服务器一定是在原网站服务器上. 注意:iis应该是iis7及以上版 ...
- 使用极光第三方IM的时候服务器报错Caused by: java.net.UnknownHostException: api.im.jpush.cn
Caused by: java.net.UnknownHostException: api.im.jpush.cn 服务器报这个:首先查看服务器是否能ping通,如果能ping通,则看下 vi /et ...
- Linux字符设备驱动实例—globalmem驱动
1.globalmem虚拟设备实例 globalmem为“全局内存”的意思,在globalmem字符设备中会分配一片大小为GLOBALMEM_SIZE(4KB)的内存空间,并在驱动中提供对这片内存的读 ...
- Java程序员经典面试题+答案(全)
这套面试题主要目的是帮助那些还没有java软件开发实际工作经验,而正在努力寻找java软件开发工作的朋友在笔试时更好地赢得笔试和面试. 关注公众号[Java典籍]免费赠送一套Java入门视频教程一套! ...
- IUrlHelper ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of ...
- C++和c语言的区别
在大家眼中c++与C语言很像,但两个有本质的区别,C语言是面向过程的,而C++是面向对象的,下面就给大家梳理梳理. 1.C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中:而C++ ...
- Django框架之第八篇(模型层补充)--数据库的查询与优化:only/defer,select_related与prefetch_related,事务
在设置外键字段时需要注意: 当你使用django2.x的版本时候,在建立外键关系时,需要你手动添加几个关键点参数 models.cascade #设置级联删除 db_constraints 数据库查询 ...