【MySQL】——数据类型及字符集

🎃个人专栏:

🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客

🐳Java基础:Java基础_IT闫的博客-CSDN博客

🐋c语言:c语言_IT闫的博客-CSDN博客

🐟MySQL:数据结构_IT闫的博客-CSDN博客

🐠数据结构:​​​​​​数据结构_IT闫的博客-CSDN博客

💎C++:C++_IT闫的博客-CSDN博客

🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客

💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客​​​​​​

🥏python:python_IT闫的博客-CSDN博客

🐠离散数学:离散数学_IT闫的博客-CSDN博客

欢迎收看,希望对大家有用!

目录

🎯概述:

🎯数值型

🎃整数型

🎃小数类型

🎐 浮点数

🎯日期时间型

🎯字符串类型

🎯mysql字符集问题


🎯概述:

MySQL数据类型(列类型)可归纳为数值型、时间日期型和字符型。

数值型:

整形:tinyint/smallint/mediumint/int/bigint

小数型:Float(D,M),decimal(D,M)

字符串型:

Char(M)

Varchar(M)

Text 文本类型

日期/ 时间型:

Date 日期

Time 时间

Datetime 日期时间型

TIMESTAMP    时间戳类型

Year 年类型

🎯数值型

🎃整数型

tinyint(1), smallint(2), mediumint(3),int(4), bigint(8)。括号中表示该类型所占空间的长度(字节数)

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 字节

(-128127)

(0,255)

小整数值

SMALLINT

2 字节

(-32 76832 767)

(0,65 535)

大整数值

MEDIUMINT

3 字节

(-8388 6088388 607)

(0,16777215)

大整数值

INTINTEGER

4 字节

(-2147483648,2147483647)

(0,4294967295)

大整数值

BIGINT

8字节

(-9,223,372,036,854,775,808,9223372036854775807)

(0,18446744073709551615)

极大整数值

整形系统的可选参数: XXint(M) unsigned zerofill

例: age tinyint(4) unsigned 或者 stunum smallint(6) zerofill

Unsigned: 代表此列为无符号类型,会影响到列的存储范围(范围从0 开始)

(不加unsigned, 则代表该列默认是有符号类型,范围从负数开始)

列可以声明默认值,而且推荐声明默认值

Not null default 0;

Zerofill :代表0 填充,即:如果该数字不足参数M位,则自动补0,补够M位。

1. 如果没有zerofill 属性,单独的参数M,没有任何意义

2. 如果设置某列为zerofill, 则该列已经默认为unsigned, 无符号类型,M代表该列的显示宽度。

🎃小数类型

🎐 浮点数

小数型: float(M,D),decimal(M,D)

float(M,D): 浮点小数,代表可存储一共M位(不含小数点),其中,小数点后D位

decimal(M,D) :定点小树, M,D的意义同上.

区别: decimal 比float 精度更高,适合存储货币等要求精确的数字.

见下例:

🎯日期时间型

mysql 时间类型有,date,time,datetime,timestamp,year五种。

date类型: 支持的范围为’1000-01-01’到’9999-12-31’

time类型: 支持的范围是’-838:59:59’到’838:59:59’

datetime类型:支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’

timestamp类型:时间戳,就是表示“当前时刻”, 用int 来存储,是1970-01-01 00:00:00 到当前的秒数,类似函数now()获得的值,用于INSERT或UPDATE操作时自动获得当前时间。

一般存注册时间,商品发布时间等,并不是用datetime 存储,而是用时间戳。因此datetime 虽然直观,但计算不便。

year类型: 四位字符串,范围为’1901’到’2155’;四位数字,范围为1901到2155;两位字符串,范围为’00’到’99’;两位整数,范围为1到99

在mysql中除了timestamp 类型允许有默认值外,其他时间类型都不能有默认值,不然会报错。

mysql常用时间日期函数

获取当前日期和时间: now();

获取当前日期: curdate();

获取当前时间:curtime();

将具体时间转换为时间戳:unix_timestamp();

将时间戳转换为时间:from_unixtime();

