数据库之数据类型
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. PB测款方法 店铺运费模板 设置

    https://www.wishhack.com/article/44.html 子账号有权限设置运费

  2. python操作redis集群

    strictRedis对象方法用于连接redis 指定主机地址,port与服务器连接,默认db是0,redis默认数据库有16个,在配置文件中指定database 16 上代码 .对redis的单实例 ...

  3. oracle数据库连接 ORA-12638:身份证明检索失败

    连数据库的时候突然报了一个这个 查找各种办法,发现自己从10g换成了11g,不过这个没有什么关系,跟oracle的安全设置有关系, 首先从开始菜单找到Net Manager 打开,选择本地,概要文件, ...

  4. [ZJOI2007]最大半联通子图

    这个题,翻译一下题面,就是一个连通图,找他的最长链的数量... 所以说方法就比较明显了:tarjan缩点+拓扑+DP 注意也是本题唯一坑点,拓扑DP的时候要考虑重复边的情况... 呆码: #inclu ...

  5. Problem E: 类的初体验(V)

    Description 定义一个类Data,只有一个int类型的属性和如下方法: 1.   缺省构造函数,将属性初始化为0,并输出"Data's default constructor.&q ...

  6. Master-Worker设计模式介绍

    Master-Worker模式是常用的并行设计模式.核心思想是,系统由两个角色组成,Master和Worker,Master负责接收和分配任务,Worker负责处理子任务.任务处理过程中,Master ...

  7. Ubuntu虚拟机屏幕自适应与文件拖拽复制方法

    使用VMware-tools的替代品:open-vm-tools 安装步骤: 1 更新下系统源 sudo apt update 2 安装open-vm-tools sudo apt install o ...

  8. 莫烦tensorflow(5)-训练二次函数模型并用matplotlib可视化

    import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt def add_layer(inputs,in_siz ...

  9. Java EE 课程目标

    对于自己在本门课程的目标,首先是跟进老师的课程进度,努力完成老师下达的个人任务,以及需要与同伴一起合力完成的团队任务:其次是在课上课下的学习过程中,希望自己各方面的能力能有所提升:最后却也是最重要的一 ...

  10. I/O简介

    用户空间是常规进程所在区域.JVM就是常规进程,驻守于用户空间.用户空间是非特权区域,在该区域执行的代码不能直接访问硬件设备. 内核空间是操作系统所在区域.内核代码有特别的权利:它能与设备控制器通讯, ...