首页 > 其他分享 >字符编码和配置文件、存储引擎、创建表的完整语法、字段类型

字符编码和配置文件、存储引擎、创建表的完整语法、字段类型

时间:2022-08-15 21:13:44浏览次数:45  
标签:编码 存储 varchar creat 配置文件 int 语法 table id

目录

字符编码和配置文件

一、前提

\s:查看数据库基本信息

my-default.ini:Windows下MySQL默认的配置文件

拷贝上述文件并重命名为my.ini

由于5.6版本编码不统一,会造成乱码,我们需要统一修改>>>:utf8

二、添加字符编码相关配置

[mysqld]
	character-set-server=utf8
	collection-server=utf8_general_ci
[client]
	default-character-set=utf8
[mysql]
	default-character-set=utf8
如果配置文件涉及到了mysqld相关的配置修改,那么需要重启服务端才可以生效
ps:在配置文件中mysql下提前写好用户名和密码,之后mysql直接登录

存储引擎

一、介绍

可以简单地理解存储引擎为:针对相同数据采用的不同的存储策略

查看所有的存储引擎:show engines

二、需要掌握的存储引擎

1.MyISAM

​ MySQL5.5及之前版本默认的存储引擎

2.InnoDB

​ MySQL5.5之后版本默认的存储引擎

​ 存取数据的速度没有MyISAM快,但是支持事物、行锁、外检等诸多功能,安全性比较高

3.Memory

​ 基于内存的存储引擎,存取数据极快,但是断电立刻丢失

4.BlackHole

​ 黑洞,任何写进去的数据都会立刻丢失,类似于垃圾站

三、不同存储引擎之间底层文件的区别

MySQL中默认大小写不敏感(忽略大小写)

creat table t1(id int) engine=innodb;
craet table t2(id int) engine=myisam;
creat table t3(id int) engine=memory;
creat table t4(id int) engine=blackhole;
ps:windows cmd终端鼠标右键的意思就是粘贴
    
InnoDB
	.frm 表结构
	.ibd 表数据、表索引(加快数据查询)
MyISAM
	.frm 表结构
	.MYD 表数据
	.MYI 表索引(加快数据查询)
Memory
	.frm 表结构
BlackHole
	.frm 表结构

insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);

创建表的完整语法

creat table 表名 (
	字段名1 字典类型(数字) 约束条件,
	字段名2 字典类型(数字) 约束条件,
	字段名3 字典类型(数字) 约束条件,
)
1.字段名和字段类型是必须的(至少一个)
2.数字跟约束条件是可选的(可有可无)
3.约束条件可以写多个,空格隔开即可
4.最后一个字段的结尾千万不能加逗号

字段类型之整型

类型 大小 有负号 没负号
tinyini 1bytes -128~127 0~255
smallinit 2bytes
int 4bytes
bigint 8bytes

一、验证整型是否自带符号

creat table t6(id tinyint);
insert into t6 values(-129),(256);
# 发现字段填写为两个边界值,数据失真,没有实际意义
'''上述所有的整型类型默认都会自带负号'''

二、自定义移除负号

1.unsigned

'''unsigned 约束条件之一,意思是不需要负号'''
create table t7(id tinyint unsigned);
insert into t7 values(-129),(256);

2.温馨提示

插入的数据值超出了数据类型的范围,不应该让其插入并自动修改,没有意义

数据库应该直接报错,但是被我们在配置文件里修改了

3.修改

方式一:命令临时修改
 当前客户端操作界面有效:
	set session sql_mode = 'strict_trans_tables'
 服务端不重启永远有效:
	set golbal sql_mode='STRICT_TA\RANS_TABLES'
方法二:配置文件永久修改
	[mysqld]
    	sql_mode='STRICT_TRANS_TABLES'

字段类型之浮点型

一、float double decimal 都可以存储浮点型数据,但是各自精确度不一致

二、使用方式

float(255,30)
double(255,30)
decimal(65,30)
# 第一个数表示总共多少位,第二个数表示小数占多少位

三、验证精确度问题

# 创建表
creat table t8(id float(255,30));
creat table t9(id double(255,30));
creat table t10(id decimal(65,30));
# 添加数据
insert into t8
values(1.11111111111111111111111111111);
insert into t9 values(1.11111111111111111111111111111);
insert into t10 values(1.11111111111111111111111111111);

float < doublel < decimal
'''
一般情况下float就够用了
如果想要追求完美的精确度,可以使用字符串来代替
'''

字段类型之字符类型

一、char 特点:定长(例:char(4))

1.括号里是4,最大就只能储存4个字符,如果超出范围直接报错
2.如果不超出范围,则用空格填充至最大范围4

二、varchar 特点:可变长(例:varchar(4))

1.括号里是4,最大就只能储存4个字符,如果超出范围直接报错
2.如果不超出范围,则有几位就几位

三、验证两者的区别

creat table t11(id int,name char(4));
creat table t12(id int,name varchar(4));

1.结果验证超出范围两者都会报错
	注意!!
    sql_mode='strict_trans_tables'