🎯字符串类型

mysql提供的有CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

Char 定长类型

Char(M),M 代表宽度,( 即:可容纳的字符数),0<=255 之间

例: char(10), 则能输入10 个字符.

Varchar 变长类型

varchar(M),M 代表宽度,( 即:可容纳的字符数),0<=M<=65535(以ascii 字符为例, utf8 22000左右)

定长二进制字符串binary:类似char,应该设定长度值,只是按“二进制字节”保存存字符数据,最大255个字节,无编码问题

变长二进制字符串varbinary:类似varchar,需要设定长度值,只是按“二进制字节”存字符数据,最大65532个字节,无编码问题

文本列类型text:用于存储普通文本,不受行的最大长度的限制,同类还有:tinytext, mediuntext, longtext

二进制列类型blob:用于存储二进制字节内容,不受行的最大长度的限制,同类的还有:tinyblob, mediumblob, longblob

枚举类型enum: 类似单选项应用中的多个选项值,最大65535个选项值;使用形式:enum(‘value1’, ‘value2’, … );存储数据的时候其实存的是一个对应的数字序号(从1开始)

set类型:类似多选项应用中的多个选项,最多64个选项,使用形式:set(‘value1’, ‘value2’, …); 内部存储的也是数字(依次为1,2,4,8, ….),但可以是多个值,比如5就表示2个值(1,4),14就表示3个值(2,4,8)

Char(M) 如何占据M个字符宽度?

答:如果实际存储内容不足M个,则后面加空格补齐

取出来的时候,再把后表面的空格去掉. (所以如果内容最后有空格,将会被清除)速度上:定长速度快些。

Char 与varchar 相关实验

Concat 连接的意思

SET 和 enum

create table seTest(

id int auto_increment,

hobby set('篮球','足球','羽毛球','乒乓球','棒球'),

gender enum('male','female','not know'),

primary key(id)

)engine = myisam default charset = utf8;

insert into seTest(hobby,gender) values('篮球','male'),('篮球,足球,棒球','not know');

insert into seTest(hobby,gender) values('篮球','male,female');

insert into seTest(hobby,gender) values('篮球','male female');

insert into seTest(hobby,gender) values('排球','male female');

mysql> show warnings;

mysql> select * from setest;

可以看到,当插入的值跟set 、enum 字段值要求不符时,会插入空值。

常用字符串函数

concat(column|str1,column | str2,….)将多个字符串首尾相连后返回。

concat_ws(separator,str1,str2,….)将多个字符串指定连接符separator的首尾相连后返回

substr(str,pos[,len]) 从字符串中的指定位置pos开始取一个字串返回

repeat(str,count) 将字符串str重复count次后返回

reverse(str) 将字符串str反转后返回

🎯mysql字符集问题

Mysql 的字符集设置非常灵活

可以设置服务器默认字符集

数据库默认字符集

表默认字符集

列字符集

(如果某一个级别没有指定字符集,则继承上一级)

set names gbk

set names utf8

执行show variables like 'character%',获取字符集配置为:

由于CMD命令行只支持系统当前编码,所以一般需要将CMDMYSQL服务器的交互编码设置为gbk才能正常显示utf8的数据。

character_set_clientcharacter_set_connectioncharacter_set_results变成了utf8,可以看出set names就是设置这三个参数的值。一个select执行的过程应该是:client——>connection——>server/database——>results——>connection——>client,任何一个环节的字符集不兼容都会出现乱码。

1、用户通过mysql.exe来操作mysqld.exe

2、真正的SQL执行是mysqld.exe来执行

3、mysql.exe将数据传入mysqld.exe的时候,没有告知其对应的符号规则(字符集),而mysqld也没有能力自己判断,就会使用自己默认的(字符集);

解决方案:

mysql.exe如果告知mysqld.exe对应的字符集类型为GBK

深层原理:

客户端、服务器、连接层

客户端传入数据给服务器:client

服务器返回数据给客户端:server

客户端与服务器端之间的连接:connection

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HI3559AV100和FPGA 7K690T的PCIE接口调试记录-续

