MySQL数据库 — 数据类型

                    

       今天呢,主要和大家讲数据库数据类型,数据类型本身也是一种约束,这就好比我们玩游戏制定规则一样,必须要执行。对于数据库学习呢,同时大量练习是必不可少的,在大厂面试中数据库也是问得比较多的一块知识。大厂实习,一起冲冲冲~

目录

数据类型分类

数值类型

tinyint

tinyint unsigned

bit 

int

小数类型

float

float unsigned 

decimal 

float和decimal之间的区别 

字符串类型

char

varchar

说明

char和varchar的比较 

日期和时间类型

更新数据update … set … 

enum 

set

集合查询使用find_ in_ set函数

总结


数据类型分类

数据库为什么要有数据类型呢?

1、数据也是一种约束

2、决定开辟空间的大小 

        数据库约束,只能插入对应数据类型特定的范围值!!数据本身就是一种约束,MySQL是直接和数据打交道,所以要遵守MySQL的规则。

数值类型

tinyint

我们从上面实验可以看出来,如果插入数据超过tinyint规定的范围,那么就插入失败了。 

tinyint unsigned

bit 

       这里bit(M),M表示比特位的位数(二进制),至于数据上限多大,根据二进制位数算出来的值即可。 

int

小数类型

float

float unsigned 

decimal 

float和decimal之间的区别 

flaot和decimal使用上没什么区别,但是他们之间精度是有区别的。

我们举个栗子:

所以,如果我们想要存储小数位精度比较高的数字,可以考虑使用decimal。 

字符串类型

char

我们使用char(L) 时,L表示字符个数,在这里,一个汉字、数字、字母都代表一个字符。

不要认为字符等价于字节。

varchar

varchar(L)中L表示字符个数,L的大小其实和具体编码有关。

说明

char和varchar的比较 

如何选择定长或变长字符串? 

1、如果数据确定长度都一样,就使用定长(char),比如:身份证,手机号,md5
2、如果数据长度有变化,就使用变长(varchar), 比如:名字,地址,但是你要保证最长的能存的进去。

定长变长字符串特点

1、定长的磁盘空间比较浪费,但是效率高。

2、变长的磁盘空间比较节省,但是效率低。
3、定长的意义是,直接开辟好对应的空间

4、变长的意义是,在不超过自定义范围的情况下,用多少,开辟多少。

日期和时间类型

date:日期 'yyyy-mm-dd' ,占用三字节
datetime: 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
timestamp:时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节

举个栗子:

更新数据update … set … 

enum 

enum:枚举,“单选”类型;
enum('选项1','选项2','选项3',…);
       该设定只是提供了若干个选项的值,最终一个单元格中,实际只存储了其中一个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,3,….最多65535个;当我们添加枚举值时,也可以添加对应的数字编号。

举个栗子:

        对于enum多个选择中只能选择一个,但是现实中存在多选的情况,显然只有enum是不行的,所以还需要有别的数据类型来支持:set。 

set

set:集合,“多选”类型;
set('选项值1','选项值2','选项值3', …);
该设定只是提供了若干个选项的值,最终一个单元格中,设计可存储了其中任意多个值;而且出于效率考虑,这些值实际存储的是“数字”,因为这些选项的每个选项值依次对应如下数字:1,2,4,8,16,32,…. 最多64个。

举个栗子:

注意:set在进行多选时,逗号后面不要加空格,否则就不对了。(上面例子有演示) 

当我们用数字插入时:

        虽说enum和set都支持数字插入,但是实际上我们不建议使用,因为这样的SQL语句代码可读性不高。 

集合查询使用find_ in_ set函数

      find_in_set(sub,str_list) :如果 sub 在 str_list 中,则返回下标;如果不在,返回0; str_list 用逗号分隔的字符串。

为什么要有find_in_set函数?对于下面的场景:

        假如我们查找的是所有人爱好中有游泳的人的信息,但是使用wher语句确实一种精确查找,只查找到了喜欢游泳的人信息。所以这显然是不符合我们的预期的。

所以要有fd_in_set函数来帮助我们查找集合关系的信息内容:

总结

数据类型本身就是一种约束:倒逼程序员规范操作数据!!

数据类型本身也是一种约束:给数据表中数据,提供极大的确定性!!

一旦你不满足我的条件,我直接终止你。 

查看全文

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章:

MySQL数据库 — 数据类型

今天呢,主要和大家讲数据库数据类型,数据类型本身也是一种约束,这就好比我们玩游戏制定规则一样,必须要执行。对于数据库学习呢,同时大量练习是必不可少的,在大厂面试中数据库也是问得比较多的一块知识。大……

JDK8 stream常见用法

JDK8 stream常见用法LIST去重常规数组等对象LIST生成新对象取每个属性同时去重取多属性LIST 转MAPKEY重复 (k1, k2) -> k1)LIST过滤stream().filter返回list返回唯一List分组 Collectors.groupingByList 求和 .reduceList排序 sorted默认自定义排序方法LIST去重
常规数组等……

3. 运行时间

The Running Time1. TimeSinceLastRun:2. LastRunTimeMs3. MaxInstructionCount4.CurrentInstructionCountRuntime是另一个属性,与Storage、Me和Echo一起存在于你的脚本基类MyGridProgram中。这个属性包含了关于你的脚本的运行环境的信息。特别是这些成员。
1. Tim……

【前端】Vue+Element UI案例:通用后台管理系统-Echarts图表:折线图、柱状图、饼状图

