Mysql_SQL常见的数据类型

#常见的数据类型

        数值型:

            整型

            小数:

                定点数

                浮点数

        字符型:

            较短的文本:char、varchar

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

        日期型:

 

 

#一、整型

        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 设置为无符号

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

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

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

 

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

        INSERT INTO tab_int VALUE(21474836489,4294967296);

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

        CREATE TABLE tab_int(

            t1 INT(7) ZEROFILL,#zerofill默认0填充 不支持负数

            t2 INT(7) ZEROFILL

        );

 

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

        #设置为zerofill,再进行填充

        INSERT INTO tab_int VALUE(123,123);

        

 

 

#二、小数

        分类:

            1.浮点型

                float(M,D)

                double(M,D)

            2.定点型

                dec(M,D)

                decimal(M,D)

        特点:

            Ⅰ.M和D   M:整数部位+小数部位

                              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);

        

        #(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);

    

 

    #二.M和D都可以省略

        DROP TABLE tab_float;

        CREATE TABLE tab_float(

            f1 FLOAT,

            f2 DOUBLE,

            f3 DECIMAL

        );

 

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

        INSERT INTO tab_float VALUE(123.5659,123.5658,123.5657);

        

 

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

 

#三、字符型

        较短的文本:

            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 定义的

        

 

    #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');

        

 

 

        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';#设置时区为东九区

        

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值