上文https://blog.csdn.net/fzktongyong/article/details/134963814?spm1001.2014.3001.5501 上一篇文中PCIE实测速度和理论计算有较大偏差&#xff0c;经过尝试后有所提升。 1、提升效果 1&#xff09;、RC写操作&#xff0c;实测速度817MB/s&#xff08;410407&…

SQL进阶 | 外连接

概述 外连接的进阶用法在行列转换中比较有优势&#xff0c;往往存在需要把数据库中的格式转换成报表格式&#xff0c;但是SQL仅仅只是查询数据的语言&#xff0c;格式转换并不是原本的用途。 全外连接 标准 SQL 里定义了外连接的三种类型&#xff0c;如下所示。 左外连接&…

SpringBoot - application.yml 多环境切换解决方案

问题描述 这个问题玩过 SpringCloud 的小伙伴估计会想到用 bootstrap.yml 来解决这个问题。但是如果说为了解决这个问题引入了一堆的 SpringCloud Jar&#xff0c;就感觉杀鸡用牛刀。 于是今天我们想只有 application.yml 自己就可以解决这个问题&#xff0c;如何搞定&#x…

nginx常用命令及配置文件说明

目录 1 前言2 nginx常用命令2.1 查看 Nginx 版本号2.2 启动 Nginx2.3 停止 Nginx2.4 重新加载 Nginx 配置 3 Nginx配置文件说明3.1 **全局块**3.2 **Events 块**3.3 **HTTP 块** 4 结语 1 前言 使用 Nginx 作为 Web 服务器是构建现代网络基础架构的关键一环。在运维和开发领域…

kettle+report designer导出带样式的excel包含多个sheet页

场景介绍&#xff1a; 运用pentaho report designer报表设计器&#xff0c;查询数据库字典表生成带有样式的excel&#xff0c;通过kettle pentaho报表输出组件导出形成数据字典&#xff0c;最终形成的数据字典样式如下图&#xff1a; 案例适用范围&#xff1a; pentaho repor…

1. Prism系列之数据绑定

Prism系列之数据绑定 文章目录 Prism系列之数据绑定一、安装Prism二、实现数据绑定三、更换数据源 一、安装Prism 创建一个WPF工程&#xff0c;创建名为 PrismNewSample 的WPF项目。 使用管理解决方案的Nuget包 在上面或许我们有个疑问&#xff1f; 为啥安装prism会跟Pri…

java springboot+jsoup写一段爬虫脚本 将指定地址的 图片链接 文本 超链接地址存入自己的属性类对象中

首先 还是最基本的 要在 pom.xml 引入依赖 <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.14.1</version> </dependency>然后 我们可以在项目中创建一个属性类 我这里就叫 WebContent了…

STM32使用SIM900A、SIM800C、SIM800A完成短信发送、连接onenet上传数据、拨打电话_完整教程

一、前言 本篇文章介绍SIM800C 、SIM800A、SIM900A 等等系列的模块的常用AT指令,讲解模块的使用方法,演示短信发送、拨打电话、网络连接,与服务器通信等常用案例。 如果只是用到发送短信、拨打电话、连接网络通信、这些模块的AT指令是兼容的。 文章最后贴了完整的STM32代码…

关于put_response和get_response的总结

Response总结&#xff0c;共三种情况 &#xff08;1&#xff09;每一笔都等response -> 直接get_response 注意put_response的前提是当前的seq的body没有直接结束&#xff0c;这个body一定是最底层发req的那个seq的body &#xff08;2&#xff09;连续发送数据&#xff0…

龙芯loongarch64安装numpy报错“No module named ‘numpy.core._multiarray_umath‘”

前言 在之前编译安装Python3.8的文章中说明了,龙芯仓库的很多包都有问题,安装之后很多无法使用,比如安装numpy后,就会出现“No module named numpy.core._multiarray_umath” 问题复现 配置pip源 vim /etc/pip.conf 复制下面的内容并保存 [global] timeout = 60 index-url…

电力行业的革新者:配网故障定位系统引领行业进步

