SQL 字段类型-上

数据类型关键字描述
整数
迷你整型tinyint使用1个字节存储整数
短整型smallint使用2个字节存储整数
中整型mediumint使用3个字节存储整数
标准整型int使用4个字节存储整数
小数
大整型bigint使用8个字节存储
单进度float (.. , ..)使用4个字节 ...表示宽度 后面的... 表示小数位
双精度double(.. , ..)使用8个字节
定点型decimal(.. , ..)不是固定长度每9个数字使用4个字节存储
字符串
定长型char(L) L<=255使用L * 字符集的字节长度
变长型varchar(Max_L) Max_L<=65535空间由实际存储数据 + 记录长度决定,但是小于Max_L.
text:普通字符
迷你文本tinytext不超过2 ^ 8 -1个字符
普通文本text不超过 2 ^ 16 - 1个字符
中型文本mediumtext不超过 2 ^ 24 - 1 个字符
长文本longtext不超过 2 ^ 32 - 1 个字符(4G)
blob:二进制字符(与text类似)
迷你文本tinyblob不超过2 ^ 8 -1个字符
普通文本blob不超过 2 ^ 16 - 1个字符
中型文本mediumblob不超过 2 ^ 24 - 1 个字符
长文本longblob不超过 2 ^ 32 - 1 个字符(4G)
映射
枚举型set(元素1,元素2,....) 最大64个元素数据只能出现定义时的其中的的数据类型
集合set(元素1,元素2,....) 最大64个元素数据只能出现定义时的其中的的数据类型
时间日期
year(4) == year1个字节范围为1901-2155年(256年)
时间戳timestamp4个字节范围为 1971-1-1-0-0-0 ~ 2155-12-31-59-59
日期date3个字节 1001-01-01~9999-12-31
日期时间datetime8个字节 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
时间time3个字节 -838:59:59 - 838:59:59



SQL 字段类型

定义方式

use xxxx; 使用xxxx数据库后
create table table_name
{
   username   char(20)/*数据类型*/  null/*属性*/,
   password    varchar(10) not null; 
   字段名...
}

整型数据

  • 和高级语言一样可以用 int unsigned 修饰无符号放在后面

数据类型关键字描述
迷你整型tinyint使用1个字节存储整数
短整型smallint使用2个字节存储整数
中整型mediumint使用3个字节存储整数
标准整型int使用4个字节存储整数
大整型bigint使用8个字节存储

显示宽度:int(L),

  • 整数在数据库中显示的符号(数字+符号)个数

  • 显示宽度一般是类型能表示的最大值对应的数字个数(通过desc查看表字段显示)

  • 显示宽度包含符号(如果允许为负数,-负号会增加一个宽度)

  • 显示宽度可以主动控制:创建字段时加括号确定

  • 显示宽度不会影响类型能表示的最大数值

  • 可以通过zerofill让不够宽度的数值补充到对应宽度:在字段类型后使用zerofill

浮点型数据

基础型
  • 浮点数超过精度范围会自动进行四舍五入

    • 单精度:float,使用4个字节存储,精度范围为6-7位有效数字

    • 双精度:double,使用8个字节存储,精度范围为14-15位有效数字。

  • 精度可以指定整数和小数部分

    • 默认不指定,整数部分不超过最大值,小数部分保留2位

    • 可以指定:float/double(总长度,小数部分长度)

    • 如 float(6,3) , 后面插入的数据被限制在 有效数位==6 小数部分数位 == 3

  • 可以使用科学计数法 ...E...

定点型
  • 定点型可以指定整数部分长度和小数部分长度

    • 可以指定:decimal(有效数位,小数部分数位)

    • 如 123.123 有效数位==6 小数部分数位 == 3

    • 默认不指定,10位有效整数,0位小数

    • 有效数位不超过65个

  • 数据规范

    • 整数部分超出报错

    • 小数部分超出四舍五入

数据类型关键字描述
单进度float (.. , ..)使用4个字节 ...表示宽度 后面的... 表示小数位
双精度double(.. , ..)使用8个字节
定点型decimal(.. , ..)不是固定长度每9个数字使用4个字节存储

字符串类型

定长型
  • 定长的访问效率较高,但是空间利用率较低

  • 字符串数据使用单引号或者双引号包裹

变长型
  • 变长需要额外产生1-2个字节,用来记录实际数据的长度

    • 数据长度小于256个,多1个字节

    • 数据长度大于256个,多2个字节

  • 利用存储空间 ↑ 效率 ↓

文本字符串
  • text:普通字符用于存储文本数据,例如文档、文章等

  • blob:二进制字符(与text类似)用于存储二进制数据,例如图像、音频、视频等。

  • 文本字符串会自动根据文本长度选择适合的具体类型。

  • 一般在文本超过255个字符时,都会使用text(blob现在极少使用)

