当前位置: 首页 > news >正文

数据类型.

数据类型分类

数值类型

tinyint类型
  1. tinyint为例
  2. 所有数值类型默认都是有符号的,无符号的需要在后面加unsigned
  3. tinyint的范围在-128~127之间
  4. 无符号的范围在0~255之间(类比char)
create database test_db;
use test_db;

建表时一定要跟着写上属性

mysql> create table if not exists t1(-> num tinyint-> );
//查看
desc t1;
show tables;
show create table t1\G;

在这里插入图片描述

//无符号整数
mysql> create table if not exists t2(-> num tinyint unsigned-> );

在这里插入图片描述

注意:

  1. 尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下。
  2. 与其如此,还不如设计时,将int类型提升为bigint类型,根据自身使用场景,选择合适的数据类型即可。
  3. 如果我们向mysql特定的类型中插入不合法的数据,mysql一般都是直接拦截,不让我们做对应的操作,与C不同,C会截断再存储
  4. 反过来,如果我们有数据已经成功插入到mysql中,一定是合法得到
  5. 所以,mysql中,一般而言,数据类型本身就是一种约束,约束的是程序员
  6. 这保证了数据库中的数据是可预期的,完整的
  7. mysql表中建立属性列,列名称在前,类型在后
bit类型
bit[(M)] : 位字段类型。M表示每个值的位数,**范围从1到64**。如果M被忽略,默认为1
mysql> create table if not exists t3(-> id int,//一个bit位,只能插0或插1-> online bit(1)-> );

在这里插入图片描述

  1. online 是位类型,以ASCII码值显示,ASCII码是值,十六进制是显示方式
  2. 如果看不到,那么其显示方式是字符方式
  3. 若想让其显示出来,select id,hex(online) from t3;

在这里插入图片描述

验证为何是ASCII码值:

  1. 首先改变列的属性:alter table t3 modify online bit(10);
  2. 97换算成十六进制为61

在这里插入图片描述

浮点数类型

float,double,decimal

float
  1. float[(m, d)] [unsigned] : M指定显示长度,d指定小数位数,占用空间4个字节
  2. 小数:没特殊说明,表示有符号的数,float(4,2)表示的范围是-99.99 ~ 99.99
mysql> create table if not exists t4(-> id int,-> salary float(4,2)-> );

在这里插入图片描述

  1. MySQL在保存值时会进行四舍五入
    注意:例如:-99.999四舍五入后为-100.000数据不允许插入

在这里插入图片描述

  1. 如果定义的是float(4,2) unsigned 这时,因为把它指定为无符号的数,范围是 0 ~ 99.99
create table if not exists t5(id bigint, salary float(4,2) unsigned);

在这里插入图片描述

测试float:存在精度损失
float表示的精度大约是7位

alter table t5 modify salary float;
insert into t5 values (1,23456789.234526614);//ok
insert into t5 values (1,2349.234526);
insert into t5 values (1,23429.234526);
select * from t5;

在这里插入图片描述

decimal
decimal(m, d) [unsigned] : 定点数m指定长度,d表示小数点的位数
  1. decimal(5,2) 表示的范围是 -999.99 ~ 999.99
  2. decimal(5,2) unsigned 表示的范围 0 ~999.99
  3. float和decimal相似,但是表示的精度不一样
  4. decimal的精度更准确,因此如果我们希望某个数据表示高精度,选择decima
mysql> create table if not exists t6(-> f1 float(10,8),-> f2 decimal(10,8)-> );

在这里插入图片描述

总结:
  1. float表示的精度大约是7位
  2. decimal整数最大位数m为65。支持小数最大位数d是30。如果d被省略,默认为0.如果m被省略,默认是10
  3. 建议:如果希望小数的精度高,推荐使用decimal

http://www.mrgr.cn/news/78509.html

相关文章:

  • 受天鹅绒蠕虫启发:软胶机器人如何实现刚度可调的粘附控制
  • 【HTTP】http与https
  • Vue3 调用子组件的方法和变量
  • 极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【三】
  • spring +fastjson 的 rce
  • pip 与当前python环境版本不匹配, pyenv, pipenv, conda
  • 【CSS】clip-path 属性(剪裁显示区域)
  • 【FPGA】UART串口通信
  • 常见的Web安全漏洞——XSS
  • LayaBox1.8.4实现战争迷雾效果
  • 数据结构与算法——1125—面试题位运算
  • redis的主从复制
  • 【通用】操作系统 知识总结:IPC方式 / 进程线程 / 死锁 / 虚拟内存 / 段页存储
  • Oracle对比表与表之间的结构
  • 20241128解决Ubuntu20.04安装libwxgtk3.0-dev异常的问题
  • linux内核面试题精选及参考答案
  • 探讨播客的生态系统
  • 零基础快速掌握——C语言基础【数据类型】【运算符】
  • python array矩阵相关操作
  • 《操作系统 - 清华大学》6 -1:局部页面置换算法:最优页面置换算法
  • 针对Qwen-Agent框架的Function Call及ReAct的源码阅读与解析:Agent基类篇
  • Robot Framework框架中常用的变量
  • A052-基于SpringBoot的酒店管理系统
  • Flink 离线计算
  • ais_server 学习笔记
  • mongodb文档字符串批量替换