数据库之数据类型
1.数据存储引擎
 一个功能的核心部分,回到mysql
        核心功能是存储数据  涉及到存储数据的代码 就称之为存储引擎
        根据不同的需求 也有着不同的引擎分类
 不同的引擎测试
      创建表时在最后指定引擎名称  engine = xxx
  create table t1(id int)engine=innodb
  create table t1(id int not null)engine=csv
  create table t1(id int)engine=memory
  create table t1(id int)engine=blackhole
 总结: innodb是默认的引擎 因为 它是永久存储 并且  支持事务,行锁,外键
2.创建表的完整语法
 create table 表名(
  字段名1 类型[(宽度) 约束条件],
  字段名2 类型[(宽度) 约束条件]
  );
 类型:使用限制字段必须以什么样的数据类型传值
 约束条件:约束条件是在类型之外添加一种额外的限制
 # 注意:
  1. 在同一张表中,字段名是不能相同
  2. 宽度和约束条件可选,字段名,表名和类型是必须的
  3、最后一个字段后不加逗号
3.基本数据类型之整型
 1、作用:id号,各种号码,年龄,等级
 2、分类:
 tinyint(**)   1个字节
  create table t1(x tinyint);
  insert into t1 values(128),(-129);
  如果数据超出范围就尽可能保存最大的 例如 在无符号下 保存256  其实存的255
        如果有符号  例如 tinyint  保存-1280 其实存的是-128  是最小值
 int (*****)   4个字节
 bigint(***)   8个字节
 3、测试:默认整型都是有符号的
  create table t4(x int(12) unsigned);  #在后面加上约束unsigned 变成无符号
  修改严格模式:
        超过范围也能添加成功是因为 mysql处于非严格模式
            查看当前模式  show variables like "sql_mode";
            修改为严格模式  set global sql_mode = "STRICT_TRANS_TABLES";
        严格模式下 如果值超出范围就直接报错,在一些版本中默认就是严格模式!
            在我们的正常开发中,我们应该先判断数据的正确性,没有问题在发给数据库
  长度限制对于整型的意义:
            create table t10(id int(1));
            insert into t10 value(454555);
            发现这个数也存储成功,说明 这里长度指的不是存储容量限制,而是显示的宽度
            如果你的数据超过了显示宽度 有几个显示几个
            如果不足 则补全到指定长度  得告诉它用什么来补全
            create table t13(id int(10) zerofill);
    总结:不是容量限制 而是 显示宽度
   要限制显示宽度
    1.创建表时 给整型加上宽度
    2.加上zerofill约束
4.浮点型: 小数型
 1 作用:存储身高、体重、薪资
 2 分类:
  float (*****)   4
  double (**)     8
  decimal (**)   不确定(手动设置)
  给浮点设置宽度限制
  float(m,d)    double(m,d)    decimal(m,d)
   m表示 这个浮点数整体的长度
   d表示 小数部分的长度
   例如: float(5,3)  最大值: 99.999
 3.测试:
  相同点
   1、对于三者来说,都能存放30位小数,
   2. float和double的最大长度为255
  不同点:
   1、精度的排序从低到高:float,double,decimal
   2、float与double类型能存放的整数位比decimal更多
5.字符类型:字符串
 1、作用:姓名,地址,描述类的信息
 2、分类:
  char 定长
   针对char类型,mysql在存储时会将数据用空格补全存放到硬盘中
   但会在读出结果时自动去掉末尾的空格,因为末尾的空格在以下场景中是无用
  varchar 变长
 3、测试:字符的宽度限制单位是字符个数
  create table t12(x char(4)); # 超出4个字符则报错,不够4个字符则用空格补全成4个字符
  create table t13(y varchar(4));# 超出4个字符则报错,不够4个字符那么字符有几个就存几个
  char和varchar 长度都比较小 最大就是65535
 4. 结论:
  select char_length(a),char_length(b) from t18;
  使用一个 char_length的函数 可以查看字符的长度
  设置sql模式来实现查看全部长度(空格不去掉的长度)
  set global sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES"
  设置完成后重启msyql 再次查询长度
  注意:
  当你在执行这样的查询语句时  mysql会自动将参数末尾的空格去除
  select *from t19 where  name = "yh"
  当你在使用模糊搜索时 要注意 定长字符 后面可能会有空格 所以最好在后面加上百分号 %
  select *from t19 where  name like "yh";
   % 任意个数的任意字符
   _ 1个任意字符
6.日期类型
 1.分类
  time   时分秒   HH:MM:SS   ***
  year   年份     ***
  date   日期  年月日   ***
     datetime 日期加时间 年月日 时分秒     年份最大是9999    *****
     timestamp 时间戳  从1970-1-1开始算    年份最大是2037    *****
 2.总结:datetime和timestamp
  共同点: 时间的存取通过字符串类型
    都可以使用now()函数来插入当前时间
  datetime 和 时间戳都能够表示日期和时间
  不同之处是: 年份最大范围不同
     时间戳可以为空 代表当前时间
     时间戳在你更新记录时 会自动更新为当前时间
 3、测试
  create table student(
   id int,
   born_year year,
   birth date,
   class_time time,
   reg_time datetime);
  insert into student values(1,'2000','2000-01-27','08:30:00','2013-11-11 11:11:11');