数据类型关键字描述
定长型char(L) L<=255使用L * 字符集的字节长度
变长型varchar(Max_L) Max_L<=65535空间由实际存储数据 + 记录长度决定,但是小于Max_L.
text:普通字符
迷你文本tinytext不超过2 ^ 8 -1个字符
普通文本text不超过 2 ^ 16 - 1个字符
中型文本mediumtext不超过 2 ^ 24 - 1 个字符
长文本longtext不超过 2 ^ 32 - 1 个字符(4G)
blob:二进制字符(与text类似)
迷你文本tinyblob不超过2 ^ 8 -1个字符
普通文本blob不超过 2 ^ 16 - 1个字符
中型文本mediumblob不超过 2 ^ 24 - 1 个字符
长文本longblob不超过 2 ^ 32 - 1 个字符(4G)

枚举型 enum

  • 枚举型:enum,是一种映射存储方式,以较小的空间存储较多的数据

  • 数据只能出现定义时的其中的一种的数据类型

  • 枚举使用1-2个字节存储,最多可以设计65535个选项

  • 枚举实际存储是使用数值,映射对应的元素数据,从1开始

  • 使用枚举的作用:

    • 规范数据模型

    • 优化存储空间,因为保存的是映射值

枚举数据映射值
数据11
数据22
数据NN(小于65535)
# 要保证未来数据只能出现在某种可能中,所以要先列出来,可以使用enum
create table t_16(
    type enum('小朋友','少年','青年','中年','老年')
)charset utf8;
​
insert into t_16 values('少年');
insert into t_16 values('仙人');  # 不存在的数据不能插入
​

数据类型关键字描述
枚举型enum(元素1,元素2,....) 最大65535--2个字节数据只能出现定义时的其中的一种的数据类型