随着科技的不断发展&#xff0c;电力行业也在不断地进行改革和创新。在这个过程中&#xff0c;恒峰智慧科技设计的配网故障定位系统作为一种先进的技术手段&#xff0c;正逐步引领行业的进步。本文将详细介绍配网行波型故障预警与定位系统的工作原理、功能特点以及在电力行业中…

easyrecovery14破解个人版数据恢复软件下载

easyrecovery14是easyrecovery系列软件的新版本&#xff0c;也是目前行业领先的数据恢复软件&#xff0c;具备更快捷、更高效、更便捷三大特色&#xff0c;能够帮助用户轻松恢复电脑丢失的数据。目前软件支持恢复不同存储介质数据&#xff0c;包括硬盘、光盘、U盘/移动硬盘、数…

C++笔记汇总(随时更新)

你好&#xff0c;这里是争做图书馆扫地僧的小白。 个人主页&#xff1a;争做图书馆扫地僧的小白_-CSDN博客 目标&#xff1a;希望通过学习技术&#xff0c;期待着改变世界。 目录 前言 一、C语言向C语言过度的知识点 二、C语言的相关知识 总结 前言 2023.12.13 之前撰写的笔…

ProcessOn在线绘制部分项目流程图

目录 一、ProcessOn 1.1 简介 1.2 官方网站 二、Axure自定义元件库 2.1 新建元件库 2.2 自定义元件 2.3 添加元件库 三、HIS系统门诊流程图 四、HIS系统住院流程图 五、HIS系统药品采购入库流程图 六、OA会议流程图 一、ProcessOn 1.1 简介 ProcessOn是一款在线的流…

后台业务管理系统原型模板,Axure后台组件库(整套后台管理页面)

后台业务系统需要产品经理超强的逻辑思维能力和业务理解能力&#xff0c;整理了一批后台原型组件及完整的用 Axure 8 制作的后台系统页面&#xff0c;方便产品经理们快速上手制作后台原型。 包括交互元件、首页、商品、订单、库存、用户、促销、运营、内容、统计、财务、设置、…

备忘录在手机哪里 这个方法轻松让轻松找到

作为一个常常忙于各种事务的人&#xff0c;我经常需要记录一些重要的事情&#xff0c;以免忘记。以前我总是使用纸质备忘录&#xff0c;但是随着科技的发展&#xff0c;我现在开始使用手机备忘录。然而&#xff0c;有时候我会找不到备忘录在哪里&#xff0c;让我感到非常困扰。…

1、初识 llvm源码编译 及virtualbox和ubuntu环境搭建

很久没更新了&#xff0c;最近准备研究逆向和加固&#xff0c;于是跟着看雪hanbing老师学习彻底搞懂ollvm&#xff0c;终于把所有流程跑通了&#xff0c;中间遇到了太多的坑&#xff0c;所以必须记录一下&#xff0c;能避免自己和帮助他人最好。 环境搭建太重要了&#xff0c;…

Github、Gitee优秀的开源项目分享

先赞后看&#xff0c;养成习惯&#xff01;&#xff01;&#xff01;❤️ ❤️ ❤️ 资源收集不易&#xff0c;如果喜欢可以关注我哦&#xff01; ​如果本篇内容对你有所启发&#xff0c;欢迎访问我的个人博客了解更多内容&#xff1a;链接地址 ​ Java 项目 javacore - Java …

差分数组详解,一维二维差分

文章目录 差分数组引言差分数组的定义二维差分数组二维差分数组代码实现 总结OJ练习 差分数组 引言 如果给你一个包含500个元素的数组&#xff0c;让你把从第一个元素到第100个元素的值都加上1&#xff0c;你会毫不犹豫的说枚举&#xff01;那么如果给你一个包含5000万个元素的…

03 python循环语句

3.1while循环基本语法 # 演示while循环的基础应用i0 while i<100 :print(不到100)i 1while循环基本案例 import random num random.randint(1, 100) count 0 while True:guess_num int(input(随机输入数字&#xff1a;))count 1if guess_num num :print(jie shu)br…