MySql教程

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

本文主要是介绍MySQL:DDL之常见数据类型(三),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

常见的数据类型

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

数值型

  • 整型
  • 小数
    • 定点数
    • 浮点数
  • 字符型
    • 较短的文本: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
这篇关于MySQL:DDL之常见数据类型(三)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!