字符编码配置文件 字段基本数据类型

今日内容总结

字符编码与配置文件

1.直接在命令行输入\s 可以查看Mysql相关消息
	当前用户、版本、编码、端口后(可查询的信息)
#关于mysql中的编码
	只有在mysql 5.6版本及之前的版本编码本身就不固定(没有统一的编码) 之后的版本已经全部默认统一
    
#修改mysql中的配置(永久修改)
在MySQL中有一个文件为my-default.ini 拷贝该文件并重命名文件my.ini
'''
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
ps:
	1.utf8mb4能够存储表情 功能更强大
	2.utf8与utf-8是有区别的 MySQL中只有utf8
 
修改了配置文件中关于[mysqld]的配置 需要重启服务端

数据库存储引擎

存储引擎
	数据库针对数据采取的多种存取方式
    
查看常见存储引擎的方式
	show engines;
需要了解的几个存储引擎
	#Myisam
    mysql5.5之前默认的存储引擎
    存储数据的速度特别快 但是功能较少 安全性较低
    
    #innodb
    mysql5.5之后默认的存储引擎
    支持事务、行锁、外锁等操作 存取速度没有myisam快 但是安全性更高
    
    #Memory
    基于内存存储数据 仅用于临时表数据存储
    
    #blackhole
    任何写入的数据都会立刻消失
    
了解不同存储引擎底层文件个数
	#创建一个库
    create database 库名;
    use 库名; # 切换至库
    create table t1(id int) engine=innodb;
    create tacle t2(id int) engine=myisam;
    create tacle t3(id int) engine=memory;
    create table t4(id int) engine=blackhole;
    '''
    1.innodb两个文件
    	.frm  表结构
    	.idb  表数据(表索引)
    2.myisam三个文件
    	.frm  表结构
    	.MYD  表数据
    	.myi  表索引
   	3.memory一个文件
   		.frm  表结构
   	4.blackhole一个文件
   		.frm  表机构
    '''
    
ps:mysql 默认忽略大小写

创建表的完整语法

create table 表名(
	字段名 字段类型(数字) 约束条件,
    字段名 字段类型(数字) 约束条件,
    字段名 字段类型(数字) 约束条件
);
1.字段名和字段类型都是必须的(而且必须有一个)
2.数字和约束条件是可选的
3.约束条件可以写多个 中间空格隔开即可
4.多个字段之间要用逗号隔开
ps:编写sql语句报错的时候 仔细观察报错信息 一般都会提示大致在什么位置出错
eg:	near ')' at line 7
'''出错提示:在第七行括号左右'''

字段类型之整型

tinyint		1bytes		
smallint	2bytes		
int		    4bytes
bigint		8bytes
'''正负号占1bit'''
验证整形默认是否携带正负号
	create table t5(id tinyint);
    insert info t5 values(-129),(128);
    结果是-128127 也就意味着自带正负号
    
我们也可以取消正负号
	create table t6(id tinyint unsigned);

严格模式

create table t5(id tinyint);
insert info t5 values(-129),(128);
结果是-128127
# 我们想要的结果是-129 和 128 但是却存的是-128 和127
当我们在使用数据库存储数据的时候 如果数据不符合规范 应该直接报错而不是修改数据 这样会导致数据的失真(没有实际意义)
'''
产生的原因>>>:正常都会报错 但是我们修改了配置字典
查看配置mode>>>:show variables like '%mode%';
'''
1.临时修改
	set session sql_mode='strict_trans_tables';
    	在当前客服端有效(退出就没了)
	set global sql_mode='strict_trans_tables';
    	在当前服务端有效(重启服务端就没了)
        
2.永久修改
	直接修改配置字典
	sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
	#将此行代码直接加到my.ini的服务端下面并重启mysql就好

字段类型之浮点型

float(20,10)
double(20,10)
decimal(20,10)
#括号中参数的意义
	第一个参数表示的数据的总位数 第二个则是小数点后的小数位数
    
三者的核心区别就是精确不同
	float   <   double   <   decimal

字段类型之字符类型

#char(定长)
	char(4)	    最多存储四个字符  超出就报错  不够就空格填充
#varchar(变长)
	varchar(4)	最多存储四个字符  超出就报错  不够不会补充
    
'''
char_length()获取字段存储的数据长度
默认情况下Mysql针对char的存储会自动填充空格和删除空格

set global
sql_mode = 'strict_trans_tables,pad_char_to_full_length';
'''

char 和 varchar
char	
	优势:整存整取 速度快
 	劣势:存取浪费空间
    读取方式:利用固定的长度一段一段的读取
varchar
	优势:节省存储空间
	劣势:存取数据的速度较char慢
    读取方式:制作报头 用报头来获取数据
'''
char与varchar的使用需要结合具体应用场景
'''

数字的含义

数字在很多地方都是用来表示限制存储数据的长度
	但是在整形中数字却不是用来限制长度

create table t12(id int(3));  不是用来限制长度的
insert into t12 values(123),(154531);

写int可以不写数字(只有整形是最特别的)
create table t14(id int);

字段类型之枚举与集合

#枚举(多选一)
	create table t15(gender enum('hhh','aaa','bbb'))
    '''再添加数据的时候 限定了只能添加指定的一个数据'''
    insert into t15 values('ccc');  # 不存在选项中>>>报错
    insert into t15 values('aaa');  # 存在就会保存数据
    
#集合(多选一)
	create table t16(hobbies set('basketabll','football'))
    '''再添加数据的时候 限定了只能添加指定的一个或多个数据'''
    insert into t16 values('aaa')  # 不存在直接报错
    insert into t16 values('basketabll')  # 存在就添加数据
    insert into t16 values('basketabll,football') # 添加多个

字段类型之日期类型

datatime	年月日时分秒
data		年月日
time		时分秒
year		年
'''使用哪一种都可以 我们可以对时间做一个切割处理'''

create table t17(
	 id int,
    name varchar(32),
    time_time datetime,
    study_time time,
    work_time year
);
insert into t17 values(1,'xiaochen','2000-11-11 11:11:11','1998-01-01','11:11:11','2000')
ps:涉及到日期相关字段一般都是系统自动获取 不需要手动操作()
posted @   早点早点灬  阅读(66)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示