iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL数据类型有什么
  • 566
分享到

MySQL数据类型有什么

2023-06-25 13:06:00 566人浏览 泡泡鱼
摘要

本篇内容介绍了“MySQL数据类型有什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、数值类型1.1、数值类型分类严格数值类型(INTE

本篇内容介绍了“MySQL数据类型有什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1、数值类型

1.1、数值类型分类

  • 严格数值类型(INTEGERSMALLINTDECIMAL NUMERIC

  • 近似数值数据类型(FLOATREAL DOUBLE PRECISioN

MySQL中数值类型:

整数类型字节 最小值最大值

TINYINT

1

有符号-128

无符号 0

有符号 127

无符号 255

SMALLINT

有符号-32768

无符号 0

有符号 32767

无符号 65535 

MEDIUMINT 

有符号-8388608

无符号 0

有符号 8388607

无符号 1677215

INT、INTEGER

4

有符号-2147483648

无符号 0 

有符号 2147483647

无符号 4294967295

BIGINT

8

有符号-9223372036854775808

无符号 0

有符号 9223372036854775807

无符号 18446744073709551615

浮点数类型

字节

最小值最大值

FLOAT 

±1.175494351E-38 

±3.402823466E+38 

DOUBLE 

8

±2.2250738585072014E-308 

±1.7976931348623157E+308 

定点数类型 

字节描述

DEC(M,D),

DECIMAL(M,D) 

M+2

最大取值范围与 DOUBLE 相同,给定 DECIMAL 的有效取值范围由 M 和 D

决定

位类型 

字节

最小值最大值

BIT(M)

1~8 

BIT(1)

BIT(64) 

1.1.1、浮点数

浮点数如果不写精度和标度,则会按照实际精度值显示,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值 decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。

1.1.2、位类型

BIT(位)类型:范围从1-64,如果不写,默认为1位,对于此字段,直接使用select命令将不会看到结果,可以用bin()(显示为二进制格式)或者hex()(显示为16进制格式)函数进行读取

例:

Mysql> desc t2;+-------+--------+------+-----+---------+-------+| Field | Type   | Null | Key | Default | Extra |+-------+--------+------+-----+---------+-------+| id    | bit(1) | YES  |     | NULL    |       |+-------+--------+------+-----+---------+-------+1 row in set (0.00 sec)mysql> insert into t2 values(1);Query OK, 1 row affected (0.05 sec)mysql> select * from t2;+------+| id   |+------+|     |+------+1 row in set (0.00 sec)mysql> select bin(id),hex(id) from t2;+---------+---------+| bin(id) | hex(id) |+---------+---------+| 1       | 1       |+---------+---------+1 row in set (0.03 sec)

bit类型数据插入时,首先将值转换为二进制,如果允许,则进行插入,如果位数小于实际定义的位数,则插入失败。

例:如果在刚刚的那张表中插入2,实际转换为二进制为10,超出了bit(1)的实际定义位数,就会报异常,将id定义为bit(2),在插入,就会成功

mysql> insert into t2 values(2);ERROR 1406 (22001): Data too long for column 'id' at row 1mysql> alter table t2 modify id bit(2);Query OK, 1 row affected (0.67 sec)Records: 1  Duplicates: 0  Warnings: 0mysql> insert into t2 values(2);Query OK, 1 row affected (0.03 sec)mysql> select bin(id),hex(id) from t2;+---------+---------+| bin(id) | hex(id) |+---------+---------+| 1       | 1       || 10      | 2       |+---------+---------+2 rows in set (0.00 sec)
1.1.3、时间日期类型
1.1.3、时间日期类型
日期和时间类型字节最小值最大值

DATE 

1000-01-01 

9999-12-31 

DATETIME

1000-01-01 00:00:00

9999-12-31 23:59:59 

TIMESTAMP

4

19700101080001 

2038 年的某个时刻 

TIME 

-838:59:59

838:59:59 

YEAR

11901

2155 

  • DATE:用来表示年月日

  • DATETIME:用来表示年月日时分秒(支持插入格式:2007-9-3 12:10:10'、'2007/9/3 12+10+10'、'20070903121010'、20070903121010 等)

  • TIME:只用来表示时分秒

  • TIMESTAMP:经常插入或者更新日期为当前系统时间

  • YEAR:表示年

例1:创建时间表(dt),字段分别为 date、time、datetime 三种日期类型,并插入数值,查看显示结果

mysql> create table dt(d date,t time,dt datetime);Query OK, 0 rows affected (0.23 sec)mysql> insert into dt values(now(),now(),now());Query OK, 1 row affected, 1 warning (0.05 sec)mysql> select * from dt;+------------+----------+---------------------+| d          | t        | dt                  |+------------+----------+---------------------+| 2021-05-13 | 10:14:07 | 2021-05-13 10:14:07 |+------------+----------+---------------------+1 row in set (0.00 sec)

 例2:创建测试表t,字段id1为TIMESTAMP类型,插入空值,并显示

mysql> create table t(id1 timestamp);Query OK, 0 rows affected (0.22 sec)mysql> insert into t values(null);Query OK, 1 row affected (0.05 sec)mysql> select * from t;+---------------------+| id1                 |+---------------------+| 2021-05-13 10:18:05 |+---------------------+1 row in set (0.00 sec)

可以发现,系统给 id1 自动创建了默认值 CURRENT_TIMESTAMP(系统日期)。(注意,MySQL只给表中的第一个TIMESTAMP字段设置默认值为系统日期,如果有第二个TIMESTAMP类型,则默认值设置为0值)

例3:解释如上说明

mysql> alter table t add column id2 timestamp;Query OK, 0 rows affected (0.48 sec)Records: 0  Duplicates: 0  Warnings: 0mysql> show create table t \G;*************************** 1. row ***************************       Table: tCreate Table: CREATE TABLE `t` (  `id1` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `id2` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00') ENGINE=InnoDB DEFAULT CHARSET=latin11 row in set (0.00 sec)ERROR:No query specified
1.1.4、字符串类型
字符串类型字节描述及存储需求

CHAR(M) 

M

M 为 0~255 之间的整数

VARCHAR(M)

 

M 为 0~65535 之间的整数,值的长度+1 个字节

TINYBLOB

 

允许长度 0~255 字节,值的长度+1 个字节

BLOB 

 

允许长度 0~65535 字节,值的长度+2 个字节

MEDIUMBLOB

 

允许长度 0~167772150 字节,值的长度+3 个字节

LONGBLOB

 

允许长度 0~4294967295 字节,值的长度+4 个字节

TINYTEXT

 

允许长度 0~255 字节,值的长度+2 个字节 

TEXT 

 

允许长度 0~65535 字节,值的长度+2 个字节 

MEDIUMTEXT 

 

允许长度 0~167772150 字节,值的长度+3 个字节

LONGTEXT 

 

允许长度 0~4294967295 字节,值的长度+4 个字节

VARBINARY(M)

 

允许长度 0~M 个字节的变长字节字符串,值的长度+1 个字节

BINARY(M) 

M

允许长度 0~M 个字节的定长字节字符串 

  • CHAR:固定长度,在检索时,会删除尾部的空格

  • VARCHAR:可变长字符串,在检索时,会保留这些空格

例:

mysql> create table varc(v varchar(4),c char(4));Query OK, 0 rows affected (0.20 sec)mysql> insert into varc values('abc ','abc ');Query OK, 1 row affected (0.03 sec)mysql> select length(v),length(c) from varc;+-----------+-----------+| length(v) | length(c) |+-----------+-----------+|         4 |         3 |+-----------+-----------+1 row in set (0.01 sec)mysql> select concat(v,'+'),concat(c,'+') from varc;+---------------+---------------+| concat(v,'+') | concat(c,'+') |+---------------+---------------+| abc +         | abc+          |+---------------+---------------+1 row in set (0.00 sec)
  •  BINARY:类似于char,但他是二进制字符串

  • VARBINARY:类似于varchar,单他是存储二进制字符串

例:

mysql> create table bina(c binary(3));Query OK, 0 rows affected (0.22 sec)mysql> insert into t set c='a';ERROR 1054 (42S22): Unknown column 'c' in 'field list'mysql> insert into bina set c='a';Query OK, 1 row affected (0.05 sec)mysql> select *,hex(c),c='a',c='a\0',c='a\0\0' from bina;+------+--------+-------+---------+-----------+| c    | hex(c) | c='a' | c='a\0' | c='a\0\0' |+------+--------+-------+---------+-----------+| a    | 610000 |     0 |       0 |         1 |+------+--------+-------+---------+-----------+1 row in set (0.00 sec)

可以发现,当保存 BINARY 值时,在值的最后通过填充“0x00”(零字节)以达到指定的字段定义长度。从上例中看出,对于一个 BINARY(3)列,当插入时'a'变为'a\0\0'

1.1.5、ENUM 类型

ENUM:对 1~255 个成员的枚举需要 1 个字节存储;对于 255~65535 个成员,需要 2 个字节存储。

例:

mysql> create table gend(gender enum('M','F'));Query OK, 0 rows affected (0.20 sec)mysql> insert into gend values('M'),('F'),('1'),(null);Query OK, 4 rows affected (0.03 sec)Records: 4  Duplicates: 0  Warnings: 0mysql> select * from gend;+--------+| gender |+--------+| M      || F      || M      || NULL   |+--------+4 rows in set (0.00 sec)

由此可以看出,枚举类型的插入值得时候,是忽略大小写的,初始下标从1开始;查询的时候会转换为大写,也可以插入空(null)

1.1.6、SET类型

SET:字符串对象,里面可以包含64个成员,成员不同,存储上也有所不同

1~8 成员的集合,占 1 个字节。
9~16 成员的集合,占 2 个字节。
17~24 成员的集合,占 3 个字节。
25~32 成员的集合,占 4 个字节。
33~64 成员的集合,占 8 个字节。
SetEMUN区别在于,Set一次可以选则多个成员,而ENUM则只能选择一个

例:

mysql> create table st(col set('a','b','c','d'));Query OK, 0 rows affected (0.20 sec)mysql> insert into st values('a,b'),('a,d,a'),('a,c'),('a');Query OK, 4 rows affected (0.03 sec)Records: 4  Duplicates: 0  Warnings: 0mysql> insert into st values('f');ERROR 1265 (01000): Data truncated for column 'col' at row 1mysql> insert into st values(null);Query OK, 1 row affected (0.03 sec)mysql> select * from st;+------+| col  |+------+| a,b  || a,d  || a,c  || a    || NULL |+------+5 rows in set (0.00 sec)

由此可以看出,set是可以插入多个成员的,也可以插入null,插入不存在的定义列时,会报异常插入失败

“MySQL数据类型有什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL数据类型有什么

本文链接: https://www.lsjlt.com/news/305195.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL数据类型有什么
    本篇内容介绍了“MySQL数据类型有什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、数值类型1.1、数值类型分类严格数值类型(INTE...
    99+
    2023-06-25
  • mysql中有什么数据类型
    这篇文章将为大家详细讲解有关mysql中有什么数据类型,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql数据类型有:1、数值类型;2、日期和时间类型;3、字符串类型...
    99+
    2024-04-02
  • c#有什么数据类型
    c# 提供多种数据类型,分为值类型(存储实际值,如整型、浮点型、字符型、布尔型、枚举)和引用类型(存储数据引用,如类、接口、数组、字符串、对象)。选择数据类型时,应考虑数据的范围、精度和...
    99+
    2024-04-04
    c#
  • mysql数据库是什么类型
    mysql 是一款开源、跨平台的关系型数据库管理系统 (rdbms)。它提供以下主要特性:开源:免费供任何人使用和修改。跨平台:可在各种操作系统上运行。高性能:快速处理大量数据。可靠性:...
    99+
    2024-04-14
    mysql linux macos 移动应用程序
  • mysql大数据用什么类型
    mysql大数据用整数类型、字符串类型、浮点型、日期和时间类型、尔类型、二进制类型和枚举类型等。1、整数类型,整数类型包括TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT等;2、字符串类型,广泛用于存储大量的字符串...
    99+
    2023-08-08
  • mysql是什么类型数据库
    mysql 是一款关系型数据库管理系统 (rdbms),它以开源、跨平台、高性能和广泛使用而著称。 MySQL 是一款什么类型的数据库? MySQL 是一款关系型数据库管理系统 (RD...
    99+
    2024-04-02
  • MySQL支持什么数据类型
    这篇文章给大家分享的是有关MySQL支持什么数据类型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MySQL 数据类型MySQL中定义数据字段的类型对你数据库的优化是非...
    99+
    2024-04-02
  • MySQL与Oracle的数据类型有什么区别
    这篇文章主要为大家展示了“MySQL与Oracle的数据类型有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“MySQL与Oracle的数据类型有什么区别...
    99+
    2024-04-02
  • 数据库中有什么数据类型
    小编给大家分享一下数据库中有什么数据类型,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!数据库的常用数据类型有哪些?一、 整数数据类型:整数数据类型是最常用的数据类型之一。  1、...
    99+
    2024-04-02
  • MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?
    两种数据类型都以“YYYY-MM-DD HH:MM:SS”格式存储数据,并包含日期和时间。尽管有这些相似之处,但它们还是有以下区别 -范围 - 日期时间数据类型支持 1000 之间的日期和时间-01-01 00:00:00 和 9999-1...
    99+
    2023-10-22
  • java中有什么数据类型
    这篇文章主要介绍了java中有什么数据类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Java的基本数据类型有8种,分别是:byte(位)、short(短整数)、int(整...
    99+
    2023-06-14
  • mysql有哪些数据类型
    这篇文章给大家介绍mysql有哪些数据类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、数值类型数值是诸如32 或153.4 这样的值。mysql支持科学表示法,科学表示法由整数或浮点数后跟“e”或“E”、一个符号...
    99+
    2023-06-14
  • mysql 有哪些数据类型
    本篇文章给大家分享的是有关mysql 有哪些数据类型,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。tinyint , smallint ,me...
    99+
    2024-04-02
  • mysql数据类型有哪些
    这篇文章主要介绍mysql数据类型有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先要了解其支持的数据类型。mysql支持所有标准的sql数据类型,包括三类:数值型,日期型,字...
    99+
    2024-04-02
  • mysql数据库的类型是什么
    本篇内容介绍了“mysql数据库的类型是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • mysql是什么类型的数据库
    小编给大家分享一下mysql是什么类型的数据库,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!mysql是什么类型的数据库MySQL是一种关系型数据库管理系统,使用sql语言对数据库进行管理的。...
    99+
    2024-04-02
  • mysql是什么类型的数据库?
    mysql是一种开源、跨平台的关系型数据库管理系统,以其速度、可靠性、易用性、高性能、可扩展性和兼容性而著称。它广泛应用于web开发、数据仓库、电子商务、金融服务、医疗保健等领域。 M...
    99+
    2024-04-14
    mysql linux macos
  • mysql中decimal是什么数据类型
    decimal 是 mysql 中用于存储定点小数的高精度数据类型。其特点包括:精度(由 (m, d) 指定)、范围、精度不丢失、存储空间。它常用于需要高精度货币计算的场景,如银行系统、...
    99+
    2024-04-26
    mysql
  • 【MySQL】MySQL 数据类型
    目录 1. tinyint 类型 2. bit 类型 3. 小数类型 1、float 类型 2、decimal 类型 3. 字符串类型 1、char 类型  2、varchar 类型 4. 日期类型 5. enum和set 1、枚举和集合类...
    99+
    2023-09-07
    mysql 数据库
  • 【MySQL】MySQL数据类型
    文章目录 一、数据类型的分类二、tinyint类型2.1 创建有符号数值2.2 创建无符号数值 三、bit类型三、浮点类型3.1 float3.2 decimal类型 四、字符串类型4.1 char类型4.2 varchar...
    99+
    2023-08-22
    mysql android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作