zoukankan      html  css  js  c++  java
  • MySql的回顾八数据类型介绍

      漆黑的夜空,总能让人产生无数的遐想,不知屏幕前的你,这周过得怎么样?玩耍也好,"修炼"也好,总之时间在不断从我们各处穿梭而过,

    但你既然都点进来了,那在这短短的5分钟内我就来带你领来温习一下Mysql数据类型吧!

    #常见的数据类型
    数值型:
        整型
        小数:
            定点数
            浮点型
        字符型:
            较短的文本:char,varchr
            较长的文本:text,blob(较长的二进制数据)

      一.整型

         

          

    分类:
    tinyint,smallint,mediumint,int/integer,bigint
    1        2        3          4          8
    
    特点:
    ①如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,
    需要添加UNSIGNED关键字。 ②如果插入的数值超出了整数的范围,会报out
    if range异常,并且插入临界值 ③如果不设置无符号和有符号,有符号的Int长度默认11,无符号Int的默认长度10 ④长度代表了显示的最大宽度,如果不够用会用0在左边填充, 但必须搭配ZEROFILL使用。
    #案例:1.如何设置有符号和无符号
    #有符号的
        CREATE TABLE tab_int(
                t1 INT
                         );
    DESC tab_int;
    插入一条数据
    INSERT INTO tab_int VALUES(-123456);
    /* Affected rows: 1  Found rows: 0  Warnings: 0  Duration for 
    1 query: 0.016 sec.
    */ /* 受影响的行:1 找到的行:0 警告:0 1 查询的持续时间:0.016 秒*/
    删除表 DROP TABLE IF EXISTS tab_int; #重新创建表 创建t2为无符号的数据类型 CREATE TABLE tab_int( t1 INT, t2 INT UNSIGNED ); DESC tab_int;

    #插入一条数据

    #插入一条数据
    INSERT INTO tab_int VALUES(-123456,0);
    SELECT * FROM tab_int;

    #长度设置,长度是不代表数据范围,只是代表占术数据的宽度。数据范围由类型决定。
    设置了宽度,如果不够会用0去填充。
    删除表,再次创建
    DROP TABLE IF EXISTS tab_int;
    CREATE TABLE tab_int(
        t1 INT(7),
        t2 INT(7) UNSIGNED
                    );
    DESC tab_int;

    插入数据,查看数据
    INSERT INTO tab_int VALUES(123,123);
    SELECT * FROM tab_int;

    为什么没0填充?
    删除表,再次创建,给字段后添加ZEROFILL关键字,
    添加ZEROGILL后变为无符号数据类型。 DROP TABLE IF EXISTS tab_int; CREATE TABLE tab_int( t1 INT(7) ZEROFILL, t2 INT(7) UNSIGNED );
    插入数据,查看数据
    INSERT INTO tab_int VALUES(123,123);
    SELECT * FROM tab_int;

    二.小数

    备注:±正负号:按住Alt再用小键盘输入0177
    分类
    1.浮点型
        float(M,D)
        double(M,D)
    2.定点型
    dec(M,D)
    decimal(M,D)
    定点型
    
    特点
    ①
        M:整数部位+小数部位
        D: 小数部位
        如果超过范围,则插入临界值
    ②
        M和D都可以省略
        如果是decimal,则M默认为是10,D默认为0(如果超过会报错)
        如果是float和double,则会根据插入的数值精度来决定精度
    ③    
        定点型的精确度较高,如果要求插入数值的精度较高如
        货币运算等则考虑使用
    备注:一般用float就行,节省空间
    建表数据类型选择的原则:
        所选择的类型越简单越好,能保存数据类型越小越好。
    #测试M与D
    CREATE TABLE tab_float(
        f1 FLOAT(5,2),
        f2 DOUBLE(5,2),
        f3 DECIMAL(5,2)
                    );
    DESC tab_float;

    插入数据,正常执行
    INSERT INTO tab_float
    VALUES(123.45,123.45,123.45);
    SELECT * FROM tab_float;

    再次插入数据
    INSERT INTO tab_float
    VALUES(123.456,123.456,123.456);

    查询数据
    SELECT * FROM tab_float;

    四舍五入了
    再次插入数据
    INSERT INTO tab_float
    VALUES(123.4,123.4,123.4);
    SELECT * FROM tab_float;

    再次插入,测试
    INSERT INTO tab_float
    VALUES(1523.4,1523.4,1523.4);
    超出范围报错,无法插入

    先删除,再次创建tab_float表,省略后(M,D),正常执行
    DROP TABLE tab_float;
    CREATE TABLE tab_float(
        f1 FLOAT,
        f2 DOUBLE,
        f3 DECIMAL
                        );
    SELECT * FROM tab_float;   

    再次插入数据,f3报错
    INSERT INTO tab_float VALUES(123.4523,123.4523,123.4523);
    DESC tab_float;

    .字符型(串数据/文本型/二进制)

    char和varchar类型
    说明:用来保存MySql中较短的字符串

    分类
    较短的文本:
    cahr varchar
    特点:

    备注:                
    固定的用char如性别只有男或女
    姓名用varchar 不同民族的姓名长度不一样
    char(M)可以省略M,默认为1
    varchar不可以省略
    
    较长的文本:
    text
    blob(较大的二进制)
    位类型

    Binary和varbinary类型(较短的二进制)
    说明:类是与char与varchar,不同的是它们包含了二进制字符串不包
    含非二进制字符串。
    Enum类型(一娜姆) 说明:又称为枚举类型哦,要求插入的值必须属于列表中指定的值之一。
    其他: binary和varbinary用于保存较短的二进制 enum用于保存枚举 set用于保存集合
    建表
    CREATE TABLE tab_char(
    c1 ENUM('E','S','W','N')
                         );
    #东—East,西—West,南—South,北—North 
    插入数据
    INSERT INTO tab_char VALUES('w');
    INSERT INTO tab_char VALUES('W');
    INSERT INTO tab_char VALUES('N');
     Affected rows: 3  Found rows: 0  Warnings: 0  Duration for 3 queries:
    0.015 sec.
    受影响的行:3 找到的行:0 警告:3 个查询的 0 持续时间:0.015 秒。

    性别(男女)与季节(春夏秋冬)也可以考虑使用枚举类型。
    
    Set类型
    说明:和Enum类型类似,里面可以保存0~64个成员。
    和Enum类型最大的区别是:
    SET类型可以选取多个成员,
    而Enum只能选一个,根据成员个数不同,存储所占的字节也不同。
    #建表测试
    CREATE TABLE tab_set(
            s1 SET('c','x','q','d')
            );
    DESC tab_set;

    #插入数据,初夏秋冬
    INSERT INTO tab_set VALUES('c');
    INSERT INTO tab_set VALUES('c,x');
    INSERT INTO tab_set VALUES('c,q,d');
    SELECT * FROM tab_set;
    #插入成功,不区分大小写,大写插入,小写入库

    四. 日期

    1.Timestamp支持的时间范围较小,
    取值范围:1970010108001--2038年的某个时间
    Datetime的取值范围:1000-1-1--9999-12-31
    2.timestamp和实际时区有关,更能反映实际的日期,
    而datetime则只能反映出插入时的当地时区。
    3.timestamp的属性收Mysql版本和SQLMode的影响很大。
    
    建表
    CREATE TABLE tab_date(
        t1 DATETIME,
        t2 TIMESTAMP
                    );
    插入数据
    DESC tab_date;

    INSERT INTO tab_date VALUES(NOW(),NOW());
    SELECT * FROM tab_date;

    查看时区
    SHOW VARIABLES LIKE 'time_zone';
    本地时区
    SET time_zone='+8:00';

    修改时区,改为东9区
    SET time_zone='+9:00';

    再次查询
    SELECT * FROM tab_date;

    小结:
    分类:
    date只保存日期
    time只保存时间
    year只保存年
    datetime保存日期+时间
    timestamp保存日期+时间
    特点:
    字节          范围    时区等影响
    datetime     8      1000-9999    不受
    timestamp    4      1970-2038

       既然都看到这里了,希望你能有所收获。要不也动动你的小手手也练习一下???

  • 相关阅读:
    ny 58 最少步数 (BFS)
    Oracle 参数文件
    Oracle 密码文件
    Oracle 表空间与数据文件
    Oracle 回滚(ROLLBACK)和撤销(UNDO)
    Oracle 控制文件(CONTROLFILE)
    Oracle 联机重做日志文件(ONLINE LOG FILE)
    Oracle 常用目录结构(10g)
    Oracle 归档日志
    instance_name,db_name,oracle_sid之间的关系
  • 原文地址:https://www.cnblogs.com/jxearlier/p/13466782.html
Copyright © 2011-2022 走看看