MySQL字符编码、存储引擎、严格模式、字段类型之浮点 字符串 枚举与集合 日期类型

字符编码与配置文件

1.\s查看MySQL相关信息
当前用户、版本、编码、端口号

​ MySQL5.6及之前的版本编码需要人为统一 之后的版本已经全部默认统一
image
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重启服务端)

image

偷懒小技巧:
利用配置文件我们可以偷懒 将管理员登录的账号与密码直接卸载配置文件中 之后使用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	表结构

image

创建表的完整语法

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

字段类型之整型

tinyint		1bytes		正负号(占1bit)
smallint	2bytes		正负号(占1bit)
int			4bytes		正负号(占1bit)
bigint		8bytes		正负号(占1bit)

image

验证整型默认是否携带正负号

create table t5(id tinyint);
insert into t5 values(-130),(128);

结果是-128127 也就意味着默认自带是有正负号

我们也可以取消正负号
	create table t6(id tinyint unsigned);  unsigned让数字没有正负号
 	insert into t6 values(-129),(128),(1000);

image

严格模式

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

show variables like '%mode%';

模糊查询 找出所有带mode的配置信息
image

1.临时修改

set session sql_mode='strict_trans_tables';
在当前客户端有效
set global sql_mode='strict_trans_tables';
在当前服务端有效

2.永久修改

直接修改配置文件
image

字段类型之浮点型

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';

image

image

image

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);

image

以后在写整型的时候无需添加数字

字段类型之枚举与集合

枚举

多选一
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:以后涉及到日期相关字段一般都是系统自动回复 无需我们去操作

posted @   小福福  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
  1. 1 原来你也在这儿 温余福
  2. 2 世间美好和你环环扣扣 温余福
  3. 3 随风起舞 温余福
  4. 4 罪恶都市 温余福
随风起舞 - 温余福
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 米果

作曲 : 高橋優

编曲 : 刘胡轶/貢多杰

制作人 : 刘胡轶/吴青峰

配唱制作人 : 刘胡轶

乐器监制 : 刘胡轶

吉他 : 胡晨

贝斯 : 甯子达

弦乐录音棚 : 中国剧院录音棚

录音工程师 : 倪涵文/李游/李杨/邢铜/韩宽/李巍

录音监制 : 倪涵文/李游

混音&母带工作室 : OKmastering studio

混音&母带工程师 : 全相彦

制作协力 : 刘西洋

制作发行 : 智慧大狗 × 天才联盟

出品人 : 张葛

监制 : 崔恕/王明宇

弦乐监制 : 李朋

弦乐 : 国际首席爱乐乐团

鼓(打击乐):祁大为

和音编写&演唱:鱼椒盐

人声&吉他&鼓(打击乐)录音棚:55Tec studio

我曾将青春翻涌成她

我曾将青春翻涌成她

也曾指尖弹出盛夏

心之所动 且就随缘去吧

这一路上走走停停

这一路上走走停停

顺着少年漂流的痕迹

迈出车站的前一刻

竟有些犹豫

不禁笑这近乡情怯

不禁笑这近乡情怯

仍无可避免

而长野的天

依旧那么暖

风吹起了从前

从前初识这世间

从前初识这世间

万般流连

看着天边似在眼前

也甘愿赴汤蹈火去走它一遍

如今走过这世间

如今走过这世间

万般流连

翻过岁月不同侧脸

措不及防闯入你的笑颜

我曾难自拔于世界之大

我曾难自拔于世界之大

也沉溺于其中梦话

不得真假 不做挣扎 不惧笑话

我曾将青春翻涌成她

我曾将青春翻涌成她

也曾指尖弹出盛夏

心之所动 且就随缘去吧

逆着光行走 任风吹雨打

短短的路走走停停

短短的路走走停停

也有了几分的距离

不知抚摸的是故事 还是段心情

也许期待的不过是 与时间为敌

再次看到你

微凉晨光里

笑得很甜蜜

从前初识这世间

从前初识这世间

万般流连

看着天边似在眼前

也甘愿赴汤蹈火去走它一遍

如今走过这世间

如今走过这世间

万般流连

翻过岁月不同侧脸

措不及防闯入你的笑颜

我曾难自拔于世界之大

我曾难自拔于世界之大

也沉溺于其中梦话

不得真假 不做挣扎 不惧笑话

我曾将青春翻涌成她

我曾将青春翻涌成她

也曾指尖弹出盛夏

心之所动 且就随缘去吧

晚风吹起你鬓间的白发

晚风吹起你鬓间的白发

抚平回忆留下的疤

你的眼中 明暗交杂 一笑生花

我仍感叹于世界之大

我仍感叹于世界之大

也沉醉于儿时情话

不剩真假 不做挣扎 无谓笑话

我终将青春还给了她

连同指尖弹出的盛夏

心之所动 就随风去了

以爱之名 你还愿意吗

点击右上角即可分享
微信分享提示