zoukankan      html  css  js  c++  java
  • MySQL数据库之数据类型

    MySQL中定义数据字段的类型对数据库的优化非常重要

    MySQL支持多种类型,大致可分为数值、日期/时间和字符串(字符)类型。

           数值:

      1.整数(TINYINT SMALLINT MEDIUMINT INT BIGINT)

      tinyint[(m)] [unsigned] [zerofill](小整数,用于保存一定范围内的整数)

       有符号:-127~128  

            无符号:0~255

     int[(m)][unsigned][zerofill](整数,用于保存一定范围内的整数)
     有符号:-2147483648 ~ 2147483647
     无符号:0 ~ 4294967295
     
      bigint[(m)][unsigned][zerofill](大整数,用于保存一定范围内的整数)
     有符号:(-9233372036854775808,9223372036854775807)
     2.小数类型
    
    
     

        日期:(DATETIME、DATE、TIMESTAMP、TIME和YEAR)

     

      每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

    在实际应用的很多场景中,MySQL的这两种日期类型都能够满足我们的需要,存储精度都为秒,但在某些情况下,会展现出他们各自的优劣。下面就来总结一下两种日期类型的区别。
    
    1.DATETIME的日期范围是1001——9999年,TIMESTAMP的时间范围是1970——2038年。
    
    2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也依赖于时区。在mysql服务器,操作系统以及客户端连接都有时区的设置。
    
    3.DATETIME使用8字节的存储空间,TIMESTAMP的存储空间为4字节。因此,TIMESTAMP比DATETIME的空间利用率更高。
    
    4.DATETIME的默认值为null;TIMESTAMP的字段默认不为空(not null),默认值为当前时间(CURRENT_TIMESTAMP),如果不做特殊处理,并且update语句中没有指定该列的更新值,则默认更新为当前时间。
    
    datetime与timestamp的区别

      字符串

      

      注意:

    1. 单独插入时间时,需要以字符串的形式,按照对应的格式插入
    2. 插入年份时,尽量使用4位值
    3. 插入两位年份时,<=69,以20开头,比如50,  结果2050      
                    >=70,以19开头,比如71,结果1971
    MariaDB [db1]> create table t12(y year);
    MariaDB [db1]> insert into t12 values  
        -> (50),
        -> (71);
    MariaDB [db1]> select * from t12;
    +------+
    | y    |
    +------+
    | 2050 |
    | 1971 |
    +------+

     枚举类型与集合类型

       字段的值只能在给定范围中选择,如单选框,多选框
       enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female
       set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

     #枚举类型
    CREATE TABLE shirts (
                        name VARCHAR(40),
                        size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
                    );
                    INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'),('polo shirt','small');
    
    #集合类型
     CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
                    INSERT INTO myset (col) VALUES ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');

      

  • 相关阅读:
    点图换说明文字
    酷酷的图片预览带加载效果
    阿里巴巴右侧6滑块VS雅虎右侧6滑块VS自定义6滑块
    绝对经典的滑轮新闻显示(javascript+css)
    一个城市、日历选择功能
    比较两个日期大小
    我对委托/事件的理解
    今天写信息采集小程序时实现程序中同时只允许5个线程运行
    Web页面接受客户端POST数据,并且返回数据
    项目中用到的一个树控件[经过修改]
  • 原文地址:https://www.cnblogs.com/sxh-myblogs/p/7485611.html
Copyright © 2011-2022 走看看