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>










原文地址:https://www.cnblogs.com/ios9/p/13406479.html