7. 集合与枚举类型
 枚举  **
  用于描述 一个已知范围的数据 例如性别: 只有男 女 或其他
  enum("man","woman","other")
  总结: 枚举中只能是字符串类型
     添加的数据只能是已经出现在枚举中的值
     你的值只能是其中的一个
     你也可以使用枚举值的序号来插入值 从1开始
      多选1
 集合 **
  用于描述一堆数据  比如你的兴趣爱好
  set("watch movie","listen music","play game")
  总结:集合中的数据 只能是字符串
    添加的数据只能是已经出现在集合中的值
    你的值可以是其中的任意几个
    你也可以使用枚举值的序号来插入值 从1开始   但是只能给一个序号
    多选多

day39数据库之基本数据类型的更多相关文章

  1. MySQL数据库的基本数据类型

    整数类型 数值型数据类型主要用来存储数字,包含的类型有: TINYINT.SMALLINT.MEDIUMINT. INT(INTEGER). BIGINT. 下面通过一个例子来查看各种类型的所占有的数 ...

  2. PostgreSQL、SQL Server数据库中的数据类型的映射关系

    PostgreSQL 8.1 轰动发布,我也打算将原来使用 SQL Server 的一些应用迁移到 PostgreSQL 上,首先需要迁移的是表,那么这就必须要先搞清楚这两个数据库中的数据类型的映射关 ...

  3. mysql数据库,当数据类型是float时,查询居然查询不出数据来

    mysql数据库,当数据类型是float时,查询居然查询不出数据来,类似如下: 以后mysql数据库不用float类型,而double类型可以查得出来.

  4. oracle数据库——常用的数据类型

    2018-12-19    23:08:03 oracle数据库中常用的数据类型有23种,我们把数据类型分为字符型.数字型.日期型和其他数据类型. 一.字符型: 数据类型 取值范围 (字节) 说明 v ...

  5. MySQL数据库篇之数据类型

    主要内容: 一.数值类型 二.日期类型 三.字符串类型 四.枚举类型与集合类型 1️⃣ 数值类型 1.整数类型:tinyint  smallint  mediumint  int  bigint 作用 ...

  6. ADOX创建ACCESS数据库列名的数据类型

    Type   属性             指示   Parameter.Field   或   Property   对象的操作类型或数据类型. 设置和返回值 设置或返回下列   DataTypeE ...

  7. 百万年薪python之路 -- MySQL数据库之 常用数据类型

    MySQL常用数据类型 一. 常用数据类型概览 # 1. 数字: 整型: tinyint int bigint 小数: float: 在位数比较短的情况下不精确 double: 在位数比较长的情况下不 ...

  8. MySql数据库之常用数据类型及常用约束简述

    本文呢,主要给大家简述一下数据库中常用的几种数据类型以及约束. 1.数据类型 数据类型,是指数据表中可以存储的数据的种类. 数据库中常用的数据类型有: 1.整型:int.bit 2.小数:decima ...

  9. 【HICP Gauss】数据库 数据库高级语法(数据类型函数)-3

    SQL高级语法:整型:   integer 2(-31) ~2(31)-1 4字节 intger unsigned 2(0)~2(32)-1 4字节 bigint 2(-63)~2(63)-1 8字节 ...

随机推荐

  1. 34 char类型转换为int类型

    #include<iostream> #include<cstdlib > using namespace std; int main() { char a=101; int ...

  2. Cordova 6.5 -Android环境搭建笔记

    (Vue+Vue-cli+VueRouter+Webpack 构建单页面应用推荐看下面二个 https://lvyongbo.gitbooks.io/vue-loader/content/http:/ ...

  3. python if __name__=='__main__'的理解

    定义一个模块叫module.py: def main(): print "we are in %s" %__name__ if __name__=='__main__': main ...

  4. python mysql and ORM

    http://www.cnblogs.com/alex3714/articles/5950372.html 9. ORM sqlachemy学习 http://www.cnblogs.com/alex ...

  5. servlet邮箱激活验证实例含代码

    也有很多人本来有机会的,他们都拒绝了,不想让自己太累,太麻烦.或者中途被情绪所左右,半途而废了. 成长是有代价的,同样悠闲也是有代价的. 流程: 用户填写相关信息,点击注册按钮 系统先将用户记录保存到 ...

  6. LSTM学习—Long Short Term Memory networks

    原文链接:https://colah.github.io/posts/2015-08-Understanding-LSTMs/ Understanding LSTM Networks Recurren ...

  7. L330 Black hole picture captured for first time in space ‘breakthrough’

    Black hole picture captured for first time in space ‘breakthrough’ Astronomers have captured the fir ...

  8. 关于C#中break和continue的认识

    1.在昨天我在做循环处理的时候,遇到了break和continue的使用问题,今天来总结了一下, break: for (int i=0;i<5;i++) { a++; if(a==1) bre ...

  9. 1.3 解决pip使用异常问题

    1.3 解决pip使用异常问题 1.3.1 pip出现异常有一小部分童鞋在打开cmd输入pip后出现下面情况:Didnot provide a command Did not provide a co ...

  10. Cortex-M3 跳转到指定bin执行

    跳转前指定sp和msp: #if defined(__GNUC__) __attribute__(( naked )) static void set_sp(unsigned long addr) { ...