MySQL字符编码、存储引擎、严格模式、字段类型之浮点 字符串 枚举与集合 日期类型
字符编码与配置文件
1.\s查看MySQL相关信息
当前用户、版本、编码、端口号
MySQL5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一

2.想要永久修改编码配置 需要操作配置文件
默认的配置文件是my-default.ini
拷贝上述文件并重命名为my.ini
直接拷贝字符编码相关配置即可无需记忆
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
这里[mysqld]表示服务端、[client]表示第三方、[mysql]服务端
ps:
1.utf8mb4能够储存表情 功能更强大
2.utf8与utf-8是有区别的 MySQL中只有utf8
要是修改了配置文件中关于[mysqld]的配置 需要重启服务端(以管理员身份打开cmd窗口关闭服务端net stop mysql 再net start mysql重启服务端)

偷懒小技巧:
利用配置文件我们可以偷懒 将管理员登录的账号与密码直接卸载配置文件中 之后使用mysql登录即可
[mysql]
user='root'
password=123
这样只要一登录mysql会自动加载配置文件下的信息
数据路储存引擎
存储引擎:数据库针对数据采取的多种存取方式
查看常见储存引擎的方式
show engines;
需要了解的四个储存引擎
MyISAM:
MySQL5.5之前默认的储存引擎、存取数据的速度快 但是功能较少 安全性低
InnoDB:
MySQL5.5之后默认的储存引擎、支持事物 行锁 外键等操作 存取速度没有MyISAM快 但是安全性更高
Memory:
基于内存存取数据 仅用于临时表数据存取
BlackHole:
任何写入进去的数据都会立刻丢失
了解不同储存引擎底层文件个数
create database hihi;
use hihi;
create table t1(id int) engine=myisam;
create table t2(id int) engine=innodb;
create table t3(id int) engine=memory;
create table t4(id int) engine=blackhole;
PS:MySQL默认忽略大小写
1.t1的myisam有三个文件:
.frm 表结构
.MYD 表数据
.MYI 表索引
2.t2的innodb有两个文件:
.frm 表结构
.idb 表数据(表索引)
3.t3的memory一个文件:
.frm 表结构
4.blackhole一个文件
.frm 表结构

