MySQL字段类型与操作
MYSQL字段类型与操作
字符编码与配置文件
操作 | 代码 | 功能 |
---|---|---|
查看 | \s | 查看数据库基本信息(用户、字符编码) |
配置(配置文件层面) | my-default.ini | windows下MySQL默认的配置文件 |
修改配置(配置文件层面) | my.ini | 必须带my.ini才会被mysql系统识别并读取 |
添加服务端字符编码(配置文件层面) | [mysqld]\n character-set-server=utf8(字符编码即可)\n collation-server=utf8_general_ci | 修改mysql服务端默认的字符编码,我们需要重新启动我们默认自启的服务端 |
添加客户端字符编码(配置文件层面) | [client]\n default-charcter-set=utf8 | 修改mysql客户端默认的字符编码,我们只需要重新登录我们的客户端即可 |
添加mysql的字符编码(配置文件层面) | [mysql]\n default-character-set=utf8 | 修改mysql的字符编码,我们需要重新登陆 |
偷懒操作 | -uroot -pxxx | 将我们的用户名和密码写入配置文件那么就不需要一直自己登录操作,但是我们要注意好自己的电脑不会被他人操作再进行修改 |
存储引擎
名称 | 代码 | 结构 | 作用 |
---|---|---|---|
MyISAM | cerate table 表名(字段名 字段类型) engine=myisam; | .frm 表结构 .MYD 表数据 .MYI 表索引(加速数据的查询) | MySQL5.5及之前版本默认的存储引擎,存取数据的数据较快,但是功能很少,安全性较低 |
InnoDB | cerate table 表名(字段名 字段类型) engine=innodb; | .frm 表结构 .idb 表数据,表索引(加速数据的查询) | MySQL5.5之后版本默认的存储引擎,存取速度没有MyISAM快但是支持十五,行锁,外键等诸多功能,并且安全性较高 |
Memory | cerate table 表名(字段名 字段类型) engine=menory; | .frm 表结构 | 基于内存工作的存储引擎,存取速度极快,但是断电数据立即丢失无法保存 |
BlackHole | cerate table 表名(字段名 字段类型) engine=blackhole; | .frm 表结构 | 黑洞,无论写入什么数据都会立即丢失,类似垃圾回收站,但是这个垃圾回收站有点bug空间无限 |
展示 | insert into 表名 values(1); | 展示引擎效果 | |
CV | 右键点击 | 粘贴 | 在windows cmd终端中鼠标右键的意思就是粘贴 |
查看 | show engines; | 查看所有的存储引擎 |
创建表的完整语法
语法
cerate table 表名(
字段名1 字段类型(数字)约束条件
字段名2 字段类型(数字) 约束条件
字段名3 字段类型(数字)约束条件
)engine=存储引擎;
补充
- 字段名和字段类型是必须的(至少写一个)
- 数字和约束条件是可选的(可有可无)
- 约束条件可以写多个 只需要空格空开即可
- 最后一个字段的结尾千万不能加逗号,加逗号就会报错,粗心的话那么就会一致发现不了这个小错误
字段类型之整型
- 类型展示
类型 | 字节 | 有符号 | 没有负号 |
---|---|---|---|
tinyint | 1 bytes | -128~127 | 0~255 |
smallint | 2 bytes | -32768~13267 | 65535 |
mediumint | 3 bytes | -8388608~8388607 | 16777215 |
int | 4 bytes | -2147483648~2147483647 | 4294967295 |
bigint | 8 bytes | -263~(263)-1 | (2^64)-1 |
验证整型是否自带负号
cerate table 表名(字段名 tinyint);
insert into 表名 values(-129),(256);
发现自动填写为两个边界值,数据失真久没有任何意义了
上述所有类型默认都会带有负号
自定义移除负号
"""
unsigned 约束条件之一 意思是不需要负号
"""
create table 表名(字段名 tinyint unsigned);
insert into 表名 values(-129),(256);
修改文件
插入的数据值超出了数据类型的范围 不应该让其插入并自动修改 没有任何意义
数据库应该直接报错(这个特性其实应该是有的但是我们做配置文件的时候被我们修改了)
方式一:
set session sql_mode='strict_trans)tables' 当前客户端操作界面有效
set global sql_mode='STRICT_TRANS_TABLES' 服务器不重启那么就永久有效
方法二:
[mysqld]
sql_mode='STRICT_TRANS_TABLES' 其实和上方编写配置文件的的一样,只是将我们需要一直写的东西直接写入了就不需要我们自己去输入了
字段类型之浮点型号
类型 | 使用区间 | 精确度问题 | 展示 |
---|---|---|---|
float | (255,30) | create table 表名(id float(255,30)); | insert into 表名 values(1.222222222222222222222222222222) |
double | (255,30) | cerate table 表名(id double(255,30)); | insert into 表名 values(1.222222222222222222222222222222) |
decimal | (65,30) | cerate table 表名(id decimal(65,30)); | insert into 表名 values(1.222222222222222222222222222222) |
排序 float < double < decimal
我们一般使用浮点型的时候使用float就足够使用了,如果想要你输多少就出多少的话那么就直接使用字符串类型就可以了
字段类型之字符类型
- 类型
类型 | 存储方式 | 存储范围 | 作用 |
---|---|---|---|
char | char(4) | 固定存储四个字符 | 如果存储不够四个字符那么就会使用空格来填充,如果超过那么不好意思报错 |
varchar | varchar(4) | 最大存储四个字符 | 如果存储不够四个字符那么不会改变默认在前面加一个bytes来区分你所存储的数据,如果朝贡四个那么就会直接报错,毫不犹豫 |
验证区别
1.验证二者的区别
char方法:
cerate table 表名(字段名 字段类型,name char(4))
varchar方法:
cerate table 表名(字段名 字段类型,name varchar(4))
2.验证结果
二者都是只要超出范围都会报错,注意sql_mode='strict_trans_tables'
3.验证长短特性
char_length() # 查看字段数据的长度,类似python中的len()
"""
在默认的情况下我们在存储的时候如果没有填充满足固定位数的字符那么系统就会自动默认帮我们填充空格,然后我们在读取的时候只要检查到空格那么就会自动帮我们做删除然后就会帮我们读出我们想要的数据,而在存取varchar的时候存入会自动帮我们加入一个分开的字节以方便我们取出的时候发生错乱现象
我们要是想要取消上方删减空格的操作可以使用
sql_mode
set global
sql_mode='strict_trans_tables,pad_char_to_full_length'
将上方代码写入我们之前写的那个配置文件中
"""
应用范围
char
cahr(4)
a b c lili jsonboy zeay
整存整取 速度较快但是有点浪费内存空间,因为需要空格去给他填充
varchar
varchar(4)
1bytes+a1bytes+b1bytes+c1bytes+lili+1bytesjson+1bytesboy+1byteszeay
存取的时候都需要制作报头,相较于char来说就比较节省内存空间,所以存储数据的速度就较慢于char
"""
现在两者的使用频率都很高,之前默认使用的是char但是现在较多是默认使用carchar因为比较节省空间
"""
数字的含义
数字大部分呢情况下都是用来限制字段的存储长度,但是整型除外,不是用来限制存储的长度你有多少他给你存多少但是到展示的时候他就只会给你展示你所标注数字的长度
cerate table 表名(字段名 int(3));
cerate table 表名(字段名 int(3) zerofill);
总结
也就是说以后只要是设计整形字段的定义那么子啊类型后面不需要加括号和写数字,除非有业务需求必须固定位数
0000000013
0052856123
字段类型之枚举与集合
enum枚举类型是一种可以在事先定义好(枚举出来)的各个可取值中选择一个的数据类型,其定义方法时使用enum(枚举值1,枚举值2,枚举值3....)来定义此种类型后,将对有关字段(变量)的取值范围进行了限定,只能取个枚举值中的某一个,否则报错,一个枚举类型数据最多可以拥有65535个枚举项,其允许的取值为字符串枚举内的内容
枚举 多选一:
例如:性别(生理男性,生理女性,其他)
create table 表名(
字段名 int,
name varchar(32),
gender enum('male','female','others')
);
集合 多选多(也包括多选一):
例如:hobby('sing','jump','rap','basketball')
cerate table 表名(
字段名 int,
name varchar(32),
hobbyies set('sing','jump','rap','basketball')
);
字段类型之日期类型
代码 | 时间 |
---|---|
date | 年月日 |
datetime | 年月日时分秒 |
time | 时分秒 |
year | 年份 |
- 时间展示
eleate now():现在时间
create table 表名(
字段名 int,
name varchar(32),
birth date,
reg_time datetime,
study_time time,
join_time year
);
insert into 表名 values('2022-12-24','2021-4-29-12-24-32','12-24-32','2001');
字段约束条件
条件 | 代码 | 功能 |
---|---|---|
unsigned | id int unsigned | 无负号 |
zerofill | id int zerofill | 零填充 |
not null | name varchar(32) not null | 非空 |
default | name varchar(32) default 'joseph' | 默认值 |
unique | id int unique | 唯一值 |
unique | host varchar()32 port int unique(host,port) | 联合唯一 |
insert into 表名 vlaues() | 默认按照创建表的字段顺序添加 | |
insert into 表名(字段) vlaues() | 可以自定义字段顺序 |
MySQL字段类型与操作的更多相关文章
- (转)MySQL字段类型详解
MySQL字段类型详解 原文:http://www.cnblogs.com/100thMountain/p/4692842.html MySQL支持大量的列类型,它可以被分为3类:数字类型.日期和时间 ...
- MySQL 字段类型介绍
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...
- MySql 字段类型对应 Java 实体类型
前言 MySQL Connector/J 对于 MySql 数据类型和 Java 数据类型之间的转换是很灵活的: 一般来讲,任何 MySql 数据类型都可以被转换为一个 java.lang.Strin ...
- Mysql字段类型与合理选择
字段类型 数值 MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许 ...
- MySQL字段类型 约束
目录 MySQL存储引擎 非空约束 字段类型 整形类型INT TINYINT 浮点类型float 字符类型char varchar 日期类型 枚举集合 约束条件 主键 自增 unsigned无符号 z ...
- MySql字段类型及字节
字段类型:TINYINT-----------------一个很小的整数.有符号的范围是-128到127,无符号的范围是0到255. SMALLINT--------------一个小整数.有符号的范 ...
- 字符编码,存储引擎,MySQL字段类型,MySQL字段约束条件
字符编码 查看MySQL默认编码命令:\s """ 如果是5.X系列 显示的编码有多种 latin1 gbk 如果是8.X系列 显示的统一是utf8mb4 utf8mb4 ...
- Java JDBC中,MySQL字段类型到JAVA类型的转换
1. 概述 在使用Java JDBC时,你是否有过这样的疑问:MySQL里的数据类型到底该选择哪种Java类型与之对应?本篇将为你揭开这个答案. 2. 类型映射 java.sql.Types定义了常 ...
- MySQL字段类型最全解析
前言: 要了解一个数据库,我们必须了解其支持的数据类型.MySQL 支持大量的字段类型,其中常用的也有很多.前面文章我们也讲过 int 及 varchar 类型的用法,但一直没有全面讲过字段类型,本篇 ...
随机推荐
- FlinkSQL 之乱序问题
乱序问题 在业务编写 FlinkSQL 时, 非常常见的就是乱序相关问题, 在出现问题时,非常难以排查,且无法稳定复现,这样无论是业务方,还是平台方,都处于一种非常尴尬的地步. 在实时 join 中, ...
- JMeter - 生成随机数/随机字符串/随机变量/随机日期
1. Random - 随机数 1.1 作用 1.2 声明 1.3 例子 2. __RandomDate - 随机日期 2.1 作用 2.2 声明参数 2.3 例子 3. RandomString - ...
- .NET中如何在同步代码块中调用异步方法
更新记录 本文迁移自Panda666原博客,原发布时间:2021年7月2日. 在同步代码块中调用异步方法,方法有很多. 一.对于有返回值的Task 在同步代码块中直接访问 Task 的 Result ...
- SpringBoot之:SpringBoot中使用HATEOAS
目录 简介 我们的目标 构建Entity和Repository 构建HATEOAS相关的RepresentationModel 构建Controller HATEOAS的意义 总结 简介 HATEOA ...
- React中render Props模式
React组件复用 React组件复用的方式有两种: 1.render Props模式 2.高阶组件HOC 上面说的这两种方式并不是新的APi. 而是利用Raect自身的编码特点,演化而来的固定编码写 ...
- ArrayList和LinkedList内部是怎么实现的?他们之间的区别和优缺点?
ArrayList 内部使用了数组形式进行了存储,利用数组的下标进行元素的访问,因此对元素的随机访问速度非常快.因为是数组,所以ArrayList在初始化的时候, 有初始大小10,插入新元素的时候,会 ...
- POI导出复杂Excel,合并单元格(2)
/** * 导出excel (HSSFWorkbook) */ @GetMapping("/testExport") public void testExport1(HttpSer ...
- 降低PDF质量
如果PDF尺寸过大,则需要降低其质量以缩小尺寸.在Linux下一条命令即可实现,而且效果不错: gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFS ...
- C++20 以 Bazel & Clang 开始
C++20 如何以 Bazel & Clang 进行构建呢? 本文将介绍: Bazel 构建系统的安装 LLVM 编译系统的安装 Clang is an "LLVM native&q ...
- echart图表中y轴小数位数过长展示效果不佳
业务中后端返回的精密数据,小数过长,导致所有数据差距不大,在图表中显示重合为一条直线 解决方法设置echart的min属性 min: "dataMin", 但是设置了以后又出现了问 ...