数据库之数据类型
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. >HTML编辑笔记2

    1.列表 ①无序列表 <ul> <li>XXX</li> <li>XXX</li> </ul> ②有序列表 <ol> ...

  2. NSIS脚本 打包安装程序

    相关工具 nsis http://nsis.sourceforge.net/Special_Builds HM NIS Edit http://hmne.sourceforge.net/ 例子: ; ...

  3. linux之创建用户

    用户 useradd   xxx        创建用户   默认是普通用户 useradd    -u666   web       创建新用户    设置id号 groupadd   -g 777 ...

  4. 2019-04-10-day029-粘包处理

    内容回顾 osi五层协议 不是真实存在的,只是抽象出来的模型 应用层 传输层 TCP/UDP TCP :全双工,可靠的,面向连接的,速度慢,对数据大小没有限制 建立连接 :三次握手 SYN ACK 断 ...

  5. 剑指Offer 38. 二叉树的深度 (二叉树)

    题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 题目地址 https://www.nowcoder.com/prac ...

  6. Windows10 64位安装TensorFlow-GPU

    TensorFlow有GPU版和CPU版. GPU版需要CUDA和cuDNN支持,到链接:https://developer.nvidia.com/cuda-gpus 确认自己的显卡是否支持CUDA. ...

  7. django之Session、Cookie

    Session ·Session存在于服务器端 ·Session的设置: request.session['name'] = value ·Session的获取: dic = request.sess ...

  8. Flask关于请求表单的粗浅应用及理解+简单SQL语句温习

    1.请求表单 请求表单的知识点是flask数据请求中很小的一部分,首先要了解一下GET和POST请求:http://www.w3school.com.cn/tags/html_ref_httpmeth ...

  9. JQuery 实现导航菜单的高亮显示

    需求是这样的 点击不同的导航菜单实现当前点击的菜单是高亮的,点击导航下面的某个分类,分类所属的导航也必须是高亮的,点击某一篇文章,文章所属的导航菜单也必须是高亮的. 网上说的思路是这样的: 在菜单层的 ...

  10. React Native 调用 Web3(1.x) 的正确姿势

    1 创建项目 react-native init lm1 cd lm1 2 安装依赖包 yarn add node-libs-browser 3 创建 rn-cli.config.js 脚本 cons ...