当前位置:网站首页>MySQL数据类型
MySQL数据类型
2022-07-30 18:01:00 【江南无故人】
数据类型一览
参考
mysql中整型可以指定有无符号,默认有符号
指定无符号的方式:
create table t(num tinyint unsigned);
插入数据越界会报错,不会像C语言里那样发生截断
整型的使用比较简单类似,下文不赘述
bit类型
按照ASCII对应的字符显示
mysql> insert into tt4 values(10, 10);
mysql> insert into t values(65, 65);
mysql> select * from t;
+------+------+
| id | a |
+------+------+
| 10 | |
| 65 | A |
+------+------+
如果需要只存放0和1,可以定义bit(1)
float类型
占用四字节,使用方法:
float(m,d)
m代表显示长度,d代表小数部分长度
float(4,2)表示的范围是-99.99 ~ 99.99,会根据要求的长度四舍五入如果插入99.991是可以的,因为四舍五入的结果在范围内,如果插入99.996不可以,因为四舍五入后越界。
如果指定无符号 float(4,2) unsigned 范围是 0 ~ 99.99
插入负数会报错,但是可以插入-0

decimal类型
使用方法和float十分类似:
decimal(m, d) --d默认为0,m默认为10
decimal(5,2) 表示的范围是 -999.99 ~ 999.99
但是decimal精度更高,m最大为65,d最大时30,float表示的精度大约只有7位
char和varchar类型
char类型:
char(L)
固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255
char(2) --表示可以存放两个字符,可以是字母或汉字,但是不能超过2个



varchar类型:
varchar(L)
可变长度字符串,L表示字符个数
varchar 的范围是0~65535字节,但是1-3字节用来记录数据大小,有效字节数是65532;
当使用utf8时,varchar(L)的参数L最大值是65532/3=21844
因为utf中,一个字符占用3个字节
如果编码是gbk,L最大是65532/2=32766
因为gbk中,一个字符占用2字节
不要把字节和字符搞混
char(定长)和varchar(变长)的选择:
如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号
如果数据长度有变化,就使用变长(varchar), 比如:名字,地址
定长的磁盘空间比较浪费,但是效率高。
变长的磁盘空间比较节省,但是效率低。
定长的意义是,直接开辟好对应的空间
变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少
时间类型:
date :日期 ‘yyyy-mm-dd’ ,占用三字节
datetime 时间日期格式 ‘yyyy-mm-dd HH:ii:ss’ 表示范围从 占用八字节
timestamp :时间戳,从1970年开始的,格式和 datetime 完全一致,占用四字节
表中如果有timestamp类型,插入数据时时间戳自动生成,修改表中其他数据时,时间戳自动更新
enum和set类型
enum和set类型的数据只能从设定的集合中取值,enum只能取一个,set可以多选
例子:
有一个调查表votes,需要调查人的喜好, 比如(登山,游泳,篮球,武术)中去选择,可以多选,(男,女)单选
mysql> create table votes(
-> username varchar(30),
-> hobby set('登山','游泳','篮球','武术'),
-> gender enum('男','女')); 标
插入数据:
insert into votes values('雷锋', '登山,武术', '男');
insert into votes values('Juse','登山,武术',2);
select * from votes where gender=2;
+----------+---------------+--------+
| username | hobby | gender |
+----------+---------------+--------+
| Juse | 登山,武术 | 女 |
+----------+---------------+--------+
查询爱好包括登山的人:
mysql> select * from votes where find_in_set('登山', hobby);
总结:
enum的选项都会对应一个数字,依次是1,2,3,4,5…,最多有65535个选项
使用的时候,可以使用选项的字符串格式,也可以使用对应的数字。
set的每个选项值也对应一个数字,依次是1,2,4,8,16…,最多有64个选项
使用的时候,可以使用set选项的字符串本身(多个选项用逗号分隔),
也可以使用多个选项的数字之和,和linux文件权限类似。
边栏推荐
- LayaBox---TypeScript---类型兼容性
- 华为无线设备配置Mesh业务
- 5 个开源的 Rust Web 开发框架,你选择哪个?
- ESP8266-Arduino programming example-HC-SR04 ultrasonic sensor driver
- 千亿级、大规模:腾讯超大 Apache Pulsar 集群性能调优实践
- 针不戳,数据库性能优化八大方案。
- 软件测试13年从业经验的前辈,总结的5条测试就业建议....
- 宝塔搭建PHP自适应懒人网址导航源码实测
- ESP8266-Arduino programming example-BMP180 air pressure temperature sensor driver
- Kettle(二):连接SQL Server数据库
猜你喜欢

强啊,点赞业务缓存设计优化探索之路。

第十六期八股文巴拉巴拉说(MQ篇)

Application of time series database in the field of ship risk management

基于亚马逊云科技无服务器服务快速搭建电商平台——性能篇

躲避雪糕刺客?通过爬虫爬取雪糕价格

网络基础(三)01-网络的基础概念——URL地址组成之协议、主机地址、路径和参数&127.0.0.1本地回环地址& 查看网址IP地址并访问之ping空格+网址&netstat -anb查看本机占用端口

OSPF详解(3)

MySQL中的存储过程(详细篇)

cocos creater 热更重启导致崩溃

OSPF详解(4)
随机推荐
时序数据库在船舶风险管理领域的应用
Informatics Olympiad All-in-One 1966: [14NOIP Popularization Group] Scale Simplification | Luogu P2118 [NOIP2014 Popularization Group] Scale Simplification
Moralis去中心化Web3应用开发教程
载誉而归,重磅发布!润和软件亮相2022开放原子全球开源峰会
Arranger software FL Studio Chinese version installation tutorial and switching language tutorial
微博广告分布式配置中心的构建与实践(有彩蛋)
MySQL中的存储过程(详细篇)
This year..I sincerely recommend the professional engineer to upgrade to the book!
【网络工程】A、B、C、D、E类IP地址划分依据和特殊的IP地址
SQL行列转换
Network Basics (3) 01-Basic Concepts of Networks - Protocols, Host Addresses, Paths and Parameters of URL Addresses & 127.0.0.1 Local Loopback Address & View URL IP Address and Access Ping Space + URL
cocos creater 热更重启导致崩溃
一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧
SQL存储过程详解
针不戳,数据库性能优化八大方案。
智慧中控屏
数据库系统原理与应用教程(063)—— MySQL 练习题:操作题 39-50(七):SELECT 基本语法联系
PLSQL Developer安装和配置
CMake库搜索函数居然不搜索LD_LIBRARY_PATH
原生js系列