搜索
首页数据库mysql教程如何理解MySQL中的数据类型概念?

本篇文章给大家带来的内容是关于如何理解MySQL中的数据类型概念,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、数据是什么?

数据是一个信息集合,以某种数据类型保存在数据库里。数据包括姓名、数字、货币、文本、图像、小数、计算、统计等,几乎涵盖能够想象到的任何东西。数据客户保存为大写、小写或大小写混合,数据可以被操作或修改,大多数数据在其生存周期内不会保持不变。

数据类型用于指定列所包含数据的规则,它决定了数据保存在列里的方式,包括分配给列的宽度,以及值是否可以是字母、数字、日期和时间等。任何数据或数据的组合都有对应的数据类型,这些数据类型用于存储像字母、数字、日期和时间、图像、二进制数据等。更详细地说,数据可以包括姓名、描述、数字、计算、图像、图像描述、文档等。

数据是数据库的意义所在,必须受到保护。数据的保护着就是数据库管理员(DBA),但是每个数据库用户也有责任采取必要手段来保护数据。

二、基本数据类型

数据类型是数据本身的特征,其特性被设置到表里的字段。举例来说,我们可以指定某个字段必须包含数字值,不允许输入由数字或字母组成的字符串;我们也不希望在保存货币数值的字段里输入字母。为数据库里每个字段定义数据类型可以大幅减少数据库里由于错误而产生的错误数据。字段定义(数据类型定义)是一种数据校验方式,通知了每个字段里可以输入的数据。

1.定长字符串。

定长字符串通常具有相同的长度,是使用定长数据类型保存的。下面是Sql定长字符串的标准:

CHARACTER(n)

n是一个数字,定义了字段里能够保存的最多字符数量。

有些Sql实现使用CHAR数据类型来保存定长数据。字母可以保存到这种数据类型里。

在定长数据类型里,通常使用空格来补充数量不足的字符。如果字符长度是10,而输入的数据只有5位,那么剩余5位就会被记录为空格。填充空格确保了字段里每个值都具有相同的长度。

PS:不要使用定长数据类型来保存长度不定的数据,比如姓名,如果不恰当地使用定长数据类型,可能会导致浪费可用空间,以及影响对不同的数据进行精确比较。应该使用变长数据类型来保存长度不定的字符串,从而节省数据库空间。

2.变长字符串。

Sql支持变长字符串,也就是长度不固定的字符串。下面是Sql变长字符串的标准:

CHARACTER VARYING(n)

n是一个数字,表示字段里能够保存的最多字符数量。

常见的变长字符串数据类型有VARCHAR、VARINARY和VARCHAR2。VARCHAR是ANSI标准,Microsoft Sql Server和MySql也使用它;VARINARY和VARCHAR2都是由Oracle使用的。定义为字符的字段里可以保存数字和字母,这意味着数据中可能包含数字字符。VARBINARY类似于VARCHAR和VARCHAR2,只是它包含的是长度不定的字节。这种数据类型通常被用来保存数字式数据,例如图像文件。

定长数据类型利用空格来填充字段里的空白,但变长字符串不这样做。举例来说,如果某个变长字段的长度定义为10,而输入的字符串长度为5,那么这个值的总长度也就是5,这时并不会使用空格来填充字段里的空白。

3.大对象类型。

有些变长数据类型需要保存更长的数据,超过了一般情况下为VARCHAR字段所保留的长度,比如现在常见的BLOB和TEXT数据类型。这些数据类型专门用于保存大数据集的。BLOB是二进制大对象,它的数据是很长的二进制字符串。BLOB适合在数据库里存储二进制媒体文件,比如图像和MP3.

TEXT数据类型是一种长字符串类型,可以被看作一个大VARCHAR字段,通常用于在数据库里保存大字符集,比如博客站点的HTML输入。在数据库里保存这种类型的数据可以实现站点的动态更新。

4.数值类型。

数值被保存在定义为某种数值类型的字段里,一般包括NUMBER、INTERGER、REAL/DECIMAL等。

虾米是Sql数值的标准:

(1).BIT(n);

