5.一文搞懂MySQL的数据类型

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 5.一文搞懂MySQL的数据类型

正文


一.MySQL的数据类型


数据类型是定义列中可以存储什么类型的数据以及该数据实际怎样存储的基本规则数据类型限制存储在数据列列中的数据。例如,数值数据类型列只能接受数值类型的的数据在设计表时,应该特别重视所用的数据类型。使用错误的数据类型可能会严重地影响应用程序的功能和性能。


更改包含数据的列不是一件小事(而且这样做可能会导致数据丢失)。


数据类型: 整型、浮点型、字符串、日期等


1、字符串数据类型


最常用的数据类型是串数据类型。它们存储串,如名字、地址、电 话号码、邮政编码等。 不管使用何种形式的串数据类型,串值都必须括在引号内 有两种基本的串类型,分别为定长串和变长串


定长串:char


1. 接受长度固定的字符串,其长度是在创建表时指定的。 定长列不允许存储多于指定长度字符的数据。


2. 指定长度后,就会分配固定的存储空间用于存放数据 char(7) 不管实际插入多少字符,它都会占用7个字符位置


变长串 varchar


存储可变长度的字符串 varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置,当然插入的数据长度不能超过7个字符。


注意


既然变长数据类型这样灵活,为什么还要使用定长数据类型? 回答:因为性能,MySQL处理定长列远比处理变长列快得多。


Text 变长文本类型存储


345.png


2、数值类型


数值数据类型存储数值。MySQL支持多种数值数据类型,每种存储的数值具有不同的取值范围。支持的取值范围越大,所需存储空间越多


与字符串不一样,数值不应该括在引号内


234.png


decimal(5, 2) 表示数值总共5位, 小数占2位 tinyint 1字节(8位) 0-255。-128,127 int 4字节。 -21亿,21亿。0-42亿 float.


MySQL中没有专门存储货币的数据类型,一般情况下使用DECIMAL(8, 2)


有符号或无符号


所有数值数据类型(除BIT和BOOLEAN外)都可以有符号或无符号


有符号数值列可以存储正或负的数值

无符号数值列只能存储正数。

默认情况为有符号,但如果你知道自己不需要存储负值,可以使用UNSIGNED关键字


注意


如果将邮政编码类似于01234存储为数值类型,则保存的将是数值1234,此时需要使用字符串类型 手机号应该用什么进行存储呢?


3、日期和时间类型


MySQL使用专门的数据类型来存储日期和时间值


 123.png


datetime 8字节1000-01-01 00:00:00 ~ 9999-12-31 23:59:59


4、二进制数据类型


二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档等


二、表的字段约束


unsigned 无符号(给数值类型使用,表示为正数,不写可以表示正负数都可以) 字段类型后面加括号限制宽度

char(5). varchar(7) 在字符类型后面加限制 表示 字符串的长度

int(4) 没有意义,默认无符号的int为int(11),有符号的int(10)

int(4) unsigned zerofill只有当给int类型设置有前导零时,设置int的宽度才有意义。

not null 不能为空,在操作数据库时如果输入该字段的数据为NULL ,就会报错 default 设置默认值

primary key 主键不能为空,且唯一.一般和自动递增一起配合使用。 auto_increment 定义列为自增属性,一般用于主键,数值会自动加1

unique 唯一索引(数据不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度


三、MySQL的运算符


算术运算符: +、 -、 *、 /、 %

比较运算符: =、 >、 <、 >=、 <=、!=

数据库特有的比较: in、not in、is null、is not null、like、between、and

逻辑运算符: and、or、not

like: 支持特殊符号%和_ ;

其中%表示任意数量的任意字符,_表示任意一位字符


四、主键


1、表中每一行都应该有可以唯一标识自己的一列,用于记录两条记录不能重复,任意两行都不具有相同的主键值


2、应该总是定义主键 虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主 键,以便于以后的数据操纵和管理。


要求


记录一旦插入到表中,主键最好不要再修改

不允许NULL

不在主键列中使用可能会更改的值。

(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)


自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键

可以使用多个列作为联合主键,但联合主键并不常用。使用多列作为主键时,所有列值的组合必须是唯一的


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
MySQL数据库基础(数据库操作,常用数据类型,表的操作)
39 5
|
7月前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库的数据类型、语法和高级查询
MySQL数据库的数据类型、语法和高级查询
83 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL支持多种数据类型
MySQL支持多种数据类型
126 3
|
2月前
|
存储 关系型数据库 MySQL
什么是mysql的数据类型?
什么是mysql的数据类型?
50 2
|
2月前
|
存储 关系型数据库 MySQL
MySQL数据类型
MySQL数据类型
56 2
|
7月前
|
SQL 存储 关系型数据库
RDS for MySQL的SQL分类与数据类型
小明需在MySQL中管理商品信息,使用SQL完成业务操作。SQL分为DQL(查询)、DML(增删改)、DDL(定义)、DCL(权限控制)和TCL(事务)五大类。DDL用于创建、修改和删除数据库结构,DML处理数据,DCL控制权限,TCL管理事务,DQL则用于查询数据。MySQL有多种数据类型,如数值型(整数、小数)、日期型和字符串型等,选择合适的数据类型是高效开发的关键。
78 0
|
4月前
|
关系型数据库 MySQL Linux
数据类型和运算符(MySQL服务器的安装,MySQL客户端,数据类型,运算符,MySQL的语法规范)
无论是对于初学者还是有经验的开发者,了解MySQL的安装、客户端使用、数据类型、运算符和语法规范都是至关重要的。这不仅有助于高效地管理和查询数据,而且对于设计和实现数据库解决方案来说是基础工作。通过深入学习和实践这些知识,您可以更好地发挥MySQL数据库的强大功能。
37 2
|
4月前
|
存储 关系型数据库 MySQL
MySQL 中的 BLOB 数据类型深入解析
【8月更文挑战第31天】
562 0
|
4月前
|
存储 关系型数据库 MySQL
下一篇
DataWorks