文章目录目标代码数据改写为动态Echarts引入与html结构折线图:orderData柱状图:userData饼状图:videoData总效果总代码:Home.vue上一篇:【前端】VueElement UI案例:通用后台管理系统-Echarts图表准备:axios……

spring boot 打jar包分离lib和resources

为什么要配置、依赖文件分离: 1.在传统jar包中,所有文件都打包到一个jar包中,jar非常臃肿,在进行服务更新部署时非常不便,而且传输不稳定时导致传输失败。如果过实行文件分离、在依赖不改变的情况下,仅仅上……

黑马全套Java教程(十):网络编程

文章目录38 多线程38.1 多线程的创建38.2 Thread的常用方法38.3 线程安全38.4 线程同步38.5 线程通信38.6 线程池38.7 定时器38.8 并发并行、生命周期39 网络编程39.1 网络通信的三要素39.2 UDP通信39.3 TCP通信39.4 线程池优化39.5 案例:即时通信39.6 案例&#xf……

搜题接口调用

搜题接口调用
本平台优点: 多题库查题、独立后台、响应速度快、全网平台可查、功能最全!
1.想要给自己的公众号获得查题接口,只需要两步! 2.题库:
查题校园题库:查题校园题库后台(点击跳转&a……

华清远见11.7

系统移植开发阶段部署
1.准备文件,由于内核只支持安全的启动模式,要准备u-boot镜像文件u-boot-stm32mp157a-fsmp1a-trusted.stm32
TF-A镜像文件tf-a-stm32mp157a-fsmp1a-trusted.stm32
linux内核镜像文件uImage和stm32mp157a-fsmp1a.dtb
根文件系统r……

六大招式,修炼极狐GitLab CI/CD “快” 字诀

本文来自: 李发富 极狐(GitLab) 高级技术支持工程师 众所周知,CI/CD 可以让我们更快、更高质量、更简单的交付软件。而现实中,你是否经常面临以下难点,导致 CI/CD 并没有真正发挥其优势: 从网络安装项目依赖耗时长&amp……

【SpringBoot笔记22】SpringBoot框架集成Redis数据库

这篇文章,主要介绍SpringBoot框架如何集成Redis数据库。 目录
一、SpringBoot集成Redis
1.1、引入依赖
1.2、配置redis连接信息
1.3、添加RedisTemplate配置类
1.4、编写测试类
1.5、运行测试 一、SpringBoot集成Redis
Redis是一个非关系型数据库&#xff0c……

C和C++中的struct有什么区别

区别一: C语言中: Struct是用户自定义数据类型(UDT)。 C语言中: Struct是抽象数据类型(ADT),支持成员函数的定义。
区别二:
C中的struct是没有权限设置的&#xff0c……

docker的数据卷详解

数据卷 数据卷是宿主机中的一个目录或文件,当容器目录和数据卷目录绑定后,对方修改会立即同步
一个数据卷可以同时被多个容器同时挂载,一个容器也可以被挂载多个数据卷
数据卷作用:容器数据持久化 /外部机器和容器间接通信 /容器……

13、Qt生成dll-QLibrary方式使用

Qt创建dll,使用QLibrary类方式调用dll
一、创建项目
1、新建项目->其他项目->Empty qmake Project->Choose 2、输入项目名,选择项目位置,下一步 3、选择MinGW,下一步 4、完成 5、.pro中添加TEMPLATE subdirs&#xff……

基于mapreduce 的 minHash 矩阵压缩

Minhash作用: 对大矩阵进行降维处理,在进行计算俩个用户之间的相似度。
比如: 俩个用户手机下载的APP的相似度,在一个矩阵中会有很多很多的用户要比较没俩个用户之间的相似度是一个很大的计算任务 如果首先对这个矩阵降维处理&am……

关于hashmap使用迭代器的问题

keySet获得的只是key值的集合,valueSet获得的是value集合,entryset获得的是键值对的集合。 package com.test2.test;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;public class mapiterator……

Hadoop入口FileSystem HDFS操作 本地文件合并到HDFS和HDFS文件合并

Hadoop 文件API的起点是FileSystem类。这是一个与文件系统交互的抽象类。存在不同的具体实现子类来处理HDFS和本地文件系统。
HDFS接口的FileSystem对象:
Configuration conf new Configuration();
FileSystem hdfs FileSystem.get(conf); HDFS直接操作&#x……

combiner partitioner

combine是在map端进行的,是在patition之后 partitioner也是在map端进行的 combine 适用在每个map端进行简单的合并,同样也是继承Reduce类。…

toString.indexOf(:)和subsTring

package com.test2.test;public class subStirngTest {public static void main(String[] args) {String sb"abcdefgh";String sc"abcd:efgh";int splitIndexsc.indexOf(":");//找到标识符的位置System.out.println(splitIndex);sb.substring(1)……

Aprior 算法

Apriori 算法:(hadoop中实现) 第一步:统计项的频度 (用一个MR统计出来) 假设是一个矩阵 U1 app1 , app3
U2 app1 , app2 , app3
U3 app2 , app3 把矩阵看成一行行的向量
U1<app……

matlab中kmeans简单使用

[Idx,C,sumD,D]Kmeans(data,3,’dist’,’sqEuclidean’,’rep’,4) 等号右边: kmeans:K-均值聚类 data是你自己的输入数据 3 是你要聚成3类 dist sqEuclidean 这2个参数,表示距离函数为欧式距离。什么是欧式距离自己百度 ’rep’,4 聚类重……

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注