#常见的数据类型

数值型:

            整型

            小数:

                定点数

                浮点数

字符型:

            较短的文本:char、varchar

            较长的文本:text、blob(较长的二进制数据)

日期型:

 

sql server 判断数据 sql怎么判断数据类型_sql server 判断数据

 

#一、整型

        tinyint、smallint、mediumint、int/Integer、bigint

            1            2                3                        4                    8字节

        特点:

          1.如果不设置无符号还是有符号,默认有符号。如果想设置无符号,在后面追加unsigned关键字

          2.如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值

          3.如果不设置长度,会有默认的长度

             长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用

 

    sigend 英文有符号的

 

        #1.如何设置无符号和有符号 如:字段名 int nusigned

        

DROP TABLE IF EXISTS tab_int;
            CREATE TABLE tab_int(
                t1 INT,#说明默认是有符号的
                t2 INT UNSIGNED
            );

    nusigned 设置为无符号

sql server 判断数据 sql怎么判断数据类型_整型_02

            INSERT INTO tab_int VALUE(-456464,-548554);

         #t2显示的是0 无符号的下线零界值 t2字段设置无符号

sql server 判断数据 sql怎么判断数据类型_临界值_03

    #比如int有符号最大取值21474836488,插入21474836489,字段填充为int型的临界值,因为有符号最大取值为21474836489

 

    #2.如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值

        INSERT INTO tab_int VALUE(21474836489,4294967296);

sql server 判断数据 sql怎么判断数据类型_字段_04

sql server 判断数据 sql怎么判断数据类型_sql server 判断数据_05

#3.设置为zerofill,长度7 用0填充

    

CREATE TABLE tab_int(
ZEROFILL,#zerofill默认0填充 不支持负数
ZEROFILL
        );

 

      #INT(7)后面括号的意思不是插入的长度最长是7位,而是显示的最大宽度,插入的范围由int smallint来决定的

        #设置为zerofill,再进行填充

        INSERT INTO tab_int VALUE(123,123);

        

sql server 判断数据 sql怎么判断数据类型_Mysql_06

 

 

sql server 判断数据 sql怎么判断数据类型_字段_07

#二、小数

        分类:

            1.浮点型

                float(M,D)

                double(M,D)

            2.定点型

                dec(M,D)

                decimal(M,D)

        特点:

Ⅰ.M和D

                              D:表是小数点后保留几位小数

                                  如果插入值超出范围,则插入临界值

      

Ⅱ.M和D都可以省略

                如果是decimal,则M默认为10,D默认位0

                如果是float和double,则会根据插入的数值的精度来决定精度

Ⅲ.定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用

 

    #一.M和D不省略(5,2)

     

CREATE TABLE tab_float(
            f1 FLOAT(5,2),
            f2 DOUBLE(5,2),
            f3 DECIMAL(5,2)
        );
 
        INSERT INTO tab_float VALUE(123.45,123.45,123.45);
        INSERT INTO tab_float VALUE(123.456,123.45,123.456);
        INSERT INTO tab_float VALUE(123.4,123.4,123.4);

        

sql server 判断数据 sql怎么判断数据类型_临界值_08

        #(5,2)M是显示的宽度为5位,D是小数位 2位数,所以整数位是3位

        #比如:插入1886四位就会出现异常 插入临界值 出现999.99 999.99 999.99

            INSERT INTO tab_float VALUE(1886.8,1886.8,1886.8);

    

sql server 判断数据 sql怎么判断数据类型_整型_09

sql server 判断数据 sql怎么判断数据类型_字段_10

 

    #二.M和D都可以省略

  

DROP TABLE tab_float;
        CREATE TABLE tab_float(
            f1 FLOAT,
            f2 DOUBLE,
            f3 DECIMAL
        );

 

        #float,double的类型,根据插入值的精度而去决定的 decimal默认(10,0)插入小数点就超出范围 将插入值四舍五入

123.5657);

        

sql server 判断数据 sql怎么判断数据类型_整型_11

sql server 判断数据 sql怎么判断数据类型_Mysql_12

 

#原则:所选择的类型越简单越好,能保存数值越小越好

 

sql server 判断数据 sql怎么判断数据类型_字段_13

#三、字符型

        较短的文本:

            char

            varchar

        其它:

            binary和varbinary用于保存较端的二进制

            enum用于保存枚举

            set用于保存集合

 

        较长的文本:

            text

            blob(较大的二进制)

    特点:

                            写法                       M的意思                                                特点                          空间的耗费         效率

       char            char(M)                最大的字符数,可以省略,默认位1         固定长度的字符         比较耗费            高

       varchar       varchar(M)          最大的字符数,不可以省略                       可变长度的字符         比较节省            低

 

    #enum枚举类型

  

CREATE TABLE tab_char(
            c1 ENUM('a','b','c') #只能插入abc 插入其它插入不进
        );
        INSERT INTO tab_char VALUE('a'),('b'),('C');
        INSERT INTO tab_char VALUE('d');#枚举只能插入abc 定义的

        

sql server 判断数据 sql怎么判断数据类型_临界值_14

 

    #set类型 集合

  

CREATE TABLE tab_set(
            s1 SET('a','b','c','d')
        );
    #插入的数据是set集合中的数据
        INSERT INTO tab_set VALUE('a,b,c');
        INSERT INTO tab_set VALUE('A,B');

        

sql server 判断数据 sql怎么判断数据类型_整型_15

 

sql server 判断数据 sql怎么判断数据类型_整型_16

 

CREATE TABLE tab_date(
            t1 DATETIME,
            t2 TIMESTAMP
            #t2字段位 timestamp 类型
            #我在东八区插入时间位2018-3-5 11:18 我将数据库的时区该+9:00东九区再去查看时间会多一个小时2018-3-5 12:18
        );
        SHOW VARIABLES LIKE 'time_zone'; #查看当前的时区
        SET time_zone='+9:00';#设置时区为东九区

sql server 判断数据 sql怎么判断数据类型_字段_17