数据类型以及枚举集合

数据库基础知识二

一.字段类型

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',
    -> '篮球'
    -> );

posted on 2022-05-04 20:20  淦白嫖怪  阅读(144)  评论(0)    收藏  举报

导航