zoukankan      html  css  js  c++  java
  • MySQL进阶12-- 数据类型介绍: 数值型/字符型/日期型-- 正负溢出保护/枚举型/set型/时间戳

    /*进阶12
    SQL 数据类型介绍
    数值型:
        整数:  Tinyint(1b) < mediumint(3b)<smallint(2b) <int(4b) <bigint(8b)
        (        默认有符号; 
            1/无符号类型:int unsigned; 正数轴长度加一倍;
            2/如果插入的数据超出了规定的返回,则返回临界值
                     3/如果不设置长度,会有默认的长度;长度代表了显示的最大宽度,如果不够会用0在左边,但必须搭配zerofill填充!
        --------------------)
        
        小数:
    1)....(M,D): MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M表示该值的总共长度,D表示小数点后面的长度,M和D又称为精度和标度,
                   如float(7,4)的 可显示为-999.9999,MySQL保存值时进行四舍五入,如果插入999.00009,则结果为999.0001。
                   超出长度存储会抛异常: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range value for column. (开发环境: mysql版本5.7.28) 定点数: dec(M,D),decimal(M,D), 1.默认为decimal(10,0) 2.精度更高,比如货币运算等运算则考虑使用 浮点数: 1.float(M,D) ,浮点数类型,4 个字节; 2.double(M,D) ,8个字节 枚举型: enum(...........);不区分大小写; set 类型 : 不区分大小写,set类型最多里面可以保存0~64 个成员; ------------------- 字符型: 较短的文本:char(M:0--255) : (M可以省略,默认为1)可插入字符数上限 ,效率高,空间开支大 varchar(M:0--65535) : (M不可以省略)可变的字符数长度 ,效率低,空间相对低 较长的文本:text / blob(较长的二进制数据) 其他: binary 和 varbinary用于保存较短的二进制; enum 用于保存枚举 set用于保存集合 日期型: date : 4b,仅保存年月日: 1000-01-01 , 9999-12-31 time : 仅保存时分秒 datetime : 8b ,不受时区影响, 最小值:1000-01-01 00:00:00 ,最大值:9999-12-31 23:59:59 timestamp(时间戳): 4b, 随时区改变而改变, 1970年-->2038年
    */
        #1 溢出保护
    DROP TABLE IF EXISTS tab_int;
    CREATE TABLE tab_int(
        t1 INT,
        t2 INT UNSIGNED
    
    );
    INSERT    INTO tab_int VALUES(100000000000000,-100);  #2147483647,0
    DESC tab_int;
    SELECT * FROM tab_int;
          #2 设置位数,0填充宽度
    CREATE TABLE tab2_int(
        t1 INT(7) ZEROFILL,
        t2 INT(7) UNSIGNED ZEROFILL
    
    );
    INSERT    INTO tab2_int VALUES(123,123);  # 0000123  , 0000123
    DESC tab2_int;
    SELECT * FROM tab2_int;
        #3  测试溢出
    CREATE TABLE tab_float(
        f1 FLOAT(5,2),
        f2 DOUBLE(5,2),
        f3 DECIMAL(5,2)
    );
    
    SELECT * FROM tab_float;
    INSERT    INTO tab_float VALUE(123.456,123.4444,123.55);    #123.46,123.44,123.55
    INSERT    INTO tab_float VALUE(123.456,123.4444,123456.55); #123.46,123.44,999.99
        
        #4 测试enum 枚举型
    CREATE TABLE tab_char(
        row1 ENUM('a','b','c','d')
    );
    INSERT INTO tab_char VALUES('a');   #a
    INSERT INTO tab_char VALUES('M');   #' '
    INSERT INTO tab_char VALUES('A');   #'a'
    SELECT * FROM tab_char;
    
           #5 测试set 集合类型
    DROP TABLE  IF EXISTS tab_set;
    CREATE TABLE tab_set(
        row1 SET('a','b','c','d')
    );
    INSERT INTO tab_set VALUES('a,c,d');   #a
    
    SELECT * FROM tab_set;
    
        #四:日期型
        
    CREATE TABLE tab_date(
        t1 DATETIME,
        t2 TIMESTAMP
    );
    INSERT INTO tab_date VALUES(NOW(),NOW());  #2018-10-29 15:13:24,2018-10-29 15:13:24
    SELECT * FROM tab_date;
    
    SHOW    VARIABLES LIKE 'time_zone';
    
    SET time_zone='+9:00';   # 2018-10-29 15:13:24 ,2018-10-29 16:13:24
  • 相关阅读:
    DOS批处理高级教程(三) : 批处理变量和set命令详解
    DOS批处理高级教程(二) DOS循环: 语句命令FOR、IF
    DOS批处理高级教程(一) 批处理基础
    win7下部署个人网站教程
    Ubuntu安装后常见部署
    python3 生成钻石展位后台报表记录
    The Zen of Python
    4刀最多切割一个正方体为多少部分
    Python基础讲义第二弹面向对象编程(淘宝平台模拟为例)
    python基础讲义第一弹
  • 原文地址:https://www.cnblogs.com/zhazhaacmer/p/9870834.html
Copyright © 2011-2022 走看看