创建表的完整语法
create table 表名(
字段名 字段类型(数字) 约束条件,
字段名 字段类型(数字) 约束条件,
字段名 字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件也是可以写多个 空格隔开即可 (就是基于字段类型添加一些额外的约束条件)
4.最后一行结尾不能加逗号
PS:编写SQL语句报错之后不要慌张仔细查看提示 会很快解决的哟~
比如报错:near ')' at line 7 提示报错地方可能是在')'的左右
字段类型之整型
tinyint 1bytes 正负号(占1bit)
smallint 2bytes 正负号(占1bit)
int 4bytes 正负号(占1bit)
bigint 8bytes 正负号(占1bit)

验证整型默认是否携带正负号
create table t5(id tinyint);
insert into t5 values(-130),(128);
结果是-128和127 也就意味着默认自带是有正负号
我们也可以取消正负号
create table t6(id tinyint unsigned); unsigned让数字没有正负号
insert into t6 values(-129),(128),(1000);

严格模式
当我们在使用数据库储存数据的时候 如果数据不符合规范 应该直接报错而不是擅自修改数据 这样会导致数据的失真(没有实际的意义)

show variables like '%mode%';
模糊查询 找出所有带mode的配置信息

1.临时修改
set session sql_mode='strict_trans_tables';
在当前客户端有效
set global sql_mode='strict_trans_tables';
在当前服务端有效
2.永久修改
直接修改配置文件

字段类型之浮点型
float(20,10) 总共存储20位数 小数点后面占10
double(20,10) 总共存储20位小数 小数点后面占10
decimal(20,10) 总共存储20位小数 小数点后面占10
create table t8(id float(60,20));
create table t9(id float(60,20));
create table t10(id decimal(60,20));
insert into t8 values(1.1111111111111111111);
insert into t9 values(1.1111111111111111111);
insert into t10 values(1.1111111111111111111);
三者核心区别在于精度不同
float < double < decimal
字段类型之字符串类型
char 定长
char(4) 最多存储四个字符 超出就报错 不够四个 空格填充四个
varchar 变长
varchar(4) 最多存储四个字符 超出就报错 不够则有几位存几位
create table t11(id int,name char(4));
create table t12(id int,name varchar(4));
insert into t11 values(1,'jasonNB');
insert into t12 values(1,'jasonNB');
Ps:char_length()获取字段存储的数据长度
在默认情况下MySQL针对char的存储会自动填充空格和删除空格
set global sql_mode='strict_trans_tables,pad_char_to_full_length';



char VS varchar
char
优势:整存整取 速度快
劣势:浪费储存空间
varchar
优势:节省存储空间
劣势:存取数据的速度较char慢
'''
char 与 varchar 两者需要结合具体应用场景
'''
数字的含义
数字在很多地方都是用来表示限制数据的长度 但是在整型中数字却不是用来限制存储长度
create table t13(id int(4)); 不是用来限制长度的
insert into t13 values(123456);
create table t14(id int(5) zerofill); 而是用来控制展示长度的 zerofill多余的使用数字0填充
insert into t14 values(123),(12345678);

以后在写整型的时候无需添加数字
字段类型之枚举与集合
枚举
多选一
create table t15(
id int,
name varchar(64),
gender enum('male','female','others');
)
insert into t15 values(1,'wen','猛男');
insert into t15 values(2,'yu','male');
insert into t15 values(3,'fu','others');
集合
多选多(多选一)
create table t16(
id int,
name varchar(64),
hobbies set('read','run','fimel')
);
insert into t16 values(1,'jason','basketabll');
insert into t16 values(2,'tony','run');
insert into t16 values(3,'kevin','read,read');
字段类型之日期类型
datetime 年月日时分秒
date 年月日
time 时分秒
year 年
create table t17(
id int,
name varchar(64),
ragister_time datatime,
birthday date,
study_time time,
work_time year
);
insert into t17 values(1,'jason','1666-12-12 12:12:12','1999-01-01','11:11:11','20');
Ps:以后涉及到日期相关字段一般都是系统自动回复 无需我们去操作
MySQL字符编码、存储引擎、严格模式、字段类型之浮点 字符串 枚举与集合 日期类型的更多相关文章
- mysql配置与存储引擎与字段类型与约束条件
目录 字符编码与配置文件 存储引擎 创建表的完整语法 字段类型 整型 浮点型 字符类型 数字的含义 枚举与集合 日期类型 约束条件 字符编码与配置文件 在MySQL5.X系列中,显示的字符编码有多种, ...
- 详解mysql体系结构和存储引擎
概述 之前整理的一些mysql方面内容,适合做备忘,因为我基本不会去记这些概念性的东西,大家做个了解就可以了. 一.定义数据库和实例 1.数据库: 物理操作系统文件或其他形式文件类型的集合. 在MyS ...
- 关于MySQL事务和存储引擎常见FAQ
1.什么是事务? 事务就是「一组原子性的SQL查询」,或者说一个独立的工作单元.如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询.如果其中有任何一条语句因为崩溃或其他原因无法 ...
- MySQL数据库InnoDB存储引擎中的锁机制
MySQL数据库InnoDB存储引擎中的锁机制 http://www.uml.org.cn/sjjm/201205302.asp 00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...
- MySQL支持多种存储引擎
MySQL的强大之处在于它的插件式存储引擎,我们可以基于表的特点使用不同的存储引擎,从而达到最好的性能. MySQL有多种存储引擎:MyISAM.InnoDB.MERGE.MEMORY(HEAP).B ...
- Mysql两种存储引擎的优缺点
MyISAM引擎是一种非事务性的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用.MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MY ...
- MySQL的常见存储引擎介绍与参数设置调优
MySQL常用存储引擎之MyISAM 特性: 1.并发性与锁级别 2.表损坏修复 check table tablename repair table tablename 3.MyISAM表支持的索引 ...
- MySQL的常见存储引擎介绍与参数设置调优(转载)
原文地址:http://www.cnblogs.com/demon89/p/8490229.html MySQL常用存储引擎之MyISAM 特性: 1.并发性与锁级别 2.表损坏修复 check ta ...
- MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
目录 MySQL体系结构和存储引擎 定义数据库和实例 MYSQL体系结构 MYSQL存储引擎 MySQL体系结构和存储引擎 定义数据库和实例 数据库:物理操作系统文件或者其他形式文件类型的结合.在MY ...
随机推荐
- .Net 7内容汇总(3)--反射优化
反射这玩意,一直以来都是慢的代名词.一说XXX系统大量的反射,好多人第一印象就是会慢. 但是呢,我们又不得不使用反射来做一些事情,毕竟这玩意可以说啥都能干了对吧. It's immensely pow ...
- Redis高并发分布式锁详解
为什么需要分布式锁 1.为了解决Java共享内存模型带来的线程安全问题,我们可以通过加锁来保证资源访问的单一,如JVM内置锁synchronized,类级别的锁ReentrantLock. 2.但是随 ...
- 关于pwd命令小技巧-确认当前工作目录的绝对路径中是否包含软链接目录名
Linux中任何一个命令,当你用心研究到深处时,也许总能有着新的发现或者有趣的用途,如下方的pwd命令 对于pwd命令,大家都知道是用于打印当前的工作目录路径,而且是绝对路径 pwd命令两个选项的,默 ...
- 设计模式之观察者模式_C++
1 // ADBHelper.cpp : This file contains the 'main' function. Program execution begins and ends there ...
- SpringBoot(二) - 核心配置文件
1.application.properties 和 application.yml 配置文件格式区别 1.1 文件格式 application.properties # 端口号 server.por ...
- String 定义一个字符串
String 定义一个字符串,要用双引号,多个字符串用+号连接 String S = "sjosajojoaf"; System.out.println(S);
- 【Chrome浏览器】关闭触摸板双指滑动进行前进后退的功能
痛点 Chrome浏览器使用过程中,当前页面经常会莫名其妙地退回到上一个浏览的页面. 当时真是一脸懵B(心里一万头草泥马呼啸而过~)!以为活见鬼了! 后来才发现浏览器左边,有一个幽灵般的淡蓝色箭头的出 ...
- 刷完一千道java笔试题的常见题目分析
java基础刷题遇到的最常见问题 可以先看一下这位博主整理的java面试题(很详细,我看了好几遍了):https://blog.csdn.net/ThinkWon/article/details/10 ...
- 靶机: medium_socnet
靶机: medium_socnet 准备工作 需要你确定的事情: 确定 kali 已经安装,并且能正常使用[本文不涉及 kali 安装配置] VirtualBox 以前能正常导入虚拟文件 ova 能正 ...
- 使用 etcdadm 快速、弹性部署 etcd 集群
Etcd 是一个可靠的分布式键值存储, 常用于分布式系统关键数据的存储:而 etcdadm 是一个用于操作 etcd 集群的命令行工具,它可以轻松创建集群.向现有集群添加成员.从现有集群中删除成员等操 ...