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

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

时间:2022-11-23 18:35:12浏览次数:53  
标签:insert create 浮点 枚举 values MySQL into table id

目录

字符编码与配置文件

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]的配置 需要重启服务端

偷懒小技巧:
利用配置文件我们可以偷懒 将管理员登录的账号与密码直接卸载配置文件中 之后使用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 也就意味着默认自带是有正负号

严格模式

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

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) zer0fill); 而是用来控制展示长度的
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:以后涉及到日期相关字段一般都是系统自动回复 无需我们去操作

标签:insert,create,浮点,枚举,values,MySQL,into,table,id
From: https://www.cnblogs.com/xiao-fu-zi/p/16919399.html

相关文章