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 类型的用法,但一直没有全面讲过字段类型,本篇 ...
随机推荐
- MyBatis - MyBatis的层次结构
API接口层 规定了一系列接口,能够向外提供接口,对内进行操作. 数据处理层 负责SQL相关处理工作,如:SQL查找.SQL执行.SQL映射等工作. 基础支撑层 提供基础功能支撑,包括连接管理.事务管 ...
- CabloyJS的微信API对接模块:当前支持微信公众号和微信小程序
Cabloy-微信是什么 Cabloy-微信是基于CabloyJS全栈业务开发框架开发的微信接口模块,当前整合了微信公众号和微信小程序的接口,达到开箱即用的使用效果.在Cabloy-微信的基础上,可以 ...
- 隐式转换导致的cpu负载近100%
1.背景:从昨天晚上通过钉钉和邮箱一直接收到频繁报cpu负载超过90%,刚好BI同事晚上.凌晨在线上配合审计频繁DML数据库(备注:BI有一个同事有个库的DML权限,后面等审计完会收回)加上我线上线下 ...
- Vue关于echats的使用(浅显易懂)
安装 npm install echarts --save 引入 (全局) main.js import * as echarts from 'echarts'; Vue.prototype.$ech ...
- CMU15445 之 Project#0 - C++ Primer 详解
前言 这个实验主要用来测试大家对现代 C++ 的掌握程度,实验要求如下: 简单翻译一下上述要求,就是我们需要实现定义在 src/include/primer/p0_starter.h 中的三个类 Ma ...
- windows server2012R2 上 .net core IIS 部署--应用程序池 自动停止
在windows server2016安装部署.NET CORE时,只需要将.net core应用程序池设置无托管,然后对应你项目的版本安装一个dotnet-hosting-2.2.6-win.exe ...
- NC14661 简单的数据结构
NC14661 简单的数据结构 题目 题目描述 栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题. 该数据结构形如长条形. 一开始该容器为空,有以下七种操作. 1 a从前面插入元素a 2 从前 ...
- NC24622 Brownie Slicing
NC24622 Brownie Slicing 题目 题目描述 Bessie has baked a rectangular brownie that can be thought of as an ...
- Educational Codeforces Round 129 (Rated for Div. 2) A-D
Educational Codeforces Round 129 (Rated for Div. 2) A-D A 题目 https://codeforces.com/contest/1681/pro ...
- 一文讲明白K8S各核心架构组件
目录 一.写在前面 二.K8S为我们提供了怎样的能力 三.架构 3.1.MasterNode 3.2.WorkerNode 四.核心组件 4.1.ApiServer 4.1.1.概述 4.1.2.是集 ...