0

0

如何理解MySQL中的数据类型概念?

坏嘻嘻

坏嘻嘻

发布时间:2018-09-15 11:15:01

|

1849人浏览过

|

来源于php中文网

原创

本篇文章给大家带来的内容是关于如何理解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.日期和时间类型。

Dbsite企业网站管理系统1.5.0
Dbsite企业网站管理系统1.5.0

Dbsite企业网站管理系统V1.5.0 秉承"大道至简 邦达天下"的设计理念,以灵巧、简单的架构模式构建本管理系统。可根据需求可配置多种类型数据库(当前压缩包支持Access).系统是对多年企业网站设计经验的总结。特别适合于中小型企业网站建设使用。压缩包内包含通用企业网站模板一套,可以用来了解系统标签和设计网站使用。QQ技术交流群:115197646 系统特点:1.数据与页

下载

日期和时间数据类型很显然是用于保存日期和时间信息的。标准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小白入门(三)管理数据库对象 !

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

10

2026.01.27

拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

109

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

16

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

136

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

7

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

6

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

122

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

35

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

121

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.9万人学习

Django 教程
Django 教程

共28课时 | 3.6万人学习

Excel 教程
Excel 教程

共162课时 | 13.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号