集合 set:

  • 集合是在定义时确定可能出现的元素进行穷举,而后数据只能出现定义时其中的元素(可以是多个 enum 是单个

  • 集合使用1-8个字节存储数据,最多可以设计64个元素

执行步骤

  1. 指令开始

  2. 插入数据

    • 读取映射关系

    • 元素选中==位值为1

    • 元素未选中==位值为0

  3. 转化成十进制存储

  4. 结束

集合数据映射位
数据100000001
数据200000010
数据810000000

数据类型关键字描述
集合set(元素1,元素2,....) 最大64个元素数据只能出现定义时的其中的的数据类型
# 爱好可以是多种,并非固定的,但是只能从规定的类型中选择
create table t_17(
    hobby set('足球','篮球','羽毛球','网球','乒乓球','排球','台球','冰球')
)charset utf8;
​
insert into t_17 values('足球');
insert into t_17 values('冰球,台球,篮球');
​

时间日期类型

年year
  • MySQL中使用1个字节存储年份

  • year能够表示的范围是1901-2155年(256年)

    • year的特殊值是:0000

  • year允许用户使用两种方式设计(效果一样)

    • year

    • year(4)

  • 因为year字段表示的范围有限,所以通常会使用字符串来存储(牺牲空间换安全)

create table t_18(
    y1 year,
    y2 year(4)
)charset utf8;
insert into t_18 values(1901,2155);

时间戳:timestamp
  • MySQL中时间戳表现形式不是秒数,而是年月日时分秒格式

  • 输入方式

    • YYYY-MM-DD HH:II::SS

    • YYYYMMDDHHIISS

  • timestamp使用4个字节存储

    • 表示范围是 1971年1月1日0时0分0秒-2155年12月31日23是59分59秒

    • timestamp可以使用 0000-00-00 00:00:00

  • 所对应的记录不论哪个字段被更新,该字段都会更新到当前时间

  • 但在MySQL8中需要主动使用on update current_timestamp才会自动更新

create table t_19(
    goods_name varchar(10),
    goods_inventory int unsigned,
    change_time timestamp
)charset utf8;
​
insert into t_19 values('Nokia3110',100,'1971-01-01 00:00:00');
insert into t_19 values('Nokia7100',100,'19710101000000');
--自动更新
alter table t_19 add c_time timestamp on update current_timestamp;
update t_19 set goods_inventory = 80; --自动跟新为单曲日期

日期date
  • 使用3个字节存储数据

  • 存储日期的格式为:YYYY-MM-DD

  • 存储的范围跨度很大,存储区间是1000 - 9999年:1001-01-01~9999-12-31

--记录个人生日
create table t_20(
    name varchar(10),
    birth date
)charset utf8;
​
insert into t_20 values('Jim','2000-12-12');
insert into t_20 values('Tom','10011212');
​

日期时间datatime
  • 使用8个字节存储数据

  • 存储格式为:YYYY-MM-DD HH:II:SS

  • 存储区间为:1000-01-01 00:00:00 到9999-12-31 23:59:59

create table t_21(
    name varchar(10),
    birth datetime
)charset utf8;
​
insert into t_21 values('Jim','2000-12-12 12:12:12');
insert into t_21 values('Tom','10011212182323');
​

时间time
  • 使用3个字节存储数据

  • 数据范围是 -838:59:59 - 838:59:59

  • 数据插入的格式分为两种

    • 时间格式:[H]HH:II:SS([ ]表示可以没有)

    • 时间段格式:D HH:II:SS(D表示天)

    • time类型通常被用来做时间段计算:如多少天后的什么时间点(可以理解为过期检查)

# 记录用户登录的具体时间
# 具体登录时间可以使用时间戳(包含年月日时分秒信息)
# 也可以时间datetime格式,或者date+time双字段格式(具体后面学习范式时会知道该怎么用)
create table t_22(
    login_time1 int unsigned,
    login_time2 datetime,
    login_date date,
    login_time3 time
)charset utf8;
​
insert into t_22 values(12345678,'2000-12-12 12:12:12','2000-12-12','12:12:12');
insert into t_22 values(1234567,'2000-12-12 12:12:12','2000-12-12','3 12:12:12');
​

数据类型关键字描述
year(4) == year1个字节范围为1901-2155年(256年)
时间戳timestamp4个字节范围为 1971-1-1-0-0-0 ~ 2155-12-31-59-59
日期date3个字节 1001-01-01~9999-12-31
日期时间datetime8个字节 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
时间time3个字节 -838:59:59 - 838:59:59

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/798488.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

链接追踪系列-08.mac m1安装logstash-番外

下载地址&#xff1a;https://elasticsearch.cn/download/ 配置es相关&#xff1a; #安装plugin&#xff1a; jelexbogon bin % ./logstash-plugin install logstash-codec-json_lines启动&#xff1a;指定配置文件运行 jelexbogon bin % nohup ./logstash -f ../config…

docker安装mysql, 虚拟机连接mysql

docker已安装&#xff1a;安装教程docker和docker的安装-CSDN博客docker是容器技术&#xff08;软件&#xff09;&#xff0c;提供标准的应用镜像&#xff08;包含应用&#xff0c;和应用的依赖&#xff09;可以轻松在docker里安装应用&#xff0c;每个应用独立容器。https://b…

Linux系列--命令详解

目录 一、Linux资源管理方式 二、查询类型命令详解 三、文件管理类型命令详解 四、文件压缩与解压 五、文件编辑 六、系统命令 七、文件内容查看命令 一、Linux资源管理方式 linux操作系统采用一个文档树来组织所有的资源。这棵树的根目录的名字叫做&#xff1a;//…

Spring AOP 实现 Excel 导出统一处理

你好&#xff0c;我是柳岸花开。在实际开发中&#xff0c;经常会遇到需要导出 Excel 数据的需求。为了避免代码重复&#xff0c;我们可以使用 Spring AOP&#xff08;面向切面编程&#xff09;来实现 Excel 导出的统一处理。本文将介绍如何使用 Spring AOP 在项目中统一处理 Ex…

三参数陷波器

传统陷波器特性 传统陷波器的传递函数为&#xff1a; 传统陷波器的 Bode 图如图所示&#xff0c;根据图中曲线表明&#xff0c;当ξ 0.1、ξ 1、 ξ 10 时&#xff0c;随着ξ 值的增加&#xff0c;陷波宽度增大&#xff0c;陷波幅值也增大&#xff0c;此时&#xff0c;陷波…

线程安全(五)volatile 修饰共享变量(JIT即时编译器、指令重排序)

目录 一、volatile 简介1.1 定义1.2 volatile 的两个特性二、特性1:保证线程间的可见性示例1:普通场景1)代码示例:2)执行结果:3)总结:示例2:被 JIT 即时编译器优化1)代码示例:2)执行结果:3)原因分析:4)什么是 JIT 即时编译器?4)解决方案一:5)解决方案二:三…

三相PWM整流器PI双闭环控制Simulink

1.模型简介 本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2017Rb&#xff09;软件。建议采用matlab2017 Rb及以上版本打开。&#xff08;若需要其他版本可联系代为转换&#xff09; 2.拓扑结构&#xff1a; 3.模型算法架构&#xff1a; 4.仿真算法&#xff1a; &am…

Camunda如何通过外部任务与其他系统自动交互

