zoukankan      html  css  js  c++  java
  • sql 的基本数据类型

    详细的建表语句

    create table 表名(字段名 数据类型[(长度) 约束条件]

    []代表可选

    为什么需要给数据数据分类?

    1.表述数据更加正确

    2.节省内存空间

    数据类型

    整形类型

    默认是有符号的,

    设置为无符号 

      1.create table t2 (age tinyint unsigned);

      2.建表后用alter修改

    !!!!!对于整数类型而言长度不是数据所占的字节数 是显示数据时的宽度(字符数)

    默认情况下 存储的数值的十进制位数  小于所设置的显示宽度时  不会填充 没有任何效果

    加上zerofill 指定当存储的数值的十进制位数  小于所设置的显示宽度时 用0来填充

    当数据的十进制位长度 大于显示宽度 可以正常显示

    主要记住  整型后面的长度的含义 有字符是不同的

      tinyint
      smallint
      mediumint
      int *****
      bigint

    总结:除了存储范围没啥区别
      都是整型
      默认有符号
      对于显示宽度 原理是相同的

    长度参数如果不指定 会有默认值

    严格模式

    什么是严格模式 对插入的数据严格要求 不再范围内直接报错 例如往tinyint中插入大于255的值将报错
    什么是非严格模式 不 对插入的数据严格要求 不再范围内也可以保存 保存的当前类型最大支持的值
      5.6默认是非严格模式
      5.7以后默认严格模式

    查看SQL模式
      select @@sql_mode;
      show variables like "sql_mode";

    修改SQL模式
      set @@sql_mode = "值";
      正常情况不需要改

     浮点类型

      float 4字节
      double 8字节
      decimal 不固定
      create table t9(num float(m,d))
      m 表示总长度 d 表示小数部分的长度
      长度表示不是数据存储范围 而是字符长度
      10.12 总长为4 小数部分为2

    各个类型的最大长度
      float (255,30) *****
      double (255,30)
      decimal (65,30)

    区别:
      float与double的精度不同 都是不准确的小数
      decimal 准确的小数 不会丢失精度

      具体使用哪种类型得根据使用场景判断
      float满足大部分使用场景
      decimal适合银行系统 科学研究等

    括号中m和d的值 可以限制数据存储范围 与整型不同
    重点:记住m和d的含义

    字符串类型

      常用两种
      char 定长字符串
      char
      varchar 可变长度字符串
      注意字符串中 长度指定的是数据的字符长度 与字节没关系

      create table t13(c1 char,c2 varchar(10));
      在创建时 varchar必须指定长度 char有默认值

    不同点:
      a char(3) b char(3)
      A |B |
      char类型在取数据时 就根据长度来获取 不关心真实数据长度
      无论的数据有多长 占用的空间是固定的 造成了一定空间浪费

      a varchar(30) b varchar(30)
      (1)A(1)B
      varchar类型在取数据时 先获取数据长度 在根据长度获取真实数据 关心真实数据长度
      先存储长度需要一个字节 再存储真实数据 不会浪费空间
      但是 由于需要计算数据的长度 所以存取速度会比定长慢

    相同点:
      括号中的数字 都是表示存储最大字符长度

      ·char使用频率更高

      mysql会在存储数据时自动将数据末尾的空格去掉
      如果必须要存空格 需要修改sql_mode 增加 PAD_CHAR_TO_FULL_LENGTH 意思是把空格当作有效数据

      

      由于自动去除空格这个机制 在使用等于符号 和like时有区别
      select *from t1 where name = "yh "; 会自动去除空格
      select *from t1 where name like "yh "; 不会自动去除空格
      like 用于模糊匹配 使用%表示0或任意个任意字符 使用_表示一个任意字符

    日期和时间 

      year
      time
      date
      datetime *****
      timestamp *****
      timestamp特点是:可以给null 自动输入当前时间 当这条记录被修改了会自动更新当前时间

      枚举

      enum 可以指定一堆字符串的值 在插入数据时 数据必须这堆字符串中的其中一个 ("男的","女的") 多选一

    集合

       set  可以指定一堆字符串的值  在插入数据时  数据必须这堆字符串中的其中一个或多个 ("男的","女的")  多选多

    共同点:数据都是字符串类型

  • 相关阅读:
    使用Acctinfo.dll了解更多AD用户帐号信息
    vue elementUI之Form表单 验证
    vue element-ui 表格筛选,点击筛选数据
    使用Bootstrap + Vue.js实现 添加删除数据
    CSS3过渡效果 兼容IE6、IE7、IE8
    使用Ajax、json实现京东购物车结算界面的数据交互
    JavaScript面向对象,闭包内存图,闭包和作用域
    实现一个宽和高都是100像素的div可以用鼠标拖拽移动的效果
    JavaScript鼠标事件,点击鼠标右键,弹出div
    javascript sort排序
  • 原文地址:https://www.cnblogs.com/msj513/p/9990687.html
Copyright © 2011-2022 走看看