• Mysql8_数据库的数据类型和运算符





    一:MySql 数据类型介绍


    mysql 支持多种数据类型。主要有数值类型、日期/时间类型  和 字符类型

    •   数值类型:    整数类型:  tinyint 、 smallint、mediumint、int 、 bigint

                                  浮点小数数据类型: float   double 

                                 定点小数类型: decimal

    •   日期/时间类型: year 、time、date、datetime、timestamp
    •   字符串类型: char、varchar、binary、varbinary、blob 、 text、enum 、set  。字符串又分为 文本类型字符串和二进制字符串。




    1:整数类型


                    image


    --【例5.1】创建表tmp1,其中字段x、y、z、m、n数据类型依次为TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,SQL语句如下:
    mysql> CREATE TABLE tmp1 ( x TINYINT,  y SMALLINT,  z MEDIUMINT,  m INT,  n BIGINT );
    ERROR 2006 (HY000): MySQL server has gone away
    No connection. Trying to reconnect...
    Connection id:    15
    Current database: test_db
    
    Query OK, 0 rows affected (1.23 sec)
    
    mysql> DESC tmp1;
    +-------+-----------+------+-----+---------+-------+
    | Field | Type      | Null | Key | Default | Extra |
    +-------+-----------+------+-----+---------+-------+
    | x     | tinyint   | YES  |     | NULL    |       |
    | y     | smallint  | YES  |     | NULL    |       |
    | z     | mediumint | YES  |     | NULL    |       |
    | m     | int       | YES  |     | NULL    |       |
    | n     | bigint    | YES  |     | NULL    |       |
    +-------+-----------+------+-----+---------+-------+
    5 rows in set (0.01 sec)
    
    mysql>
    


    2:浮点数类型和定点数类型

    image


    ---【例5.2】创建表tmp2,其中字段x、y、z数据类型依次为FLOAT(5,1)、DOUBLE(5,1)和DECIMAL(5,1),向表中插入数据5.12、5.15和5.123,SQL语句如下:
    mysql> CREATE TABLE tmp2 ( x FLOAT(5,1),  y DOUBLE(5,1),  z DECIMAL(5,1) );
    Query OK, 0 rows affected, 2 warnings (0.33 sec)
    --向表中插入数据:
    mysql> INSERT INTO tmp2 VALUES(5.12, 5.15, 5.123);
    Query OK, 1 row affected, 1 warning (0.41 sec)
    
    mysql> SHOW WARNINGS;
    +-------+------+----------------------------------------+
    | Level | Code | Message                                |
    +-------+------+----------------------------------------+
    | Note  | 1265 | Data truncated for column 'z' at row 1 |
    +-------+------+----------------------------------------+
    1 row in set (0.00 sec)
    
    mysql>
    
    mysql> select *  from tmp2;
    +------+------+------+
    | x    | y    | z    |
    +------+------+------+
    |  5.1 |  5.2 |  5.1 |
    +------+------+------+
    1 row in set (0.03 sec)
    


    3:日期与时间类型



    image


    3-1:year 

    YEAR类型是一个单字节类型,用于表示年,在存储时只需要1字节。可以使用各种格式指定YEAR值,如下所示:
    (1)以4位字符串或者4位数字格式表示的YEAR,范围为“1901’~‘2155'。输入格式为“YYYY'或者YYYY。例如,输入‘2010’ 或2010,插入到数据库的值均为2010。
    (2)以2位字符串格式表示的YEAR,范围为‘00’到‘99’。‘00’~‘69’和70 ~‘99’范围的值分别被转换为2000~ 2069和1970~1999范围的YEAR值。‘0'与00°的相同。插入超过取值范围的值将被转换为2000。
    (3)以2位数字表示的YEAR,范围为1~99。1~69和70~ 99范围的值分别被转换为2001~2069和1970-1999范围的YEAR值。注意:在这里0值将被转换为0000而不是2000。

    提示:两位整数范围与两位字符串范围稍有不同。例如:插入2000年,读者可能会使用数字格式的0表示YEAR,实际上,插入数据库的值为000,而不是所希望的2000.只有使用字符串格式的"'或'00',才可以被正确地解释为2000。非法YEAR值将被转换为0000
    --【例5.3】创建数据表tmp3,定义数据类型为YEAR的字段y,向表中插入值2010,’2010’,’2166’,SQL语句如下: 首先创建表tmp3:
    mysql> CREATE TABLE tmp3(  y YEAR );
    Query OK, 0 rows affected (0.23 sec)
    --向表中插入数据:
    mysql> INSERT INTO tmp3 values(2010),('2010');
    Query OK, 2 rows affected (0.03 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    --再次向表中插入数据:
    mysql> INSERT INTO tmp3 values ('2166');
    ERROR 1264 (22003): Out of range value for column 'y' at row 1
    mysql> SHOW WARNINGS;
    +-------+------+--------------------------------------------+
    | Level | Code | Message                                    |
    +-------+------+--------------------------------------------+
    | Error | 1264 | Out of range value for column 'y' at row 1 |
    +-------+------+--------------------------------------------+
    1 row in set (0.00 sec)
    
    mysql> SELECT * FROM tmp3;
    +------+
    | y    |
    +------+
    | 2010 |
    | 2010 |
    +------+
    2 rows in set (0.00 sec)
    --【例5.4】向tmp3表中y字段插入2位字符串表示的YEAR值,分别为’0’、’00’、’77’和’10’,SQL语句如下:
    mysql>
    ---首先删除表中的数据:
    mysql> DELETE FROM tmp3;
    Query OK, 2 rows affected (0.10 sec)
    ---向表中插入数据:
    mysql> INSERT INTO tmp3 values('0'),('00'),('77'),('10');
    Query OK, 4 rows affected (0.03 sec)
    Records: 4  Duplicates: 0  Warnings: 0
    --查看结果:
    mysql> SELECT * FROM tmp3;
    +------+
    | y    |
    +------+
    | 2000 |
    | 2000 |
    | 1977 |
    | 2010 |
    +------+
    4 rows in set (0.00 sec)
    
    mysql>
    
    ---【例5.5】向tmp3表中y字段插入2位数字表示表示的YEAR值,分别为0、78和11,SQL语句如下:
    ---首先删除表中的数据:
    
    mysql> DELETE FROM tmp3;
    Query OK, 4 rows affected (0.00 sec)
    ----向表中插入数据:
    mysql> INSERT INTO tmp3 values(0),(78),(11);
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Duplicates: 0  Warnings: 0
    ----查看结果:
    mysql> SELECT * FROM tmp3;
    +------+
    | y    |
    +------+
    | 0000 |
    | 1978 |
    | 2011 |
    +------+
    3 rows in set (0.00 sec)
    
    mysql>
    
    
    
    







  • 相关阅读:
    汇编讲解(上)--逆向开发
    两数之和 II
    解析器模式--设计模式
    访问者模式--设计模式
    命令模式--设计模式
    ccf-201512-2 消除类游戏
    ccf-201503-2 数字排序
    移动端兼容和适配问题
    ccf-201409-2 画图
    ccf-201409-3 字符串匹配
  • 原文地址:https://www.cnblogs.com/ios9/p/13406479.html
Copyright © 2020-2023  润新知