(2).BIT VARYING(n);

(3).DECIMAL(p,s);

(4).INTEGER;

(5).SMALLINT;

(6).SIGINT;

(7).FLOAT(p,s);

(8).DOUBLE PRECISION(P,S);

(9).REAL(S);

P 表示字段的最大长度。s 表示小数点后面的位数。

Sql实现中一个通用的数值类型是NUMERIC,它符合ANSI标准。数值可以是0、正数、定点数和浮点数。下面是使用NUMERIC的一个范例:

NUMERIC(s),这个命令把字段能够接受的最大值限制为99 999.在本书范例所涉及的数据库实现总,NUMERIC都是以DECIMAL类型实现的。

5.小数类型。

小数类型是数值的总体长度。举例来说,在数值定义ZDECIMZAL(4,2)里,有效位数是4,也就是说数值总位数是4.标度是小数点后面的位数,在前例中是2。如果实际数值的小数位数超过了定义的位数,数值就会被四舍五入,比如34.33写入到定义为DECIMAL(3,1)的字段时,会被四舍五入34.3。

如果数值按照如下方式被定义,其最大值就是99.99:

DECIMAL(4,2)

有效位是4,表示数值的总体长度是4;标度是2,表示小数点后面保留2位。小数点本身并不算作一个字符。

定义为DECIMAL(4,2)的字段允许输入的数组包括:

(1).12

(2).12.4

(3).12.44

(4).12.449

最后一个值12.449在保存到字段时会四舍五入为12.45。在这种定义,任何12.45~12.499之间的数值会被四舍五入为12.45。

6.整数。

整数是不包含小数点的数值(包括正数和负数)。

下面是一些有效的整数:

(1).1;

(2).0;

(3).-1;

(4).99;

(5).-99;

(6).199;

7.浮点数。

浮点数是有效位数和标度都可变并且没有限制的小数数值,任何有效位数和标度都是可以的。数据类型REAL代表单精度浮点数值,而DOUBLE PRECISION表示双精度浮点数值。单精度浮点数值的有效位数为1~21(包含),双精度浮点数值的有效位数为22~53(包含)。下面是一些FLOAT数据类型的范例:

(1).FLOAT;

(2).FLOAT(15);

(3).FLOAT(50);

8.日期和时间类型。

日期和时间数据类型很显然是用于保存日期和时间信息的。标准Sql支持DATETIME数据类型,它包含以下类型:

(1).DATE;

(2).TIME;

(3).DATETIME;

(4).TIMESTAMP;

DATETIME数据类型的元素包括:

(1).YEAR;

(2).MONTH;

(3).DAY;

(4).HOUR;

(5).SECOND;

ps:SECOND元素还可以再分解为几分之一秒,其范围是00.000~61.999,但并不是所有Sql实现都支持这个范围。多出来的1.999秒是用于实现闰秒的。
每种Sql实现可能都是具有自定义的数据类型来保存日期和时间。前面介绍的数据类型和元素是每个Sql厂商都应该遵守的标准,但大多数实现都具有自己的数据类型来保存日期值,其形式与实际存储方式有所不同。

日期数据一般不指定长度。稍后我们会更详细地介绍日期类型,包括日期信息在某些实现里的保存方式、如何使用转换函数操作日期和时间,并且用范例展示在实际工作中如何使用日期和时间。

9.直义字符串。

直义字符串就是一系列字符,比如姓名或电话号码,这是有用户或者程序明确指定的。直义字符串包含的数据与前面介绍的数据类型具有一样的属性,但字符串的值是已知的。列本身的值通常是不能确定的,因为每一列通常包含了字段在全部记录里的不同值。

实际上并不需要把字段指定为直义字符串数据类型,而是指定字符串。直义字符串的范例如下所示:

(1).'Hello';

(2).45000;

(3).'45000';

(4).3.14;

(5).'November 1 ,1997';

字符型的字符串由单引号包围,数值45000没有单引号包围,而第二个45000用双引号包围了。一般来说,字符型字符串需要使用单引号,而数值型不需要。

