数据类型以及枚举集合
数据库基础知识二
一.字段类型
1.1整型
1.关键字
tinyint(1bytes)===>存储量2**8
smallint(2bytes)===>储存量2**16
int(4bytes)===>存储量2**32
bigint(8bytes)===>存储量2**64
'''注意整数和负数有一个符号也占一个单位'''
2.取消正负号
关键字unsigned
eg:create table t1(id tinyint unsigned);
3.范围问题
如果一个取消了正负号的他的范围就在(1-256)
对于5.6超出他会直接失去数据的真实性
# 严格句式临时 set global sql_mode='STRTCT_TRANS_TABLES'
对于超过5.6版本之后会直接报错
1.2浮点型
1.关键字
精确度:float(一般业务够用)<double<decimal(对于数字精度度要求极高的可以使用)
eg:create table t1(id flost(255,30));
#其中255表示总共255位,小数占30位
insert into t1 values(1.1111111111111111111111);
1.3字符类型
1.关键字
char(固定长度)varchar(不超过最大限度来什么就是什么)
# char会用空格填充不够的位数
varchar不同版本超出会报错或者自动截取最大值
2.严格句式
临时修改
set global sql_mode = 'STRICT_TRANS_TABLES';
永久修改
sql_mode='STRICT_TRANS,ONLY_FULL_GROUP_BY'
3.对于自动移除空格
set global sql_mode = 'STRICT_TRANS_TABLES';
4.优缺点
char整存整取速度快,会造成浪费空间
varchar节省空间,存取速度比char慢,推荐 #比char慢的原因就是会生成报头记录数据的长度
1.4枚举与集合
1.枚举
关键字enum(提前定义好的是数据) # 存储的数据只能是括号内提前定义的
eg:create table t1(id int,name varchar(32),gender enum('male','female','others'));
2.集合(可以选择提前定义的值多个)
关键字set
eg:create table t1(id int,name varchar(32),hobby set('篮球','足球','双色球','水球'))
1.5日期类型
1.关键字
date # 年月日
dattetime # 年月日时分秒
time # 时分秒
year # 年
eg:create table t16(
id int,
name varchar(32),
reg_time datetime,
birth date,
study_time time,
join_time year
);
insert into t16 values(1,'jason','2000-11-11','2002-01-21','11:11:11','2015');
1.6数字的含义
1.int括号内的参数是控制展示长度不是限制长度
2.关键字zerofill # 当数据长度不够int内的参数时用0填充
3.not null # 设置这个属性后数据不能不传也不能传null可为''
create table t1(id int,name varchar(32) not null);
insert into t1(id) values(2); # 报错
4.以位置对应传值的方式
insert into t1(name,id) values('lilong',6);
5.default关键字 #设置默认值
create table t1(id int,name varchar(32) dafault 'jason');
insert into t1(id) values(1); # 默认name值围殴'jason'
6.unique关键字
create table t1(id int,name varchar(32) unique);# 设置莫列不能重复
create table t1(id int,host varchar(32),port int,unique(host,port));
7.primary key # 设置主键优势可以方便快速查找,相当于将键放在了数据的目录上
create table t1(id int primary key); # 将id设置为主键后设置了not null + unique
'''在INnoDB存储引擎中一张表至少一个主键,不是人为设置就会默认将一个隐藏字段设置为主键(不具有快速查询的特点)'''
# 如果没有设置主键会将第一个非空且唯一的字段设置成主键
8.联合主键 # 会将多个字段的组合设置为主键
create table t24(
id int,
name varchar(32),
pwd int,
primary key(id,pwd)
);
9.将字段自动排序
关键字auto_increment
create table t1(id int primary key auto_increment,name varchar(32));
# 在传值时只需要传name字段的数据,id会自动排序
二.配置与引擎
2.1字符编码与配置文件
# 查看MySQL默认字符编码
\s
"""
如果是5.X系列 显示的编码有多种
latin1
gbk
如果是8.X系列 显示的统一是utf8mb4
utf8mb4是utf8优化版本 支持存储表情
"""
# 统一字符编码
5.X默认编码有多种 可能会导致乱码的情况 所以应该统一编码
my-default.ini配置文件
步骤1:拷贝一份该配置文件并修改名称为my.ini
步骤2:清空my.ini文件内的内容
步骤3:添加固定的配置信息即可
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
步骤4:保存并重启服务端即可生效
net stop mysql
net start mysql
2.2存储引擎
# 什么是存储引擎
存储引擎可以理解为处理数据的不同方式
eg:
有一个a.txt文件
戴某某会放在密码箱中
张某某会转成pdf存储
李某某会做多个备份
潘某某会制作封面美化等
# 查看存储引擎
show engines;
# 需要了解的引擎
MyISAM
5.1之前版本MySQL默认的存储引擎
特点:存取数据的速度快 但是功能很少 安全性较低
InnoDB
5.1之后版本MySQL默认的存储引擎
特点:有诸多功能 安全性较高 存取速度没有MyISAM快
BlackHole
任何写入的数据都会立刻消失(类似于垃圾回收处理站)
Memory
以内存作为数据存取地 速度快但是断电立刻丢失
# 自定义选择存储引擎
create table t1(id int)engine=myisam;
create table t2(id int)engine=innodb;
create table t3(id int)engine=blackhole;
create table t4(id int)engine=memory;
2.3创建表的完整语法
create table 表名(
字段名1 字段类型(数字) 约束条件,
字段名2 字段类型(数字) 约束条件,
字段名3 字段类型(数字) 约束条件
);
1.字段名和字段类型是必须的
2.数字和约束条件是可选的
3.约束条件可以写多个 空格隔开即可(后面详细讲解)
字段名1 字段类型(数字) 约束条件1 约束条件2 约束条件3
4.最后一行字段结尾不能加逗号
极其容易被忽略!!!
小练习:
create table t (
id int primary key auto_increment,
name varchar(32) not null unique default 'lilong',
age int(3) unsigned zerofill,
set_time datetime,
gender enum('male','female','other'),
hobby set('篮球','足球','双色球')
);
insert into t(name,age,set_time,gender,hobby) values(
-> 'jason',
-> '18',
-> '2022-5-02 00:00:00',
-> 'male',
-> '篮球'
-> );
浙公网安备 33010602011771号