MySQL基本数据类型
存储引擎
  现实⽣活中我们⽤来存储数据的⽂件有不同的类型,每种⽂件类型对应各⾃不同的处理机制:⽐如处理⽂本⽤txt类型,处理表格⽤excel,处理图⽚⽤png等。
  数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型⼜称为存储引擎,mysql根据不同的表类型会有不同的处理机制存储引擎说⽩了就是如何存储数据、如何为存储的数据建⽴索引和如何更新、查询数据等技术的实现⽅法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。
  在Oracle 和SQL Server等数据库中只有⼀种存储引擎,所有数据存储管理机制都是⼀样的。⽽MySql 数据库提供了多种存储引擎。⽤户可以根据不同的需求为数据表选择不同的存储引擎,⽤户也可以根据⾃⼰的需要编写⾃⼰的存储引擎。
  MySQL主要存储引擎
Innodb
是MySQL5.5版本及之后默认的存储引擎
存储数据更加的安全
myisam
是MySQL5.5版本之前默认的存储引擎
速度要⽐Innodb更快但是数据不够安全
memory
内存引擎(数据全部存放在内存中) 断电数据丢失
blackhole
⽆论存什么,都⽴刻消失(⿊洞)
  存储结果的异同
# 查看所有的存储引擎
show engines;
# 不同的存储引擎在存储表的时候异同点
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=blackhole;
create table t4(id int) engine=memory;
# 存数据
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);
    MyISAM会创建三个⽂件
      .frm 表结构⽂件
      .MYD 表数据⽂件
      .MYI 表索引⽂件(索引是⽤来加快数据查询的)    InnoDB会创建两个⽂件
      .frm 表结构⽂件
      .ibd 表数据和表索引⽂件
    memory
      .frm 表结构⽂件
    blackhole
      .frm 表结构⽂件
MySQL基本数据类型
  1.整型 
    分类:
      tinyint    smallint    int      bigint
    不同的int类型能够存储的数字范围是不⼀样的
      1.要注意是否存负数(正负号需要占⼀个⽐特位)
      2.针对⼿机号码只能⽤bigint
    所有的int类型默认都需要正负号
    可以修改设置默认不加正负号。
      在字段后加unsigned
    整型中括号内数字的作⽤是⽤来控制展⽰的长度(⼀般情况下都是使⽤默认):
  2.浮点型
      分类:
        float      double      decimal
      存储限制:
        float(255,30)        # 总共255位⼩数位占30位
        double(255,30)  # 总共255位⼩数位占30位
        decimal(65,30)  # 总共65位⼩数位占30位
      精确度对⽐:
      可见精确度float<double<decimmal。
  3.字符类型
    字符类型分两类:
      char(4):
        定长类型最多只能存四个字符多了报错少了⾃动空格填充⾄四个。
      varchar(4)
        变长类型最多只能存四个字符多了报错少了有⼏个则存⼏个。
    注:针对5.6版本超出范围不会报错⽽是⾃动帮你截取并保存,若要修改此⾏为需要更改设置。
      ⽅式1:修改配置⽂件(永久)
      ⽅式2:命令修改(暂时)
        show variables like '%mode%'
        set session # 当前窗⼝有效
        set global # 当前服务端有效
        set gloabl sql_mode = 'strict_trans_tables'
      修改完毕后退出客户端重新进⼊即可 
    研究定长与变长特性
      insert into t10 values(1,'j');
      insert into t11 values(1,'t');
    统计某个字段数据的长度 char_length()
      底层确实会填充但是取出来的时候⼜会⾃动去除,因此需要修改设置取消⾃动去除。
        set global sql_mode = 'strict_trans_tables,pad_char_to_full_length'
    char与varchar的对⽐
      char
        缺点:浪费空间
        优点:存取都很简单直接按照固定的字符存取数据即可
          jason egon alex wusir tank 存按照五个字符存取也直接按照五个字符取
      varchar
        优点:节省空间
        缺点:存取较为⿇烦
          1bytes+jason 1bytes+egon 1bytes+alex 1bytes+tank 存的时候需要制作报头
  4.枚举与集合类型
    枚举enum:
      只能在多个预设值中选⼀个。
    集合set:
      在多个预设值中选⼀个或多个。
create table user(
id int,
name char(16),
gender enum('male','female','others')
);
insert into user values(1,'tom','male');  #正常
insert into user values(2,'jerry','xxxxooo');  #报错
# 枚举字段后期在存数据的时候只能从枚举⾥⾯选择⼀个存储
create table people(
id int,
name char(16),
gender enum('male','female','others'),
hobby set('read','play','music')
mysql创建表数据类型
);
insert into people values(1,'tom','male','read');  #正常
insert into people values(2,'jerry','female','play,music');  #正常
insert into people values(3,'marry','others','movie'); #报错
# 集合可以只写⼀个但是不能写没有列举的
  5.时间类型
    分类:
      date 年⽉⽇
      datetime 年⽉⽇时分秒
      time 时分秒
      year 年份
create table client(
id int,
name varchar(32),
reg_time date,
birth datetime,
study_time time,
join_time year
);
insert into client values(1,'tom','2000-11-11','2000-1-21 11:11:11','11:11:11',1995);
创建表的完整语法
create table表名(
字段名1 字段类型(数字) 约束条件,
字段名2 字段类型(数字) 约束条件,
字段名3 字段类型(数字) 约束条件
);
"""
1.字段名和字段类型是必须的
2.数字和约束条件是可选的并且约束条件可以有多个空格隔开即可
3.最后⼀个语句的结尾不要加逗号
"""
约束条件
  约束条件相当于在字段类型的基础上添加额外的约束。
UNSIGNED 数字⽆符号,即0开始
ZEROFILL 展⽰数字长度⼩于设置的⼤⼩⽤0填充
NOT NULL 或 NULL(默认)⾮空或允许为空。使⽤NULL约束条件的字段不传值时默认为NULL,设置为NOT NULL不传值便会
报错。
DEFAULT 默认值,即插⼊数据不给该字段传值时的默认值。
UNIQUE
# 单列唯⼀
# 设置约束条件unique的字段其值只能唯⼀,不能重复

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。