将一个数据类型成数值类型的过程过程术语隐式转换。在这个过程中,数据库会自动判断应该使用哪种数据类型。所以,如果一个数据没有使用单引号包围起来,那么Sql程序就会将其认定为数值类型。因此,必须要特别留意数据的形式。否则,存储结果可能会出现偏差,或者报错。稍后将介绍如何在数据库查询里使用直义字符串。

10.NULL数据类型。

NULL值表示没有值。NULL值在Sql里有广泛的应用,包括表的创建、查询的搜索条件,甚至是在直义字符串。

在使用NULL数据类型时,需要明确表示相应字段不是必须要输入数据的。如果某个字段必须包含数据,就把它设置为NOT NULL,只要字段有可能不包含数据,最好就把它设置为NULL。

11.布尔值。

布尔值的取值范围是TRUE、FlASE和NULL,用于进行数据比较。举例来说,在查询中设置条件时,每个条件都会被求值,得到TRUE、FLASE或NULL。如果查询中所有条件的值都是TRUE,数据就会被返回;如果某个条件的值是FLASE或NULL,数据就不会返回。比如下面这个范例:

WHERE NAME =‘SMITH’

这可能是查询里的一个条件,目标表里每行数据都是根据这个条件进行求值。如果表里某行的NAME字段值是SMITH,条件的值就是TRUE,相应的记录就会被返回。

大多数数据库实现并没有一个严格意义上的BOOLEAN类型,而是代之以各自不同的实现方法。MySql用于BOOLEAN类型,但实质上与其现有的TINYINT类型相同。Oracle倾向于让用户使用一个CHAR(1)值来代替布尔值,而Sql Server则使用BIT来代替。

12.自定义类型。

自定义类型是由用户定义的类型,它允许用户根据已有的数据类型来定制自己的数据类型,从而满足数据存储的需要。自定义类型极大的丰富了数据存储的可能性,使开发人员在数据库程序开发过程中具有更大的灵活性。语句CREATE TYPE用于创建自定义类型。

举例来说,在MySql和Oracle中,可以像下面这样创建一个类型:

CREATE TYPE PERSON ASOBJECT

(NAME VARCHER (30),

SSN  VARCHAR(9);

)

然后可以像下面这样引用自定义类型:

CREATE TABLE EMP_PAY

(EMPLOYEE PERSON,

 SALARY DECIMAL(10,2),

HIRE_DATE DATE);

表EMP_PAY第一列EMPLOYEE的类型是PERSON,这正是在前面创建的自定义类型。

13.域。

域是能够被使用的有效数据类型的集合。域与数据相关联,从而只接受特定的数据。在域创建之后,我们可以向域添加约束。约束与数据类型共同发挥作用,从而进一步限制字段能够接受的数据。域的使用类似于自定义类型。

像下面这样就可以创建域:

CREATE DOMAIN MONEY_D AS NUMBER(0,2);

像下面这样为域添加约束:

ALTER DOMAIN MONEy_D

ADD CONSTRAINT MONEY_CON

CHECK(VALUE>5);

然后像下面这样引用域:

CREATE TABLE EMP_PAY

(EMP_ID NUMBER(9),

EMP_NAME VARCHER2(30),

PAY_RATE MONEY_D);

三、小结

Sql具有多种数据类型,对于使用过其他编程语言的人来说,这些都不算陌生。数据类型允许不同类型的数据保存到数据库,比如单个字符、小数、日期和时间。无论是使用像c这样的第三代编程语言,还是使用关系型数据库实现Sql编码,数据类型的概念都是一样的。当然,不同实现中数据类型的名称坑你有所不同,但其工作方式基本上是一样的。另外,关系型数据库管理系统并不是一定要实现,ANSI标准里规定的全部数据类型才会被认为是与ANSI兼容的,因此最好查看具体的文档来了解尅使用的数据类型。

在考虑数据类型、长度、标度和精度时,一定要仔细地进行短期和长远的规划。另外,公司制度和希望用户以什么方式访问数据也是要考虑的因素。开发人员应该了解数据的本质。以及数据在数据库里是如何相互关联的,从而使用恰当的数据类型。


