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

[MySQL初阶]MySQL数据类型

MySQL数据类型

  • 1. 数据类型分类
  • 2. 数值类型
    • 2.1 tinyint类型
    • 2.2 bit类型
    • 2.3 float类型
    • 2.4 decimal类型
  • 3. 字符串类型
    • 3.1 char
    • 3.2 varchar
    • 3.3 日期和时间类型
    • 3.4 enum和set


1. 数据类型分类

数据库中的类型决定了在存储位置中,占据的空间大小以及如何识别的问题。

在这里插入图片描述


2. 数值类型


2.1 tinyint类型

在这里插入图片描述

修改类型:
在这里插入图片描述

mysql> create table tt1(num tinyint);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into tt1 values(128); -- 越界插入,报错
ERROR 1264 (22003): Out of range value for column 'num' at row 1
mysql> select * from tt1;
+------+
| num |
+------+
| 1 |
+------+
1 row in set (0.00 sec)

当我们插入数据的时候,数据本身是有自己的取值范围的,MySQL是不允许我们插入超出范围的数。——MySQL对于数据的存储有更严格的约束。

MySQL数据类型本身就是一种约束。

unsigned char c = -1; 
// C中,这个语句不会报错,会让我们写入(但是写入后值对不对就是未知的)
// 内存空间只认识二进制,是先把-1转化为二进制

在MySQL中,整型可以指定是有符号的和无符号的,默认是有符号的。
可以通过UNSIGNED来说明某个字段是无符号的

无符号案例:

mysql> create table tt2(num tinyint unsigned);

mysql> insert into tt2 values(-1); -- 无符号,范围是: 0 - 255
ERROR 1264 (22003): Out of range value for column 'num' at row 1

mysql> insert into tt2 values(255);
Query OK, 1 row affected (0.02 sec)

mysql> select * from tt2;
+------+
| num |
+------+
| 255 |
+------+
1 row in set (0.00 sec)

注意:尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。


2.2 bit类型

bit[(M)] : 位字段类型。
M表示每个值的位数,范围从164。如果M被忽略,默认为1。
可以让我们对数据进行比特位的操作。
mysql> create table t2 ( id int, a bit(8));
Query OK, 0 rows affected (0.01 sec)

mysql> insert into t2 values(10, 10);
Query OK, 1 row affected (0.01 sec)

mysql> select * from t2; #发现很怪异的现象,a的数据10没有出现
+------+------+
| id | a |
+------+------+
| 10 | |
+------+------+
1 row in set (0.00 sec)

在这里插入图片描述
10的ASCII码是控制字符LF,控制字符不可显示。

bit使用的注意事项:
bit字段在显示时,是按照ASCII码对应的值显示。

mysql> insert into t2 values(65, 65);

mysql> select * from t2;
+------+------+
http://www.dtcms.com/a/112504.html

相关文章:

  • 【408--考研复习笔记】操作系统----知识点速览=
  • OpenCV快速入门
  • 【python脚本】基于pyautogui的python脚本
  • MySQL 面试知识点详解(索引、存储引擎、事务与隔离级别、MVCC、锁机制、优化)
  • Pascal语言的贪心算法
  • Ruby语言的代码重构
  • 康托展开原理
  • 获取ssh密钥
  • vscode c语言环境配置
  • 【MySQL】navicat16 result字段识别不了
  • LC416 vector<bool> 和 bool[] 的异同
  • 【BUG】生产环境死锁问题定位排查解决全过程
  • Pascal语言的系统监控
  • 深入解析ARM与RISC-V架构的Bring-up核心流程
  • 日常真实工作环境,Mysql常用操作命令,笔记!
  • (回滚莫队)洛谷 P10268 符卡对决 题解
  • 解锁 DeepSeek 与 Matlab:攻克科研难题的技术利刃
  • UE5 Simulation Stage
  • 第二十一节课:Python程序循环结构详解
  • 玩转JSONObject:使用方法详解与Map对比
  • 您使用的开源软件许可证是否存在冲突呢?
  • AI Agent 工作流程解析:从原理到实践
  • go day 01
  • Nyquist插件基础:LISP语法-数据类型
  • 【每日算法】Day 17-1:位图(Bitmap)——十亿级数据去重与快速检索的终极方案(C++实现)
  • Java枚举如何实现自增赋值呢?
  • 第一讲—函数的极限与连续(一)
  • TiDB 数据库8.1版本编译及部署
  • 网络编程—Socket套接字(TCP)
  • 从零实现APP实时聊天功能:WebSocket+离线消息+多媒体传输全解析