MySQL系列-详解mysql数据类型
MySQL数据类型
(1)数值类型
1、整数型
2、浮点型
3、定点型
(2)日期时间类型
(3)字符串类型
MySQL字段属性
1、空\不为空值:NULL、NOT NULL
2、主键:primary key
3、唯一键:unique key
4、自增长:auto_increment
5、默认值:default
6、字段描述:comment
数值类型
整数类型:tinyint、smallint、mediumint、integer、bigint
| 类型 | 简写 | 字节大小 | singed范围 | unsinged范围 | 备注 |
| 整数型 | |||||
| tinyint | 1 | 0~255 | -128~127 | ||
| smallint | 2 | 0~65535 | -32768~32767 | ||
| mediunint | 3 | 0~16777215 | -8388608~8388607 | ||
| integer | int | 4 | 0~4294967295 |
-2147483648~2147483647 | |
| bigint | 8 |
0~264-1 |
-263~263-1 |
小数类型:float、double、decimal
float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都是浮点型,而decimal是定点型。
浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度。
float和double在不指定精度时,默认会按照实际的精度来显示,而DECIMAL在不指定精度时,默认整数为10,小数为0。
时间日期类型
时间日期类型包括date、time、datetime、timestamp、year
| 类型 | 字节大小 | 范围 | 格式 | 用途 |
| date | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期值 |
| time | 3 | -838:59:59~838:59:59 | HH:MM:SS | 时间值或持续时间 |
| year | 1 | 1901-2156 | YYYY | 年份值 |
| datetime | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| timestamp | 4 | 1970-01-01 00:00:00到2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 一旦该行记录被修改,那么timestamp会修改成当前时间。 |
字符串类型
字符串类型包括char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext
| 类型 | 范围 | 存储所需字节 | 说明 |
| char(m) | [0,28-1] | m | 最大长度为255,不使用L时默认为1 |
| varchar(m) | [0,216-1] | m | 单位为字符,最大长度为65536 |
| timyblob | L+1 | ||
| blob | L+2 | 存储二进制数据(少用) | |
| mediumblob | L+3 | ||
| longblob | L+4 | ||
| tinytext | L+1 | 短文本数据 | |
| text | L+2 | 存储文字,当字符大于255时,一般使用text; | |
| mediuntext | L+3 | 中等长度文本数据 | |
| longtext | L+4 | 极大文本数据 |
不要轻易的使用最大限度来存储字符串,因为涉及记录长度问题 :
- MySQL中规定任何一条数据最长不能超过65535个字节
- 如果有任何一个字段允许为空,那么系统会自动从整个记录中保存一个字节来存储NULL;
- text文本不占用记录长度,额外存储。
- UTF8中varchar的最大限度:65535-2(需要两个字节来存储长度) /3=21844,所以最大字符数为21844
- GBK中varchar的最大限度:65535-2(需要两个字节来存储长度) /2=32766
字段属性:
字段属性是字段除数据类型外的属性,一般有空\不为空值、主键、唯一键、自增长、默认值、描述等属性。
空\不为空值:NULL、NOT NULL
字段的数据默认情况下是允许为空的,比如说一条人的信息记录中可以没有邮箱(或许有些人考虑用“空字符串”来代表),我们允许可以不填入数据的字段可以设置为null;但比如说某些必填数据,我们不想填入的时候留空,可以设置这个字段为not null

主键:primary key
- 主键用于唯一标识每一条记录(每个人都有自己唯一的身份证)
- 每一张表只能有一个主键。
- 因为唯一标识,所以主键字段的数据不能为空,并且主键字段的数据值不能重复
- 主键也是一种索引,可以提高查找速率。
主键的用途:主键的主要用途是用来唯一标识每一条记录,比如我们想将两个表(学生表跟老师表)的多对多关系封装到一个表中,这个抽取的映射字段一般都是各自的主键。
;并且由于主键的数据的不可重复性,也用来约束数据的唯一性。
唯一键:unique key
- 唯一键的功能与主键有点类型,但不同的是主键只能有一个,唯一键可以有多个,而且唯一键的字段的数据允许为空。
- 唯一键可以约束字段,使得字段的数据不能重复
- 如果唯一键同时也有not null,并且表中没有主键的话,在desc查看表结构中会显示成主键
- 如果唯一键也不允许为空,那么功能与主键相同
- 唯一键的定义方法可以参考主键的。
- 唯一键的删除:
alter table 表名 drop index 唯一键名; -- 唯一键默认使用字段名来定义名字
自增长:auto_increment
- 自增长的功能是可以使某个字段的数据随着记录的插入而进行增长(不给这个字段插入数据的情况下)
- 自增长的前提是这个字段必须是一个“索引”,比如主键、唯一键
- 自增长的前提这个字段的数据类型是一个数值型的,(如果给了float,也不会增长成小数,而仅仅是整数)
- 一个表只能有一个自增长。
- 只有不给值,或者给null的情况下,才能正确自增长;如果某一次自增长失败了,那么下一次会从当前字段的最大值开始继续自增长。
- 自增长的修改:
- 修改增长速度:set auto_increment = 值;
- 修改下次增长的值:alter table 表名 auto_increment = 值; 【修改的值只能变大,不能变小,因为可能导致数据重复问题】
- 自增长的查看:show vairable like "auto_increment%";
- 自增长的删除:利用alter来删除,alter修改字段属性的时候如果不带上原来的属性就会被删掉:
默认值:default
- 默认值的功能是当我们不给一个字段赋值的时候,使用默认值作为数据,比如不选择性别的时候,默认使用“保密”;
字段描述:comment
字段描述是用来描述字段的,能在查看数据表创建语句的时候显示出来(不会再select结果中显示出来),可以帮助我们了解某一个字段的意义。

