数据类型和约束
Posted 黑马程序员官方
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据类型和约束相关的知识,希望对你有一定的参考价值。
学习目标
- 能够知道数据类型和数据约束的作用
大家都知道数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束。
1. 数据类型
数据类型是指在创建表的时候为表中字段指定数据类型,只有数据符合类型要求才能存储起来,使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间。
常用数据类型如下:
- 整数:int,bit
- 小数:decimal
- 字符串:varchar,char
- 日期时间: date, time, datetime
- 枚举类型(enum)
数据类型说明:
- decimal表示浮点数,如 decimal(5, 2) 表示共存5位数,小数占 2 位.
- char表示固定长度的字符串,如char(3),如果填充'ab'时会补一个空格为'ab ',3表示字符数
- varchar表示可变长度的字符串,如varchar(3),填充'ab'时就会存储'ab',3表示字符数
- 对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径.
- 字符串 text 表示存储大文本,当字符大于 4000 时推荐使用, 比如技术博客.
2. 数据约束
约束是指数据在数据类型限定的基础上额外增加的要求.
常见的约束如下:
- 主键 primary key: 物理上存储的顺序. mysql 建议所有表的主键字段都叫 id, 类型为 int unsigned.
- 非空 not null: 此字段不允许填写空值.
- 惟一 unique: 此字段的值不允许重复.
- 默认 default: 当不填写字段对应的值会使用默认值,如果填写时以填写为准.
- 外键 foreign key: 对关系字段进行约束, 当为关系字段填写值时, 会到关联的表中查询此值是否存在, 如果存在则填写成功, 如果不存在则填写失败并抛出异常.
3. 数据类型附录表
1. 整数类型
类型 | 字节大小 | 有符号范围(Signed) | 无符号范围(Unsigned) |
---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 |
INT/INTEGER | 4 | -2147483648 ~2147483647 | 0 ~ 4294967295 |
BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 |
2. 字符串
类型 | 说明 | 使用场景 |
---|---|---|
CHAR | 固定长度,小型数据 | 身份证号、手机号、电话、密码 |
VARCHAR | 可变长度,小型数据 | 姓名、地址、品牌、型号 |
TEXT | 可变长度,字符个数大于 4000 | 存储小型文章或者新闻 |
LONGTEXT | 可变长度, 极大型文本数据 | 存储极大型文本数据 |
3. 时间类型
类型 | 字节大小 | 示例 |
---|---|---|
DATE | 4 | '2020-01-01' |
TIME | 3 | '12:29:59' |
DATETIME | 8 | '2020-01-01 12:29:59' |
YEAR | 1 | '2017' |
TIMESTAMP | 4 | '1970-01-01 00:00:01' UTC ~ '2038-01-01 00:00:01' UTC |
4. 小结
- 常用的数据类型:
- 整数:int,bit
- 小数:decimal
- 字符串:varchar,char
- 日期时间: date, time, datetime
- 枚举类型(enum)
- 常见的约束:
- 主键约束 primary key
- 非空约束 not null
- 惟一约束 unique
- 默认约束 default
- 外键约束 foreign key
- 数据类型和约束保证了表中数据的准确性和完整性
Python零基础笔记汇总: | |||
注释作用及分类 | 运算符总结 | 定义变量与数据类型 | |
if判断与循环总结 | 理解面向对象 | 集合操作方法 | 列表的常用操作 |
Python异常 | 元组应用及操作 | ||
Python爬虫笔记篇(含项目实战案例): | |||
代理池概述及开发环境 | 代理池的设计 | 实现代理池思路 | 定义代理IP的数据模型类 |
实现代理池工具模块 | 实现代理池的校验模块 | 实现代理池的数据库模块 | 实现代理池的爬虫模块 |
实现代理池的检测模块 | Bilibili模拟登陆(滑动验证码) | ||
Python Web篇笔记(更新中……): | |||
Part 01—Linux基础命令 | |||
操作系统与虚拟机软件 | 了解Ubuntu操作系统 | Linux查看、切换目录命令 | 绝对路径和相对路径 |
创建、删除、复制、移动文件及目录命令 | ls命令选项 | mkdir和rm命令选项 | cp和mv命令选项 |
Part 02—Linux高级命令 | |||
重定向命令 | 查看文件内容命令、链接命令 | 文本搜索命令 | 查找文件命令 |
压缩和解压缩命令 | 文件权限命令 | 获取管理员权限的相关命令 | 用户相关操作 |
用户组相关操作 | 远程登录、远程拷贝命令 | ||
静态Web服务器 | |||
搭建Python自带静态Web服务器 | 静态Web服务器-返回固定页面数据 | 静态Web服务器-返回指定页面数据 | 静态Web服务器-多任务版 |
静态Web服务器-面向对象开发 | 静态Web服务器-命令行启动动态绑定端口号 | ||
MySQL数据库的基本使用 | |||
了解数据库的作用、特点及关系型数据库管理系统 | MySQL数据库的安装介绍 |
2022年Python+大数据学习路线图,源码笔记,最优学习资源_黑马程序员官方的博客-CSDN博客任何学习过程都需要一个科学合理的学习路线,才能够有条不紊的完成我们的学习目标。Python+大数据所需学习的内容纷繁复杂,难度较大,所以今天特别为大家整理了一个全面的Python+大数据学习路线图,帮大家理清思路,攻破难关!文章目录前言第一阶段 大数据开发入门1.大数据数据开发基础MySQL8.0从入门到精通第二阶段 大数据核心基础2022版大数据Hadoop入门教程第三阶段 千亿级数仓技术数据离线数据仓库,企业级在线教育项目实战(Hive数仓项目完整流程)第四阶段 PB内存计算1.pythohttps://blog.csdn.net/itcast_cn/article/details/1223065522022年人工智能学习路线图,清楚明确_黑马程序员官方的博客-CSDN博客_人工智能学习路线图众所周知,人工智能时代已经融入到我们的生活的当中,不论是图像识别还是语音识别的相关产品已经开始落地,就连国家都将人工智能设为了国家战略级发展规划,人工智能开发将会是是未来技术研究的前沿。下面特别给大家整理了人工智能的学习路线,希望大家都能有清楚的学习方向。文章目录第一阶段 人工智能开发入门1. 人工智能之python编程零基础入门2、4天快速入门Python数据挖掘第二阶段 机器学习核心技术第三阶段 NLP自然语言处理技术第四阶段 CV计算机视觉技术1.AI-OpenCV图像处理10小时零基础入门2https://blog.csdn.net/itcast_cn/article/details/122882407
详情大家可以关注Python专栏,努力为大家更新更多好内容 ↑ ↑ ↑
以上是关于数据类型和约束的主要内容,如果未能解决你的问题,请参考以下文章