本篇文章只是描述了Sql的数据类型!纯文字描述!本篇文章摘录自《Sql入门经典》。下篇文章讲解Sql小白入门(三)管理数据库对象 !


以上是如何理解MySQL中的数据类型概念?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
dint是什么数据类型dint是什么数据类型Sep 05, 2022 am 11:05 AM

dint是带符号位的32位整数类型;dint的表示方法及范围是“L#-2147483648~L#+2147483647”,定义为双整数或长整数,字节是电脑里的数据量单位,在计算机中,数据只用0和1这种表现形式。

Python时间序列数据操作的常用方法总结Python时间序列数据操作的常用方法总结Apr 24, 2023 pm 10:22 PM

时间序列数据是一种在一段时间内收集的数据类型,它通常用于金融、经济学和气象学等领域,经常通过分析来了解随着时间的推移的趋势和模式Pandas是Python中一个强大且流行的数据操作库,特别适合处理时间序列数据。它提供了一系列工具和函数可以轻松加载、操作和分析时间序列数据。在本文中,我们介绍时间序列数据的索引和切片、重新采样和滚动窗口计算以及其他有用的常见操作,这些都是使用Pandas操作时间序列数据的关键技术。数据类型Python在Python中,没有专门用于表示日期的内置数据类型。一般情况下都

mysql性别用什么类型mysql性别用什么类型Jun 13, 2023 am 11:33 AM

MySQL性别采用多种数据类型来表示性别字段,例如CHAR、ENUM等,最终采用哪种类型,取决于实际需求以及数据存储的大小和性能。

java的数据类型有哪些java的数据类型有哪些Jan 30, 2024 pm 03:23 PM

java数据类型:1、整型;2、浮点型;3、字符型;4、布尔型;5、其他数据类型;6、引用类型;7、原始类型与封装类;8、自动装箱与拆箱;9、可变参数;10、注解;11、枚举;12、原始类型和引用类型的选择。Java是一种强类型语言,因此每种数据都有其固定类型。

decimal是什么类型decimal是什么类型Mar 18, 2021 pm 04:03 PM

decimal是MySQL中存在的精准数据类型,语法格式“DECIMAL(M,D)”。其中,M是数字的最大数(精度),其范围为“1~65”,默认值是10;D是小数点右侧数字的数目(标度),其范围是“0~30”,但不得超过M。

MySQL数据类型详解:你需要知道的知识点MySQL数据类型详解:你需要知道的知识点Jun 15, 2023 am 08:56 AM

MySQL是世界上最流行的关系型数据库管理系统之一,因其可靠性、高安全性、高扩展性以及相对低的成本而得到了广泛应用。MySQL的数据类型定义了各种数据类型的存储方式,是MySQL的重要组成部分。本文将详解MySQL的数据类型,以及在实际应用中需要注意的一些知识点。一、MySQL的数据类型分类MySQL的数据类型可以分为以下几类:整数类型:包括TINYINT、

表中字段的数据类型有哪些表中字段的数据类型有哪些Jan 19, 2021 am 10:18 AM

表中字段的数据类型有:1、二进制类型,包括Binary、Varbinary、Image;2、字符串类型,包括CHAR、VARCHAR、TEXT等;3、Unicode数据类型,包括Nchar,Nvarchar和Ntext;4、日期和时间数据类型,包括DATE、TIME、YEAR等;5、数值数据类型,包括INT、FLOAT、BIGINT等;6、货币数据类型;7、特殊数据类型等等。

PHP8中支持的新数据类型可以让你的代码变得更加清新PHP8中支持的新数据类型可以让你的代码变得更加清新Jun 21, 2023 am 11:20 AM

随着PHP8的发布,这个流行的编程语言引入了新的数据类型,这些新类型可以大大简化代码并提高代码的可读性。在本文中,我们将介绍PHP8中的四种新类型:联合类型、命名参数、只读属性和允许为空的属性,并解释它们如何为开发者带来更好的编程体验。联合类型联合类型是PHP8中引入的一种新类型,它可以让开发者在一个变量中存储多种不同类型的值。例如,一个变量可以

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具