文章目录 简介流程图外部系统pom.xmllogback.xml监听类 启动流程实例常见问题Public Key Retrieval is not allowed的解决方法java.lang.reflect.InaccessibleObjectException 流程图xml 简介 前面我们已经介绍了Camunda的基本操作、任务、表&#xff1a; Camunda组件与服务与…

OpenStack Yoga版安装笔记(六)glance练习

1、glance架构 Glance api处理来自用户端&#xff08;OpenStackClient等&#xff09;的请求&#xff0c;如果是读写镜像元数据&#xff0c;则对glance db进行读写操作&#xff0c;因为镜像元数据都保存在glance db里面&#xff1b;如果是存取镜像本身&#xff0c;则对后端存储…

Ubuntu系统上安装Apache和WordPress

** 第一步跟新系统包 ** 首先跟新系统包 sudo apt update sudo apt upgrade第二步下载安装apache sudo apt install apache2 ##查看apache的状态是否启动成功 sudo systemctl status apache2 ##查看服务器的ip地址 sudo ip a通过ip地址进行访问apache页面 第三步下载安装…

vue3+vite从零架构:写组件、构建、打包并上传个人前端组件库至私有npm仓库最终在自己项目中下载并使用(超详细的流程,小编已实现)

目录 第一章 前言 第二章 准备工作 第三章 封装组件 3.1 文件结构 3.2 编写组件代码 第四章 项目打包 第五章 发布到npm 5.1 npm准备工作 5.2 发布npm包 ​编辑 第六章 从npm安装使用 第一章 前言 在我们很多开发过程中&#xff0c;不管是使用vue还是react&#x…

github相关命令

如果我们要从 GitHub 上拉取一个项目到本地&#xff0c;进行修改并上传回去&#xff0c;通常需要以下步骤&#xff1a; 1. 克隆远程仓库到本地 使用 git clone 命令将 GitHub 上的项目克隆到本地&#xff1a; (网址示例如下所示&#xff09; git clone https://github.com/你的…

DP- 使用最小花费爬楼梯 DAY19

使用最小花费爬楼梯 给你一个整数数组 cost &#xff0c;其中 cost[i] 是从楼梯第i个台阶向上爬需要支付的费用。一旦你支付此费用&#xff0c;即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。请你计算并返回达到楼梯顶部的最低花费。 …

STM32对flash中程序的加密保护

2024.7.14 今天学习了很多关于STM32对于程序的保护措施&#xff0c;原先一直不理解为什么DF CAR需要做加密&#xff0c;他的加密流程我也不是很知道&#xff0c;后面发现他是在控制任务初始化的时候&#xff0c;加了一个判断flash中某个区域的数值的程序&#xff0c;如果判断失…

易懂的吉文斯(Givens)变换(一)

文章目录 二阶Givens旋转矩阵作用于向量作用于矩阵更一般的情况 二阶Givens旋转矩阵 在QR分解中&#xff0c;Givens旋转是一种用于将矩阵变成上三角形的技术。 别的教程里面往往会直接给出一个n*n阶的通用Givens矩阵形式&#xff0c;但是这样太过抽象难懂了&#xff0c;而且难…

ceph 部署

端口号 NFS 2049 rpcbind 111 NFS 目录越深&#xff0c;写入性能越差 操作简单&#xff0c; 一.前言&#xff1a;存储知识 1、存储基础 单机存储设备 【1】DAS&#xff08;直接附加存储&#xff0c;是直接接到计算机的主板总线上去的存储&#xff09; IDE、SATA、SCSI、SAS…

记录些Redis题集(2)

Redis 的多路IO复用 多路I/O复用是一种同时监听多个文件描述符&#xff08;如Socket&#xff09;的状态变化&#xff0c;并能在某个文件描述符就绪时执行相应操作的技术。在Redis中&#xff0c;多路I/O复用技术主要用于处理客户端的连接请求和读写操作&#xff0c;以实现高并发…

《后端程序员 · Nacos 配置优先级动态刷新》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

J025_斗地主游戏案例开发(简版)

一、需求描述 完成斗地主游戏的案例开发。 业务&#xff1a;总共有54张牌&#xff1b; 点数&#xff1a;3、4、5、6、7、8、9、10、J、Q、K、A、2 花色&#xff1a;黑桃、红桃、方片、梅花 大小王&#xff1a;大王、小王 点数分别要组合4种花色&#xff0c;大小王各一张。…

mysql不初始化升级

1、下载mysql&#xff0c;下载地址&#xff1a;MySQL :: Download MySQL Community Server 2、解压下载好的mysql&#xff0c;修改配置文件的datadir指定目录为当前数据存储的目录 3、通过管理员cmd进入新版本mysql的bin目录&#xff0c; 然后执行命令安装mysql服务&#xff…