zoukankan      html  css  js  c++  java
  • SQL——数据类型

    环境

      DBMS:MySQL 8.0.17

      工具:Navicat Premium 11.2.16

    整数类型

    数据类型 说明 字节 范围
    tinyint[(n)] n表示数据长度,与范围无关 1

    带符号:-27~27-1

    无符号:0~28-1

    smallint[(n)] n表示数据长度,与范围无关 2

    带符号:-215~215-1

    无符号:0~216-1

    mediumint[(n)] n表示数据长度,与范围无关 3

    带符号:-223~223-1

    无符号:0~224-1

    int / integer[(n)] n表示数据长度,与范围无关 4

    带符号:-231~231-1

    无符号:0~232-1

    bigint[(n)] n表示数据长度,与范围无关 8

    带符号:-263~263-1

    无符号:0~264-1

      创建基本表test并添加列n:

      

      插入数据“128”(tinyint的范围为:-128~127),发现报错:

      

      也就是说,数据不能超出数据类型的范围


      指定整数类型时默认情况为带符号整数,若要表示无符号整数,则需在整数类型后添加关键字unsigned。

    整数类型 UNSIGNED

      修改列n的类型为无符号的tinyint型:

      

      插入数据“-1”,发现报错:

      

      也就是说,无符号整数不能有负数数据


      0填充会在当前数据长度小于显示长度时,在数据前用0填充。

      可以在整数类型后添加关键字zerofill,表示0填充。定义0填充需要定义数据长度。

    整数类型(长度) ZEROFILL

      0填充效果在Navicat下无法看到,需要在命令行下才能看到。

      为列n定义0填充,并定义数据长度为5:

      

      使用命令行,插入数据“1”,再查询test表:

      

    小数类型

    数据类型 含义 字节 范围
    decimal[(m,d)] m位数字组成,小数点后有d位数字的定点数。默认m=10,d=0。 m+2 依赖于m和d的取值
    float[(m,d)] m位数字组成,小数点后有d位数字的单精度浮点数。默认无限制位数。 4 最小非零值:±1.175494351e–38
    double[(m,d)] m位数字组成,小数点后有d位数字的双精度浮点数。默认无限制位数。 8 最小非零值:±2.2250738585072014e–308

      创建基本表test,定义字段de、f、d,三个字段都是取m=5,d=2:

      

      向三个字段都插入值“123.456”(小数位超出),发现没有报错:

      

      查看基本表test的记录,可以看到三个字段都对数据进行四舍五入,最后保留2位小数:

      

      也就是说,保存的数据小数位数大于d时会进行四舍五入,保留d位小数处理


      向三个字段都插入值“1234.56”(整数位超出),发现报错:

      

      也就是说,保存的数据整数位数大于m-d时会报错

    字符类型

    数据类型 说明
    char(n) 长度为n的定长字符串,n最大取255
    varchar(n) 最大长度为n的不定长字符串,n最大取255
    tinytext 文本,最大长度为28
    mediumtext 文本,最大长度为214
    text 文本,最大长度为216
    longtext 文本,最大长度为222

    日期时间类型

    数据类型 字节 范围
    timestamp 4 19700101080001~20380119111407
    datetime 8 1000-01-01 00:00:00~9999-12-31 23:59:59

    二进制数据类型

    数据类型 说明
    tinyblob 最大长度为256B
    blob 最大长度为64KB
    mediumblob 最大长度为16MB
    longblob 最大长度为4GB

    其他类型

    枚举类型

    ENUM(字符串1,字符串2,...)

      创建基本表test,定义字段e为枚举类型:

      

      插入数据“e”(枚举类型中没有预定义的字符串),发现报错:

      

      插入数据“a,b,c,d”(枚举类型中多个预定义字符串),发现报错:

      

      也就是说,枚举类型的数据必须是预定义的字符串,而且只能取其中之一

    集合类型

    SET(字符串1,字符串2,...)

      创建基本表test,定义字段s为集合类型:

      

      插入数据“e”(集合类型中没有预定义的字符串),发现报错:

      

      插入数据“a,b,c,d”(集合类型中多个预定义字符串):

      

      也就是说,集合类型的数据必须是预定义的字符串,但是可以取多个预定义字符串

  • 相关阅读:
    JDBC
    JDBC连接MYSQL
    Servlet学习(1)
    Apache http server和tomcat的区别
    log4j(转)
    《打造Facebook》
    深入浅出Java三大框架SSH与MVC的设计模式
    Python 爬虫监控女神的QQ空间新的说说,实现秒赞,并发送说说内容到你的邮箱
    Python 爬虫监控女神的QQ空间新的说说,实现邮箱发送
    linux 进程消耗查看
  • 原文地址:https://www.cnblogs.com/lqkStudy/p/11462565.html
Copyright © 2011-2022 走看看