数据库的基本数据类型

  • 字符编码与配置文件
  • 数据库引擎操作
  • 创建表的完整语法
  • MySQL字段基本数据类型
  • 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
pa:
   1.utf8mb4能够存储表情,功能更强大
   2.utf8与utf-8是有区别的,MySQL中只有utf8
 
修改了配置文件文件中关于[mysqld]的配置,需要重启服务端
"""
利用配置文件我们可以偷懒
	将管理员登录的账号密码直接写在配置文件中 之后使用mysql登录即可
	[mysql]
		user='root'
		password=123
"""

image

数据库引擎

存储引擎
	数据库针对数据采取的多种存取方式
查看常见存储引擎的方式
	show engines;

需要了解的4个存储引擎
	MyISAM
    	MySQL5.5之前默认的存储引擎
       存取出具的速度快,但是功能较少,安全性较低
    
    InnoDB
    	MySQL5.5之后默认的存储引擎
       支持事务、行锁、外键等操作,存取速度没有MyISAM快,但是安全性更高
    
    Memory
    	基于内存存取数据,仅用于临时表数据存取
    
    BlackHole
    	任何写进去的数据都会立刻丢失

image

了解不同存储引擎底层文件个数

create database db2;   # 创建名为db2的库

use db2;	# 切换到库db2
create table t1(id int) engine=innodb;
'创建表t1采用innodb引擎'
create table t2(id int) engine=myisam;
'创建表t2采用myisam引擎'
create teble t3(id int) engine=memory;
'创建表t3采用memory引擎'
create table t4(id int)engine=blackhole;
'创建表t4采用blackhole引擎'

"""
1.innoDB两个文件
	.frm	表结构
	.idb	表数据(表索引)
2.myisams三个文件
	.frm	表结构
	.MYD	表数据
	.MYI	表索引
3.memory一个文件
	.frm	表结构
4.blanckhole一个文件
	.frm	表结构
"""
insert into t1 values(1);  # 表t1添加1的数据
insert into t2 values(1);  # 表t2添加1的数据
insert into t3 values(1);  # 表t3添加1的数据
insert into t4 values(1);  # 表t4添加1的数据

ps:MySQL默认忽略大小写

image

创建表的完整语法

create table 表名(
	字段名	字段类型(数字) 约束条件;
  	 字段名 字段类型(数字) 约束条件;
   	字段名	字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件也可以写多个 空格隔开即可
4.最后一行结尾不能加逗号

字段类型之整型

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

验证整型默认是否携带正负号
	create table t5(id tinyint)
   '在t5表中添加-129和128'
 	insert into t5 values(-129),(128);
   结果是-128和127 也就以为着默认自带正负号

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

字符段类型之浮点型

float(20,10)
	总共存储20位数,小数点后面占10
double(20,10)
	总共存储20位数,小数点后面占10
decimal(20,10)
	总共存储20位数,小数点后面占10
    
create table t7(id float(60,20));
create table t8(id double(60,20));
create table t9(id decimal(60,20));
insert into t7 values(1.111111111111111111111);
insert into t8 values(1.111111111111111111111);
insert into t9 values(1.111111111111111111111);

三者的核心区别在于精确度不同
	float  <  double	< 	decimal

image

字段类型之字符类型

char
	定长
    char(4)	最多存储4个字符,超出就报错,不够4个空格填充至4个
    
varchar
	变长
    varchar(4) 最多存储4个字符,超出就报错,不够则有几位存几位
 
create table t10(id int,name char(4));
'创建表t10字符段id类型int,name类型char(4)的长度'
create table t11(id int,name varchar(4));
'创建表t11字符段id类型int,name类型varchar(4)的长度'

insert into t10 values(1,'jason1')
'在表t10里面添加数据值'
insert into t11 values(2,'jason2')
'在表t11里面添加数据值'

ps:char_length()获取字段存储的数据长度
默认情况下MySQL针对char的存储都会自动填充空格和删除空格

set global
sql_mode='strict_trans_tables,pad_char_to_full_length';


char
	优势:整存整取,速度快
	劣势:浪费存储空间

varchar
	优势:节省存储空间
 	劣势:存储数据的速度较char慢
"""
char与varchar的使用需要结合具体应用场景
"""

字段类型之枚举与集合

枚举
	多选一
   create table t15(
   id int,
   name varchar(32),
   gender enum('male','female','outer')
   );
insert into t15 values(1,'tom','猛男');
insert into t15 values(2,'jason','male');
insert into t15 values(3.'kevin','outers');

集合
	多选多(多选一也可)
   create table t16(
   	id int,
    name varchar(35),
    hobbies
   set('backetball','football','doublecolorball')
   );
insert into t16 values(1.'jason','read');
insert into t16 values(2.'tony','doublecolorball')
insert into t16 values(3,'kevin','backetball','football');

image

字段类型之日期类型

datetime		年月日时分秒
date			年月日
time			时分秒
yesr			年

create table t17(
id int,
name varchar(32),
register_time datetime,
birthday date,
study_time time,
word_time year
)
insert into t17 values(1,'jason','2000-11-11 11:11:11','1998-01-21','11:11:11','2000');
ps:以后涉及到日期相关字段一般都是系统自动回去 无需我们可以操作

严格模式

当我们在使用数据库存储数据的时候,如果数据不符合规范,应该直接报错而不是擅自修改数据,这样会导致数据的失真(没有实际意义)
	正常都应该报错,但是我们之前不小心该乐配置文件
 
show variables like '%mode%'

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

数字的含义

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

caeate table t12(id int(3)); 		不是用来限制长度
insert into t12 values(12345);

create table t13(id int(5) serofill);  空时展示的长度
insert into t13 values(123),(123456789);

create table t14(id int);
"""写整型无需添加数字"""
posted @ 2022-11-23 18:37  雪语  阅读(130)  评论(0编辑  收藏  举报