数据库02

存储引擎

  引擎指的是一个系统的核心部分

  引擎有不同的分类是为了适应不同的使用场景

  查看MySQL支持的所有引擎 show engines;

  MRG_MYISAM 是一堆MYISAM表的集合

    用于做水平分表,如果一个表数据量太大将导致效率低

    水平分表就是把整个大表拆分为不同的小表

  垂直分表

    一个表中字段太多,可以将常用的分到一个表中,不常用的分到一个表中,然后建立联系

  innodb 是最常用的引擎,因为支持事物,行锁,外键一系列功能

  MYISAM 没有上述功能但是存储效率高于innodb并且支持分表

扫描二维码关注公众号,回复: 5534873 查看本文章

  MYISAM 速度快,不能永久储存,没有特殊功能

详细建表语句

  []表示可选

  create table 表名(字段 类型[(宽度) 约束条件], 字段 类型[(宽度) 约束条件])

数据类型

  不同的数据类型,描述信息可以更加方便精准

  在计算机中对数据分类可以减少内存开销

  数字类型

  整形 默认都是有符号的

    tinyint 1个字节

    smallint 2个字节

    mediumint 3个字节

    int 4个字节

    bigint 8个字节

  设置为无符号需要在类型后添加unsigned

    create table 表名(字段 int unsigned);

  宽度在整型数据中,不是用来设置可存储的数据范围

  用于控制最小显示长度,长度不够就帮你补0但需要指定zerofill

    create table 表名(字段名 tinyint(5) zerofill);

  一般使用整型数据,宽度这个属性不指定

  浮点

    flaot 4个字节  float(a,b)

    double 8个字节  double(a,b)

    decimal 不固定  decimal(a,b)

    a表示总位数,b表示小数位数

    共同点:

      小数位最大30位

      float与double总长最大为255位,都不精确

    不同点:decimal总长最大为65位,并且是精确

  字符串

    char 固定长度

    var 可变长度

    固定长度的字符串类型

    tinytext 1个字符  text 2个字符  mediumtext 3个字符  longtext 4个字符

  二进制

    binary是固定长度的二进制

    varbinary是可变长度的二进制

    固定长度无法修改的二进制

    tinyblob  blob  mediumblob  longblob

    强调:二进制数据类型一般不用,如果要存储多媒体数据如音频,视频需要将其放到FTP文件服务器上,然后数据库中只存储连接即可

  时间类型

    year 年份  date 日期  time 时间  datatime 日期+时间  tiemstamp 时间戳

    year 可以是数字也可以是字符串

    timestamp 会自动更新时间,在你插入或修改时

    current_time 和 now() 所有的时间 日期类型都可以使用这两个方法来输入当前时间

    所有日期时间,数据库返回的都是字符串

  严格模式

    mysql5.7以下版本 默认都是非严格模式

    将 sql_mode = strict_trans_tables 写在配置文件中可以永久设置为严格模式

  enum 提前规定该自动能选的值的范围  多选一

  set 提前规定该字段能选的值的范围 多选多

约束

  约束是指给数据的值加上一些限制

  类型就是一种限制,宽度对数字型没有存储限制

  其他类型的宽度是有限制作用的

  约束就是除了数据类型以及宽度之外的其他限制

  unsigned就是约束中第一种表示整数不包含符号

  约束是为了保证数据的完整性

  not null 非空 限制字段必须有值

  default 默认值

    create table 表名(字段 类型(长度) not null default 默认值)

  unique 唯一性约束  并且是一个索引

    要求该字段的值不能重复

    单字段

      create table 表名(字段 类型 unique)

    多字段

      create table 表名(字段 类型,字段 类型, unique(字段,字段))

  primary key 主键约束

    从约束角度来看与非空+唯一是相同的效果

    不能为空且不能重复

    需要强调的是:主键除了有约束的效果,还有一个索引并且是非常重要的索引,在innodb中主键是必不可少的。innodb组织数据结构是安装树形结构来组织的,该结构中必须有一个数据,不能为空且唯一的如果没有这样的数据,树形结构也是不存在的

    mysql在创建的时候会检测是否存在主键,如果没有它就找一个具有非空且唯一约束的字段提升为主键,如果没有这样的字段mysql就会创建一个隐藏字段作为主键

  索引可以提高查询速度,就像字典里的目录,用于快速定位数据所在位置

  只要你是用innodb引擎,你就应该在建表时设置一个主键通常主键字段叫做id

  id有唯一标识的意思

  自动增长

    主键在使用中自动+1

    create table 表名(id int primary key auto_increment)

    当你创建表就应该有主键并且自动增长

猜你喜欢

转载自www.cnblogs.com/LinChengcheng/p/10532021.html