zoukankan      html  css  js  c++  java
  • Mysql---数据类型

    一.整数类型

      1.包括TINYINT SMALLINT MEDIUMINT INT BIGINT,常用的主要为int 及tinyint

      2.tinyint

        tinyint【(m)】 【unsigned】 【zerofill】 默认有符号,m可以不写,默认为tinyint(4)

        小整数,保存数据范围如下:

        有符号:-128~127

        无符号:0~255

        PS: MySQL中无布尔值,使用tinyint(1)构造

     3.int
        int【(m)】 【unsigned】 【zerofill】  默认有符号,m可以不写,默认为int(11)
        整数,保存数据范围如下:
        有符号:-2147483648 ~ 2147483647
        无符号:0 ~ 4294967295
     4.整型的m为显示宽度,其他类型的为存储宽度,zerofill为补位符,当实际位数比m小时,可选用zerofill,即用0来补位。

    二.浮点型    (M,D)------(总长,小数点后位数)

      1.浮点型

        a.float  单精度  随小数点位增加而不准确   (M,D)------(255,30)

        b.double  双精度  随小数点位增加而不准确   (M,D)------(255,30)

      2.定点型 decimal   准确的小数(M,D)------(65,30)   

    # 分别对三张表插入相应的记录
    mysql> insert into t5 values(1.1111111111111111111111111111111);#小数点后31个1
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into t6 values(1.1111111111111111111111111111111);
    Query OK, 1 row affected (0.01 sec)
    
    mysql> insert into t7 values(1.1111111111111111111111111111111);
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    # 查询结果
    mysql> select * from t5; #随着小数的增多,精度开始不准确
    +----------------------------------+
    | x                                |
    +----------------------------------+
    | 1.111111164093017600000000000000 |
    +----------------------------------+
    1 row in set (0.00 sec)
    
    mysql> select * from t6; #精度比float要准确点,但随着小数的增多,同样变得不准确
    +----------------------------------+
    | x                                |
    +----------------------------------+
    | 1.111111111111111200000000000000 |
    +----------------------------------+
    1 row in set (0.00 sec)
    
    mysql> select * from t7; #精度始终准确,d为30,于是只留了30位小数
    +----------------------------------+
    | x                                |
    +----------------------------------+
    | 1.111111111111111111111111111111 |
    +----------------------------------+
    1 row in set (0.00 sec)
    三种类型精度验证

    三.日期类型

      常用:datetime date time year

    YEAR
                YYYY(1901/2155)
    
            DATE
                YYYY-MM-DD(1000-01-01/9999-12-31)
    
            TIME
                HH:MM:SS('-838:59:59'/'838:59:59')
    
            DATETIME
    
                YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59    Y)
    
            TIMESTAMP
    
                YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)
    日期类型语法

      1.year  无论year指定何种宽度,最后都默认是year(4)

      2.mysql自带的now()函数,获取当前类型指定的时间 

      3.datetime与timestamp的区别 

    在实际应用的很多场景中,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语句中没有指定该列的更新值,则默认更新为当前时间。
    View Code

      4.注意事项

        a. 单独插入时间时,需要以字符串的形式,按照对应的格式插入

       b.插入年份时,尽量使用4位值

        c.插入两位年份时,<=69,以20开头,比如50,  结果2050      
                           >=70,以19开头,比如71,结果197

    四.字符类型

      1.char 定长,存储速度快,浪费空间

      让char类型显示字符长度:

        设置当前:SET sql_mode=PAD_CHAR_TO_FULL_LENGTH;

        设置当局:SET global sql_mode=PAD_CHAR_TO_FULL_LENGTH

      2.varchar 变长,存储速度慢,节省空间

      3.效率:char>varchar>text

      4.两个方法

        a.length()  查看字节数

        b.char_length()  查看字符数

    五.枚举和集合

      1.枚举  enum  单选  只能在给定的范围内选一个---多选一

      2.集合 set  多选  可以在给定的范围内选一个或选多个---多选一或多选多

    mysql> create table consumer(
        -> id int,
        -> name varchar(50),
        -> sex enum('male','female','other'),
        -> level enum('vip1','vip2','vip3','vip4'),#在指定范围内,多选一
        -> fav set('play','music','read','study') #在指定范围内,多选多
        -> );
    Query OK, 0 rows affected (0.03 sec)
    
    
    mysql> insert into consumer values
        -> (1,'赵云','male','vip2','read,study'),
        -> (2,'赵云2','other','vip4','play');
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from consumer;
    +------+---------+-------+-------+------------+
    | id   | name    | sex   | level | fav        |
    +------+---------+-------+-------+------------+
    |    1 | 赵云    | male  | vip2  | read,study |
    |    2 | 赵云2   | other | vip4  | play       |
    +------+---------+-------+-------+------------+
    2 rows in set (0.00 sec)
    View Code

      

  • 相关阅读:
    辣条君写爬虫1【贝壳房价爬取】
    如何在 Windows 上创建一个新的 GPG key
    Protocol Buffers 开发者指南
    Docsify 的边栏目录如何设置
    Docker 容器的网络
    Discourse 如何添加 Google Analytics GA4 代码
    Docker 引擎
    Docker 引擎
    Docker 引擎
    Docker 引擎概述
  • 原文地址:https://www.cnblogs.com/wdbgqq/p/9555050.html
Copyright © 2011-2022 走看看