严格模式 浮点型 字符类型 日期类型

严格模式

char() 宽度默认为1 添加数据的时候他会自动截取1位来 存   (能尽量少干活就少干活 )  

  还有一种情况就是 他会自动报错 我们应该给他报错

模糊匹配

  查看 严格模式  show variables like"%mode%";     只要是带mode的都给我查出来

  %匹配任意多个字符

   _匹配任意一个字符

 

  

 两种方式

    set session  临时有效 只在你当前操作窗口有效

    set session sql_mode='STRICT_TRANS_TABLES';

    set global 全局有效 终身有效

      set global sql_mode='STRICT_TRANS_TABL ES'  设置完之后需要退出客户端 从新进入

 

浮点型 

浮点型
float(255,30) 总共255位 小数部分占30位
double(255,30) 总共255位 小数部分占30位
decimal(65,30) 总共65位 小数部分占30位

create table t12(id FLOAT(255,30));
create table t13(id DOUBLE(255,30));
create table t14(id DECIMAL(65,30));

insert into t12 values(1.111111111111111111111111111111);
insert into t13 values(1.111111111111111111111111111111);
insert into t14 values(1.111111111111111111111111111111);

精确度
float < double < decimal

 

 字符类型(***)

  分为两类  char (4)  最大 四个字符 超出 直接报错 少了用空格填充

        varchar(4)  最大 四个字符 超出 直接报错 少了有几个存几个 (节省空间)

char_length() 查看长度   select char_length(name) from t16; 

mysql在存储char类型字段的时候 硬盘上确确实实存的是固定长度的数据
但是再取出来的那一瞬间 mysql会自动将填充的空格去除

可以通过严格模式 来修改该机制 让其不做自动去除处理

 

# 如果不想让mysql帮你做自动去除末尾空格的操作,需要再添加一个模式
set global sql_mode="strict_trans_tables,PAD_CHAR_TO_FULL_LENGTH";

 

char与varchar的区别
  char定长
    1.浪费空间
    2.存取速度快

  varchar变长
    1.节省空间
    2.存取速度慢(较于char比较慢)
      存的时候 需要给数据讲一个记录长度的报头
      取的时候 需要先读取报头才能读取真实数据


  char(4)                   varchar(4)
  取的时候方便           取的时候比较繁琐了 无法知道数据到底多长
  直接按固定的长度取即可

 

日期类型

* date:2019-05-01
* time:11:11:11
* Datetime: 2019-01-02 11:11:11
* Year:2019

  create table student(
    id int,
    name char(16),
    born_year year,
    birth date,
    study_time time,
    reg_time datetime
  );
  insert into student values(1,'egon','2019','2019-05-09','11:11:00','2019-11-11 11:11:11'

 

posted @ 2019-08-19 21:27  LD_Dragon  阅读(243)  评论(0编辑  收藏  举报