MySQL系列-详解mysql数据类型的更多相关文章
- MySQL系列详解八:MySQL多线程复制演示-技术流ken
前言 Mysql 采用多线程进行复制是从 Mysql 5.6 开始支持的内容,但是 5.6 版本下有缺陷,虽然支持多线程,但是每个数据库只能一个线程,也就是说如果我们只有一个数据库,则主从复制时也只有 ...
- MySQL存储过程详解 mysql 存储过程
原文地址:MySQL存储过程详解 mysql 存储过程作者:王者佳暮 mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储 ...
- MySQL存储过程详解 mysql 存储过程(二)
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL ...
- MySQL存储过程详解 mysql 存储过程(转)
mysql存储过程详解 1. 存储过程简介 我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的S ...
- MySQL系列详解六:MySQL主从复制/半同步演示-技术流ken
前言 随着技术的发展,在实际的生产环境中,由单台MySQL数据库服务器不能满足实际的需求.此时数据库集群就很好的解决了这个问题了.采用MySQL分布式集群,能够搭建一个高并发.负载均衡的集群服务器.在 ...
- MySQL系列详解三:MySQL中各类日志详解-技术流ken
前言 日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 .下面分别对他们进行介绍. 查询日志 1.查看查询日志变 ...
- MySQL系列详解七:MySQL双主架构演示-技术流ken
前言 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mys ...
- MySQL系列详解五: xtrabackup实现完全备份及增量备份详解-技术流ken
xtrabackup简介 xtrabackup是一个用来对mysql做备份的工具,它可以对innodb引擎的数据库做热备.xtrabackup备份和还原速度快,备份操作不会中断正在执行的事务,备份完成 ...
- MySQL系列详解二:MySQL语句操作-技术流ken
简介 本篇博客将详细讲解mysql的一些常用sql语句操作,例如创建数据库,删除数据库,创建表,修改表,删除表,以及简单查询案例. 关于mysql数据中的SQL的大小写问题 1.不区分大小写 1. s ...
- MySQL系列详解一:MySQL&&多实例安装-技术流ken
简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言,它使得存储.更新和存取信息更加容易.MySQL是一个客户机/服务器结构的实现 ...
随机推荐
- 将【jar包、bat、其他文件】注册到windows服务的三种方法
将[jar包.bat.其他文件]注册到windows服务的三种方法 1.instsrv.exe和srvany.exe 1.下载配置instsrv和srvany 下载地址:https://dl.pcon ...
- Python条件语句和基本数据类型
1.if基本语句 if 条件: 内部代码块 else: ...... 2.if支持嵌套 if 1 == 1: if 2 == 2: print('走一步') else: print('走两步') el ...
- cython并行性能-计算滚动求和 rolling function
cython通过编译为C程序提高性能有很多例子,通过OpenMP并行的性能没那么多. 今天尝试了一下似乎gcc对parallelism reduction优化的很厉害,加上OpenMP并行可以提高20 ...
- java spring 理解
1.spring IOC容器 其实就是 new 了一个 ApplicationContext 类对象.->应用上下文对象. 2.应用上下文对象 实例化.配置,并管理 bean. 所以上下文对象是 ...
- SpringMVC学习day03
第1个springmvc程序 这是根据狂神说视频和资料学习的,用于加强自己的记忆 入门学习 1. 步骤: 1.新建一个Moudle , springmvc-02-hello , 添加web的支持! 2 ...
- 对词向量模型Word2Vec和GloVe的理解
Word2Vec Word2Vec 是 google 在2013年提出的词向量模型,通过 Word2Vec 可以用数值向量表示单词,且在向量空间中可以很好地衡量两个单词的相似性. 简述 我们知道,在使 ...
- docker+go+gin部署
一.准备工作 1.先确保项目可以正常运行 二.编写Dockerfile文件,生成镜像 FROM golang:1.18.1 WORKDIR /go/src/app ADD ./ /go/src/app ...
- centos7.6安装rz命令上传文件
centos7.6安装rz命令 1.执行安装命令:yum -y install lrzsz 2.进行上传操作:rz 跳转到本地文件选择后即可上传
- Wordpress 漏洞利用与后渗透
[作业]ColddBox 靶场 Wordpress 漏洞利用与后渗透. 突破口 渗透这类 CMS 网站时,不要上来就狂扫,它大部分目录都是固定的,开源去看对应版本,商业的找几篇文章.特别 注意的是一定 ...
- Python - Numpy 学习笔记
#python - Numpy learning import numpy as np #---Numpy学习笔记---(第四章)--- #切片,浅拷贝 a = np.arange(10) print ...