2.验证定长和变长特性
	char_length()  # 统计字段数据的长度
3.两者对比
	char:
        整存整取,速度快
        浪费存储空间
     varchar:
        节省存储空间
        存取数据的速度比char慢
     """
 	char(4)
 	a   son jacktom lili
 	varchar(4)
 	1bytes+a1bytes+son1bytes+jack1bytes+tom1bytes+lili
 	存取数据都需要操作报头(耗时)
 	存储人的姓名>>>:varchar
 	"""
4.两者使用频率都很高,现在默认很多时候是varchar
    	

默认情况下char在存储的时候针对没有满足固定位数的字符会自动填充空格

然后在读取的时候又会自动将填充的空格移除,如果想要取消该机制,需要sql_mode

set global
sql_mode='strict_trans_tables,pad_char_to_full_length';
# 上述目录是替换,不是新增,所以在配置文件里也要写上

数字的含义

一、特殊

数字大部分情况下都是用来限制字段的存储长度,但是整型除外!

在整型:不是用来限制存储的长度,而是展示的长度

craet table t13(id int(3));
creat table t14(id int(3) zerofill);

二、总结

以后涉及到整型字段的定义,类型后面不需要加括号写数字,除非业务有需求必须固定位数

eg:00000013 00123023

字段类型之枚举与集合

一、枚举

多选一,例:性别(男 ,女,其他)

creat table t15(
	id int,
    name varchar(32),
    gender enum('male','female','others')
);

二、集合

多选多(包含多选一),例:爱好(唱,跳,rap)

creat table t16(
	id int,
    name varchar(32),
    hobbies set('sing','dance','rap')
)

字段类型之日期类型

类型 含义
data 年月日
datatime 年月日时分秒
time 时分秒
year 年份
creat table t17(
	id int,
    name varchar(32),
    birth date,
    reg_time time,
    study_time time,
    join_time year
);
insert into t17 values(1,'jason','2022-11-11','2000-11-11 11:11:11','11:11:11','1995');

字段约束条件

'''
默认按照创建表的字段顺序添加
insert into 表名 values()
可以自定义字段顺序
insert into 表名(字段) values()
'''
1.unsigned 无负号
id int unsigned
2.zerofill 零填充
id int zerofill
3.not null 非空
name varchar(32) not null
4.default 默认值
name varchar(32) default 'jason'
5.unique 唯一值
id int unique 单列唯一

host varchar(32)
port int
unque(host,port)  # 联合唯一

标签:编码,存储,varchar,creat,配置文件,int,语法,table,id
From: https://www.cnblogs.com/Zhang614/p/16589634.html

相关文章

  • 数据库2/字符编码/配置文件/字段类型/约束条件
    mysql基础2字符编码与配置文件存储引擎创建表的完整语法字段类型之整型字段类型之浮点型字段类型之字符型数字的含义字段类型与枚举集合字段类型之日期类型字段......
  • MySQL的字段语法
    MySQL的存储字符编码与配置文件1.\s#查看数据库基本信息(用户、字符编码)2.my-default.ini#windows下MySQL默认的配置文件拷贝上述文件并重命名为my.ini3.添......
  • 字符编码与配置文件、数据库存储引擎、创建表的完整语法、MySQL字段类型(整型、浮点型
    字符编码与配置文件可以用:\s来查看数据库基本信息,里面含有用户、字符编码等信息。Servercharacterset:latin1Dbcharacterset:latin1Clientcharacter......
  • C# 程序运行时获取另一个程序的App.config配置文件的值
    ///<summary>///获取App.config配置文件某个节点的值///</summary>///<paramname="name">节点名称</param>///<retur......
  • 字符串p型编码
    题目描述给定一个完全由数字字符(‘0’,‘1’,‘2’,…,‘9’)构成的字符串str,请写出str的p型编码串。例如:字符串122344111可被描述为"1个1、2个2、1个3、2个4、3个1",因此......
  • Markdown 常用语法精讲
    -####标题(`#跟标题名称一定要留空格`)> >#一级标题>##二级标题>###三级标题>####四级标题>#####五级标题>######六级标题----####段落(`两行之间使......
  • Ansible语法学习与总结
    【强烈推荐】Ansible自动化运维入门实战点击关注......
  • 英语语法体系
    动词可以独立完成的动作:不及物动词(主语+不及物动词)PapaRabbitsleeps有一个动作的承受者:及物动词(主语+单及物动词+宾语)PapaRabbitlikesyou有两个动作......
  • 学习日记-MarkDown语法
    MarkDown语法样式标题字体样式链接、列表表格图片代码标题(一级标题)#空格+标题名字/commond+1(二级标题)##空格+标题名字/commond+2以此类推......
  • 【组成原理-数据】定点数的编码与运算
    目录1定点数的编码1.1编码的种类1.2编码的转换1.3C语言的强制转换2定点数的运算2.1定点数的移位2.1.1算术移位(有符号数)2.1.2逻辑移位(无符号数)2.1.3循环移位2.2......