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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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

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

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


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

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


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
关系型数据库 MySQL 存储
【MySQL】——数据类型及字符集
【MySQL】——数据类型及字符集
170 0
【MySQL】——数据类型及字符集
|
3天前
|
机器学习/深度学习 存储 关系型数据库
MySQL数据库:常用数据类型
【2月更文挑战第7天】
35 0
|
3天前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
114 1
|
3天前
|
存储 SQL 关系型数据库
MySql中有哪些数据类型(数据库学习——三)
MySql中有哪些数据类型(数据库学习——三)
40 1
|
3天前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
1天前
|
存储 关系型数据库 MySQL
MySQL数据类型详解及实例应用
MySQL数据类型详解及实例应用
|
3天前
|
SQL 存储 关系型数据库
【MySQL-6】DDL的表结构的数据类型盘点&案例演示
【MySQL-6】DDL的表结构的数据类型盘点&案例演示
|
3天前
|
存储 SQL 关系型数据库
【mysql】mysql中的数据类型知多少?
【mysql】mysql中的数据类型知多少?
|
3天前
|
关系型数据库 MySQL
MySQL基础(二:常用数据类型及MySQL创建过程实例)
MySQL基础(二:常用数据类型及MySQL创建过程实例)
MySQL基础(二:常用数据类型及MySQL创建过程实例)
|
3天前
|
存储 缓存 关系型数据库
【Mysql】Schema与数据类型优化
【Mysql】Schema与数据类型优化
16 0

推荐镜像

更多