数据库之数据类型
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. webpack常用插件配置记录

    github仓库:https://github.com/llcMite/webpack.git 1)html-webpack-plugin    (用于模板生成html,自动引入output文件) c ...

  2. 2 第一个Django应用 第1部分(数据库与模型)

    目标应用: 一个公开的网站,可以让访客查看投票的结果并让他们进行投票. 一个后台管理网站,你可以添加.修改和删除选票. 查看django版本 python -c "import django ...

  3. tar 命令 简易使用方法

    创建压缩文件方法 tar zcf 压缩包存放位置 压缩那个目录/内容 (压缩) 例:在/data目录下压缩/etc/目录,并创建名称为etc.tar.gz [root@web01 /]# tar zc ...

  4. 手把手教你实现一个 Vue 进度条组件!

    最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录. 来看下 npm 搜索组件时候的效果: so 下面咱们一起动手 ...

  5. 学习HashMap随笔(更新中)

    1.先来一个HashMap和HashTable的区别: HashMap线程不安全,键值可以为空 HashTable线程安全,键值不可以为空 2.hashmap我理解的是把数组存储和链表存储相结合了 具 ...

  6. 周强 201771010141 《面向对象程序设计(java)》 第二周学习总结

    第一部分:理论知识学习部分 第三章 java的基本程序设计结构 本章主要学习数据类型.变量.运算符.类型转换.字符串.输入输出.控制流程.大数值.数组等内容. 1.基本知识 (1)标识符:由字母.下划 ...

  7. Java错误:结束的字符文字

    编译器为NetBeans 在学习java的时候突然出现了以下错误 错误代码是: Gen <Integer ,String> a = new Gen <Integer, String& ...

  8. C#中关于对out和ref的认识

    1.两者都是按照地址进行传递的.2.ref关键字是的参数按照引用传递的方式进行.他的效果是控制权传递会调用方法是,可以对这个参数进行修改   要使用ref参数,那么方法的定义和调用方法都必须进行显示的 ...

  9. 1.2 pip降级selenium3.0

    1.2 pip降级selenium3.0 selenium版本安装后启动Firefox出现异常:'geckodriver' executable needs to be in PATHselenium ...

  10. python retrying retry

    在写业务时, 有个业务需要在return某种情况下,进行重试. 代码类似于下面 from retrying import retry def verify(self): try: return sel ...