【MySQL】基础知识

MySQL(一)基础知识

MySQL

一、结构

1.客户端

2.服务器

分布式系统

二、存储

1.空间

1.1内存

1.1.1速度

1.1.2稳定性

1.1.3大小

1.1.4使用

1.2硬盘

1.2.1速度

1.2.2稳定性

1.2.3大小

1.2.4【Java学习】反射-CSDN博客

2.体系

表-数据库-服务器

3.特点

3.1唯一性

[if not exists](#if not exists)

3.2轻巧性

三、编码

1.utf8

2.utf8mb4

3.unicode

4.gbk

四、类型

1.数值类型

1.1整数

1.1.1BIN[(M)]

1.1.2TINYINT

1.1.3SMALLINT

1.1.4INT

1.1.5BIGINT

1.2浮点数

1.2.1IEE754标准

1.2.1.1FOLAT(M,D)

1.2.1.2DOUBLE

1.2.2准确标准

1.2.2.1DECIMAL(M,D)

1.2.2.2NUMERIC(M,D)

2.字符串类型

2.1文本数据

2.1.1VARCHAR(SIZE)

2.1.2TEXT

2.1.3MEDIUMTEXT

2.2二进制数据

BLOB

3.日期类型

3.1TIMESTAMP

3.2DATETIME


MySQL

MySQL是一个 客户端-服务器结构的 程序,服务器 是真正的 保存和管理数据的 ++本体++ ,是用表来组织数据的 关系型数据库


一、结构

1.客户端

客户端 通过++网络++ 进行++通信++ 向服务器 主动传递数据 主动 发起请求


2.服务器

服务器 永不停机等待着被 接收到请求 处理数据 为客户端返回数据响应,一个服务器 为多个客户端 提供服务的


分布式系统

机器处理数据时,一台机器 能即刻应对处理着的数据量 是有限的,当++要及时处理的数据量过多++ 一台机器无法应时处理完时,需要由++多个机器 同时一起分开着 来处理完++ ,就构成了 多个机器下的 分布式系统,机器之间 也成 服务器与客户端关系地 传递处理返回数据,会发生既作服务器 也作客户端的机器 ,也会出现 只为一个机器客户端服务的 服务器机器


二、存储

1.空间

存储空间 分为 内存硬盘


1.1内存
1.1.1速度

内存里 操作数据的速度快


1.1.2稳定性

内存里 存储数据的稳定性差 ,++程序重启 或主机断电 存储的数据就丢失了++


1.1.3大小

价格昂贵 买到来用的内存小


1.1.4使用

有的数据库 为了追求速度的最大化 选择了 用内存来存储数据,如redis


1.2硬盘
1.2.1速度

硬盘里 操作数据的速度慢


1.2.2稳定性

硬盘里 存储数据的稳定性高,数据持久地保存


1.2.3大小

价格便宜 买到来用的硬盘大


1.2.4使用

绝大多数数据库 需要 稳定持久地 存储大量数据 ,选择 操作速度慢些的硬盘 来存储


2.体系

表-数据库-服务器

几个表 放一起集合 就构成了 一个数据库 ,++每个表 都是属于在 它所属的 一个数据库中的++ ,一个服务器 存储管理着 许多数据库


3.特点

3.1唯一性

服务器 都是 不重复唯一性地 高效存储数据库建库检索时 发现此库已存在有的,会立马终止程序 来阻止建库的发生

if not exists

因为到后面建库时 可能出现 此时要去创建使之存在有的库 ++不确定是否前面已经存在++ 、且++一次要创建的库特别多 也不方便一个个往前去查++ ,直接加if not exists 将它们未存在的创建、已存在的不创建 最后都一定执行成功地 将它们创建得都存在有


3.2轻巧性

一般不会在数据库中 存储很大的数据,如二进制数据的 音乐、图片、视频,很大的数据 单单遍历路过 都要花费很长的时间 ,何况对它 增删查改操作,它的存在 会大大影响到 数据库的增删查改的效率 ,所以都是将很大的数据 存储在专门的目录中,在数据库中 存储它的路径


三、编码

数据在底层都是转化成码的形式 来存储的参照不同的字符集 将++数据编成的 就不一样++ ,++码内容 字节量就不一样++:


1.utf8

utf8字符集,没有固定编成的 码的规格大小变长式的编码 ++将世界上所有的语言文字 都有对应的编码++ ,汉字占3个字节,mysql中默认用的是utf8的残本,没有对 复杂的中文字符emoji表情编码的部分,在创建库的时候可以指定字符集为完整的utf8:

sql 复制代码
create database if not exists test1 charset utf8;

2.utf8mb4

后面mysql对其进行补充完整的 utf8mb4字符集则才是utf8的完全体


3.unicode

unicode是 只对字符进行编码的 字符集,对多个字符合并的字符串 没有字符边界意识 将其调整合并编码 ,还是将字符串视为一个字符,判断为不存在 而无法编码,而utf8其实是 unicode补充了对字符串合并编码的 升级版


4.gbk

windows 使用的的是 gbk字符集,汉字占2个字节


四、类型

1.数值类型

1.1整数

n位的二进制数有符号 下 数值的范围为**-2^(n-1) ~ 2^(n-1) - 1** ,无符号 下 数值的范围为0 ~ 2^(n) - 1


1.1.1BIN[(M)]

BIN[(M)] ,用来存放 M位的二进制数,M范围1~64,存储数值范围0~2^(M)-1M默认为1,存放一个 0或1 用来表示真假 ,对应Java的Boolean类型


1.1.2TINYINT

TINYINT 1字节的大小,对应Java的Byte类型


1.1.3SMALLINT

SMALLINT 2字节的大小,对应Java的Short类型


1.1.4INT

INT 4字节的大小,对应Java的Integer类型


1.1.5BIGINT

BIGINT 8字节的大小,对应Java的Long类型


1.2浮点数
1.2.1IEE754标准

在IEE754标准下 会丢失精度 存在一定误差浮点数 去进行++大小的比较++ 是很危险的 :++0.1 + 0.2 != 0.3++


1.2.1.1FOLAT(M,D)

FOLAT(M,D),存放 M个数字位数D个小数位数的 ++单精度++ 浮点数,4字节的大小,对应Java的Float类型


1.2.1.2DOUBLE

DOUBLE,8字节的大小,对应Java的Double类型


1.2.2准确标准
1.2.2.1DECIMAL(M,D)

DECIMAL(M,D),存放精确数值的 ++双精度++ 浮点数,精度提高,但运算的速度减慢占的空间变大 ,对应Java的BigDecimal类型


1.2.2.2NUMERIC(M,D)

NUMERIC(M,D)是 和DECIMAL一样的类型


2.字符串类型

2.1文本数据

文本数据 存储的是 码表上存在的 字符数据,++一个汉字是一个字符 ,但是可能对应多个字节的大小++


2.1.1VARCHAR(SIZE)

VARCHAR(SIZE) 动态按需 最大开辟SIZE个字符 的空间 去存储,是可变长度的字符串最大可存储0~65535字节 的空间,对应Java的String类型


2.1.2TEXT

TEXT 存储0~65535字节空间的 长文本 数据,对应Java的String类型


2.1.3MEDIUMTEXT

MEDIUMTEXT 存储0~16777215字节空间的 长文本 数据,对应Java的String类型


2.2二进制数据

对于码表上 查找不到不存在的数据 就是二进制数据

BLOB

BLOB 存储0~65535字节空间的 二进制数据,对于Java的**byte[]**类型


3.日期类型

日期类型 用来存储 1970年1月1日0时0分0秒基准时刻当前时刻秒数/毫秒数/微妙数之差时间戳


3.1TIMESTAMP

TIMESTAMP的大小为4个字节,现在用来存储秒级时间戳 都快不够了,可以存储1970~2038年的时间戳,对应Java的Java.util.DateJava.sql.Timestamp类型


3.2DATETIME

DATETIME的大小为8个字节,可以存储1000~9999年的时间戳,对应Java的Java.util.DateJava.sql.Timestamp类型

相关推荐
不穿铠甲的穿山甲12 分钟前
MySQL-数据库分布式XA事务
数据库·分布式·mysql
飞天红猪侠c1 小时前
MySQL-逻辑架构
数据库·mysql
小虎卫远程打卡app1 小时前
视频编解码学习十二之Android疑点
学习·视频编解码
岁岁岁平安1 小时前
Vue3学习(组合式API——reactive()和ref()函数详解)
前端·javascript·vue.js·学习·vue3·reactive·ref
Camellia03111 小时前
嵌入式学习--江协51单片机day6
嵌入式硬件·学习·51单片机
m0_738206542 小时前
嵌入式学习的第二十一天-数据结构-双向链表
学习
Camellia03113 小时前
嵌入式学习--江科大51单片机day7
单片机·嵌入式硬件·学习·51单片机
南风与鱼3 小时前
MySQL表的操作
数据库·mysql·表操作
ACGkaka_3 小时前
MySQL 学习(十)执行一条查询语句的内部执行过程、MySQL分层
学习·mysql·adb
阑梦清川3 小时前
关于Go语言的开发环境的搭建
开发语言·后端·golang