Mysql8_数据库的数据类型和运算符
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* @author Alan
* @Email no008@foxmail.com
正文
一:MySql 数据类型介绍
mysql 支持多种数据类型。主要有数值类型、日期/时间类型 和 字符类型。
- 数值类型: 整数类型: tinyint 、 smallint、mediumint、int 、 bigint
浮点小数数据类型: float double
定点小数类型: decimal
- 日期/时间类型: year 、time、date、datetime、timestamp
- 字符串类型: char、varchar、binary、varbinary、blob 、 text、enum 、set 。字符串又分为 文本类型字符串和二进制字符串。
1:整数类型
--【例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:浮点数类型和定点数类型
---【例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:日期与时间类型
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>
学问:纸上得来终觉浅,绝知此事要躬行
为事:工欲善其事,必先利其器。
态度:道阻且长,行则将至;行而不辍,未来可期
.....................................................................
------- 桃之夭夭,灼灼其华。之子于归,宜其室家。 ---------------
------- 桃之夭夭,有蕡其实。之子于归,宜其家室。 ---------------
------- 桃之夭夭,其叶蓁蓁。之子于归,宜其家人。 ---------------
=====================================================================
* 博客文章部分截图及内容来自于学习的书本及相应培训课程以及网络其他博客,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。 * @author Alan -liu * @Email no008@foxmail.com
转载请标注出处! ✧*꧁一品堂.技术学习笔记꧂*✧. ---> https://www.cnblogs.com/ios9/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?