MySQL--存储引擎数据类型约束条件

Posted xiaowangba9494

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL--存储引擎数据类型约束条件相关的知识,希望对你有一定的参考价值。

一、存储引擎

  引子:不同数据类型应该有不同处理机制

    show engine(查看存储引擎)

  mysql存储引擎engine

    lnnodb:默认的存储引擎,查询速度较myisam慢,但是更安全

      创建表后文件有两个: .frm文件(表结构)、.ibd文件(真实数据)

    myisam:mysql老版本的存储引擎

      创建表后文件有三个: .frm文件(表结构)、.myd文件(真实数据)、myi文件(id索引)

    memory:内存引擎(数据全部存储在内存中)

      创建表后有一个文件: .frm文件(表结构)

    blackhole:无论存什么,都立马消失(黑洞)

      创建表后有一个文件: .frm文件(表结构)

二、创建表的完整语法:

  create table 表名(

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

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

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

    );

  注意:

    1.字段名和字段类型是必须的,中括号内的参数都是可选参数

    2.同一张表中字段名不能重复

    3.最后一个字段后面不能加逗号

  宽度:

    对存储数据的限制(使用数据库的准则,能尽量让它少干活就尽量少干)

      char(1)  只能存一个字符。

        如果超了 mysql会自动帮忙截取

        1.插入的时候,mysql自动截取

        2.会直接报错(mysql严格模式下)

  类型与中括号内的约束

    类型约束的是数据的存储类型

    而约束的是基于类型之上的额外限制

 

三、数据类型:

  建表的时候,字段都有对应的数据类型

  1.整形

    TINYINT、SMALLINT 、MEDIUMINT、 INT或INTEGER 、BIGINT 

  ps:查格式

    show variable like %mode%

    设置严格模式
      set session 临时有效 只在你当前操作的窗口有效
      set global 全局有效 终生有效
      set global sql_mode = ‘STRICT_TRANS_TABLES‘;
    设置完之后 你只需要重新退出客户端再次进入即可

技术图片
‘‘‘    
模糊匹配
    like 
    %匹配任意多个字符
    _匹配任意一个字符
        
1. 百分号(%):示任意个或多个字符,可匹配任意类型和长度的字符。

示例1:SELECT * FROM character WHERE name LIKE ‘%孙%‘;即匹配e姓名为“孙行者”,“行者孙,“行者孙”三行数据

示例2:SELECT * FROM character WHERE name LIke ‘%孙%‘ and name like ‘%行%‘; 即匹配姓名为“孙行者”,“行者孙,“行者孙”三行数据

示例3:SELECT * FROM character WHERE name LIke ‘%孙%行%‘;只能匹配姓名为“孙行者”一行数据
注意示例2和示例3的区别

2.下划线(_):表示任意单个字符。匹配单个任意字符,它常用来限制表达式的字符长度语句:(可以代表一个中文字符)

示例1:SELECT * FROM character WHERE name LIKE ‘_三_‘;即把姓名为“唐三藏”的一行数据

示例2:SELECT * FROM character WHERE name LIKE ‘_三‘;即把姓名为“唐三”一行数据
模糊匹配

 

  2.浮点型

    FLOAT、DOUBLE、DECIMAL (精准度依次增大)

技术图片

 

  3.字符类型(char与varchar)

     char(4)  #最大只能存放四个字符,炒出来会直接报错,如果少了,用空格填充

     char(4)  #最大只能存四个字符,超出来会直接报错,不够4个,实事求是存

  区别 空间 存取速度 取值
char 定长 浪费空间 存取速度快 方便取,按固定长度即取可
varchar 边长 节省空间 存/取都需要先记录/解读报头 取得时候繁琐,无法知道数据长度

  

  4.日期类型

    datatime   年月日时分秒

    data  年月日

    year  年

    time  时分秒

技术图片

 

  5.枚举与集合

     枚举(enum,多选一)  限制某个字段能够存储的数据内容

    集合(set,多选多)    限制某个字段能够存储的数据内容

 

四、约束条件

  1.not null 不能为空

  2.default 给某个字段设置默认值(当用户写了的时候用用户的,当用户没有写就用默认值)

    create table t17(id int,name char(16) default ‘jason‘);

  3.unique 唯一(分单列和联合 ip+port 唯一)

  4.primary key 主键  (not null + unique 组合效果一致   非空且唯一)

    是innodb引擎查询必备的索引

  5.primary key + auto_increment(自动递增)

    1.一张表中必须有且只有一个主键,未设置,从上到下搜索遇到非控且唯一的字段自动将其设置为主键

    2.如果表里面没有任何的可以设置字段,默认隐藏字段作为主键(查不到,无用)

    3.一张表中通常都应该有一个ID字段,并且通常将改id字段为主键

    unique key

    default 给某个字段设置默认值(当用户写了的时候用用户的,当用户没有写就用默认值)

    not null 不能为空

   ps:delete from 仅仅是产出数据,不会重置主键

    truncate 初始化表,会重置主键

 

以上是关于MySQL--存储引擎数据类型约束条件的主要内容,如果未能解决你的问题,请参考以下文章

存储引擎数据类型约束条件

MySQL 存储引擎 字段类型 约束条件

数据库的存储引擎,数据类型,约束条件

存储引擎表的创建字段的各种数据类型模糊匹配严格模式约束条件等

数据库 MySQL 之 表操作存储引擎

mysql 表操作