ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

MySQL:DDL之常见数据类型(三)

2021-08-19 12:02:28  阅读:187  来源: 互联网

标签:set 59 字节 符号 DDL 数据类型 tab MySQL 类型


常见的数据类型

原则:所选择的类型越简单越好,能保存数值的类型越小越好(节省空间)

数值型

  • 整型
  • 小数
    • 定点数
    • 浮点数
  • 字符型
    • 较短的文本:char、varchar
    • 较长的文本:text、blob(较长的二进制数据)
  • 日期型
整型
  • 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned
  • 如果插入的数值超出了整型的返回,会报异常,并且插入临界值
  • 如果不设置长度,会有默认的长度
  • 范围是有整数类型决定的,长度只是会填充到我们指定的长度(若想显示需加上ZEROFILL)
整数类型 字节 范围
Tinyint 1 有符号:-128~127
无符号:0~255
Smallint 2 有符号:-32768~32767
无符号:0~65535
Mediumint 3 有符号:-8388608~8388607
无符号:0~1677215
Int、Integer 4 有符号:-2147483648~2147483647
无符号:0~4292967295
Bigint 8 有符号:-9223372086854775808~9223372086854775807
无符号:0~9223372036854775807*2+1
  • 如何设置无符号和有符号

    CREATE TABLE tab_int(
    	t1 INT,
        t2 INT UNSIGNED
    )
    
小数
  1. 浮点型
    • float(N,D)
    • double(N,D)
  2. 定点型
    • dec(M,D)
    • decimal(M,D)
浮点数类型 字节 范围
float 4 ±1.75494351E-38±3402823466E+38
double 8 ±2.2250738585072014E-308~±1.7976931348623157E+308
定点数类型 字节 范围
DEC(M,D)
DECIMAL(M,D)
M+2 最大取值范围与double相同,给定decimal的有效取值范围由M和D决定
  • 特点:
    • M和D:M是整数部位加小数部位的和,D小数点后的位数(如果超过,则为临界值)
    • M和D省略
      • 如果是decimal,则M默认为10,D默认为0;
      • 如果是float和double,则会根据插入的数值的精度来决定精度
    • 定点型的精度准确度较高,如果要求插入数值的精度较高,如货币运算等则使用定点型
字符型
  • 较短的文本:
    • char
    • varchar
  • 较长的文本
    • text
    • blob(较大的二进制)
  • 其他
    • binary
    • varbinary
    • enum
    • set
字符串类型 最大字符数 描述及存储需求 特点 空间的耗费 效率
char(M) M(可以省略,默认为1) M为0~255之间的整数 固定长度的字符 比较耗费 相比较高
varchar(M) M(不可以省略) M为0~65535之间的整数 可变长度的字符 比较节省 相比较低
  • binary和varbinary类型:类似于char和varchar

    • 不同的是他们包含二进制字符串而不包含非二进制字符串
  • 枚举:要求插入的值必须属于列表中指定的值之一

    • 如果列表成员为1~255,则需要1个字节存储
    • 如果列表成员为255~65535,则需要两个字节存储
    • 最多存储65535个成员。
  • Set类型:和Enum类型类似

    • 里面可以保存0~64个成员
    • 和Enum类型最大的区别是:SET类型一次可以选取多个成员,而Enum只能选一个根据成员个数不同,存储所占的字节也不同
      • 1~8个成员:字节数1
      • 9~16:2
      • 17~24:3
      • 25~32:4
      • 33~64:8
    CREATE TABLE tab_set(
    	s1 SET('a','b','c','d')
    );
    
    INSERT INTO tab_set VALUES('a');
    INSERT INTO tab_set VALUES('a,b');
    INSERT INTO tab_set VALUES('a,c,d');
    
日期类型
日期和时间类型 字节 最小值 最大值
date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
timestamp 4 19700101080001 2028年的某个时刻
time 3 -838:59:59 838:59:59
year 1 1901 2155

标签:set,59,字节,符号,DDL,数据类型,tab,MySQL,类型
来源: https://www.cnblogs.com/jtxw/p/15161067.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有