MySql数据类型有哪些

MySql数据类型有哪些,第1张

Mysql支持的多种数据类型主要有:数值数据类型、日期/时间类型、字符串类型。 

1整数数据类型及其取值范围:

类型

说明

存储需求(取值范围)

tinyint    很小整数    1字节([0~255]、[-128~127]); 255=2^8-1;127=2^7-1  

smallint    小整数    2字节(0~65535、-32768~32767) ;65535=2^16-1  

mediumint    中等    3字节(0~16777215) ;16777215=2^24-1  

int(integer)    普通    4字节(0~4294967295) ;4294967295=2^32-1  

bigint    大整数    8字节(0~18446744073709551615);18446744073709551615=2^64-1  

浮点数&定点数:

类型名称

说明

存储需求

float    单精度浮点数    4字节  

double    双精度浮点数    8字节  

decimal    压缩的“严格”定点数    M+2字节  

注:定点数以字符串形式存储,对精度要求高时使用decimal较好;尽量避免对浮点数进行减法和比较运算。 

2时间/日期类型: 

year范围:1901~2155; 

time格式:‘HH:MM:SS’(如果省略写,并且没有冒号,则默认最右起2位为秒,再到分,最后到时); 

插入系统当前时间:insert into 表名 values(current_date()),(now()); 

date类型:‘YYYY-MM-DD’; 

datetime(日期+时间):‘YYYY-MM-DD HH:MM:SS’或‘YYYYMMDDHHMMSS’,取值范围:‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’; 

timestamp格式同datetime,但在存储时需要4个字节(datetime需要8字节),并且以UTC(世界标准时间)进行存储(即timestamp会随设置的时区而变化,而datetime存储的绝不会变化);timestamp的范围:1970-2037。 

 

3字符串类型: 

text类型:tinytext、text、mediumtext、longtext;

类型

范围

tinytext    255=2^8-1  

text    65535=2^16-1  

mediumtext    16777215=2^24-1  

longtext    4294967295=4GB=2^32-1  

 

char的存储需求是定义时指定的固定长度;varchar的存储需求是取决于实际值长度。 

set类型格式:set(’值1’,’值2’…) ——可以有0或者多个值,对于set而言,若插入的值为重复的,则只娶一个。插入的值乱序,则自动按顺序插入排列。插入不正常值,则忽略。 

二进制类型: 

bit(M)——保存位字段值(位字段类型),M表示值的位数; 

eg:select BIN(b+0) from 表名;—–b为列名;b+0表示将二进制的结果转换为对应的数字的值,BIN()函数将数字转换为二进制。 

 

blog——-二进制大对象,用来存储可变数量的数据。

数据类型

存储范围(字节)

tinyblog    最多255=2^8-1 字节  

bolg    最多65535=2^16-1 字节  

mediumblog    最多16777215=2^24-1 字节  

longblog    最多4294967295=4GB=2^32-1 字节  

数据库表中字段类型有二进制数据类型、字符数据类型、数字数据类型 等其中类型。具体类型如下所示:

1、二进制数据类型 

Binary、Varbinary、Image 

2、字符数据类型 

Char,Varchar和 Text

3、Unicode数据类型

包括Nchar,Nvarchar和Ntext

4、日期和时间数据类型

包括Datetime, Smalldatetime, Date, TimeStamp

5、数字数据类型

数字数据类型包括正数和负数、小数和整数

6、货币数据类型

表示正的或者负的货币数量。

7、特殊数据类型

特殊的数据类型有3种,即Timestamp、Bit 和 Uniqueidentifier。

目前有许多数据库产品,如Oracle、Sybase、Informix、Microsoft SQL Server、Microsoft Access、Visual FoxPro等产品各以自己特有的功能,在数据库市场上占有一席之地。下面简要介绍几种常用的数据库管理系统。 Oracle Oracle是一个最早商品化的关系型数据库管理系统,也是应用广泛、功能强大的数据库管理系统。Oracle作为一个通用的数据库管理系统,不仅具有完整的数据管理功能,还是一个分布式数据库系统,支持各种分布式功能,特别是支持Internet应用。作为一个应用开发环境,Oracle提供了一套界面友好、功能齐全的数据库开发工具。Oracle使用PL/SQL语言执行各种 *** 作,具有可开放性、可移植性、可伸缩性等功能。特别是在Oracle 8i中,支持面向对象的功能,如支持类、方法、属性等,使得Oracle 产品成为一种对象/关系型数据库管理系统。目前最新版本是Oracle 11g。 Microsoft SQL Server Microsoft SQL Server是一种典型的关系型数据库管理系统,可以在许多 *** 作系统上运行,它使用Transact-SQL语言完成数据 *** 作。由于Microsoft SQL Server是开放式的系统,其它系统可以与它进行完好的交互 *** 作。目前最新版本的产品为Microsoft SQL Server 2008,它具有可靠性、可伸缩性、可用性、可管理性等特点,为用户提供完整的数据库解决方案。 Microsoft Access 作为Microsoft Office组件之一的Microsoft Access是在Windows环境下非常流行的桌面型数据库管理系统。使用Microsoft Access无需编写任何代码,只需通过直观的可视化 *** 作就可以完成大部分数据管理任务。在Microsoft Access数据库中,包括许多组成数据库的基本要素。这些要素是存储信息的表、显示人机交互界面的窗体、有效检索数据的查询、信息输出载体的报表、提高应用效率的宏、功能强大的模块工具等。它不仅可以通过ODBC与其它数据库相连,实现数据交换和共享,还可以与Word、Excel等办公软件进行数据交换和共享,并且通过对象链接与嵌入技术在数据库中嵌入和链接声音、图像等多媒体数据。

MySQL数据类型主要可以分成四种其中包括数值型、字符(串)型与日期和时间型与NULL值。

1 MySQL数据类型

在MySQL中有如下几种数据类型:

(1)数值型

数值是诸如32 或1534 这样的值。MySQL 支持科学表示法,科学表示法由整数或浮点数后跟“e”或“E”、一个符号(“+”或“-”)和一个整数指数来表示。124E+12 和2347e-1 都是合法的科学表示法表示的数。而124E12 不是合法的,因为指数前的符号未给出。

浮点数由整数部分、一个小数点和小数部分组成。整数部分和小数部分可以分别为空,但不能同时为空。

数值前可放一个负号“-”以表示负值。

(2)字符(串)型

字符型(也叫字符串型,简称串)是诸如“Hello, world!”或“一个馒头引起的血案”这样的值,或者是电话号码87398413这样的值。既可用单引号也可用双引号将串值括起来。

初学者往往分不清数值87398143和字符串87398143的区别。都是数字啊,怎么一 个要用数值型,一个要用字符型呢?关键就在于:数值型的87398143是要参与计算的,比如它是金融中的一个货款总额;而字符型的87398143是不 参与计算的,只是表示电话号码,这样的还有街道号码、门牌号码等等,它们都不参与计算。

(3)日期和时间型

日期和时间是一些诸如“2006-07-12”或“12:30:43”这样的值。MySQL还支持日期/时间的组合,如“2006-07-12 12:30:43”。

(4)NULL值

NULL表示未知值。比如填写表格中通讯地址不清楚留空不填写,这就是NULL值。

我们用Create Table语句创建一个表(参看前面的章节),这个表中包含列的定义。例如我们在前面创建了一个joke表,这个表中有content和writer两个列:

定义一个列的语法如下:

其中列名由col_name 给出。列名可最多包含64个字符,字符包括字母、数字、下划线及美元符号。列名可以名字中合法的任何符号(包括数字)开头。但列名不能完全由数字组成,因 为那样可能使其与MySQL数据类型分不开。MySQL保留诸如SELECT、DELETE和CREATE这样的词,这些词不能用做列名,但是函数名(如POS 和MIN)是可以使用的。

列类型col_type表示列可存储的特定值。列类型说明符还能表示存放在列中的值的最大长 度。对于某些类型,可用一个数值明确地说明其长度。而另外一些值,其长度由类型名蕴含。例如,CHAR(10) 明确指定了10个字符的长度,而TINYBLOB值隐含最大长度为255个字符。

有的类型说明符允许指定最大的显示宽度(即显示值时使用多少个字符)。浮 点类型允许指定小数位数,所以能控制浮点数的精度值为多少。

可以在列类型之后指定可选的类型说明属性,以及指定更多的常见属性。属性起修饰类型的作用,并更改其处理列值的方式,属性有以下类型:

(1)专用属性用于指定列。例如,UNSIGNED 属性只针对整型,而BINARY属性只用于CHAR 和VARCHAR。

(2)通用属性除少数列之外可用于任意列。可以指定NULL 或NOT NULL 以表示某个列是否能够存放NULL。还可以用DEFAULT,def_value 来表示在创建一个新行但未明确给出该列的值时,该列可赋予值def_value。def_value 必须为一个常量;它不能是表达式,也不能引用其他列。不能对BLOB 或TEXT 列指定缺省值。

如果想给出多个列的专用属性,可按任意顺序指定它们,只要它们跟在列类型之后、通用属性之前即可。类似地,如果需要给出多个通用属性,也可按任意顺序给出它们,只要将它们放在列类型和可能给出的列专用属性之后即可。

2 MySQL的列(字段)类型

数据库中的每个表都是由一个或多个列(字段)构成的。在用CREATE TABLE语句创建一个表时,要为每列(字段)指定一个类型。列(字段)的类型比MySQL数据类型更为细化,它精确地描述了给定表列(字段)可能包含的值的种类,如是否带小数、是否文字很多。

按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。

在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。

一 字符串类型

11:CHAR类型 CHAR(size [BYTE | CHAR])

CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR)一般来说默认是存储字节

注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。

12: NCHAR类型

这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。

13 VARCHAR类型

不要使用VARCHAR数据类型。使用VARCHAR2数据类型。

14: VARCHAR2类型

变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

15: NVARCHAR2类型

这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。

二 数字类型

21 NUMBER类型

NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10130~10126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

下面是官方文档的示例

Actual Data Specified As Stored As

12389 NUMBER 12389

12389 NUMBER(3) 124

12389 NUMBER(6,2) 12389

12389 NUMBER(6,1) 1239

12389 NUMBER(3) 124

12389 NUMBER(4,2) exceeds precision

12389 NUMBER(6,-2) 100

01234 NUMBER(4,5)01234

00012 NUMBER(4,5) 00012

000127 NUMBER(4,5) 00013

0000012 NUMBER(2,7) 0000012

00000123 NUMBER(2,7) 0000012

12e-4 NUMBER(2,5) 000012

12e-5 NUMBER(2,5) 000001

22 INTEGER类型

INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

23 浮点数

Oracle 数据库提供了专为浮点数的两种数值数据类型:

BINARY_FLOAT

BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

BINARY_DOUBLE

BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。

在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。

25 FLOAT类型

FLOAT类型也是NUMBER的子类型。

Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 030103。要从十进制转换为二进制的精度,请用 332193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。

三 日期类型

日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。

31 DATE类型

DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

32 TIMESTAMP类型

这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位

33 TIMESTAMP WITH TIME ZONE类型

这是TIMESTAMP类型的变种,它包含了时区偏移量的值

34 TIMESTAMP WITH LOCAL TIME ZONE类型

35 INTERVAL YEAR TO MOTH

36 INTERVAL DAY TO SECOND

四 LOB类型

内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型

41 CLOB 数据类型

它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) (database block size) 大小的字符

42 NCLOB 数据类型

它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) (database block size)大小的文本数据。

43 BLOB 数据类型

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) (database block size)的二进制数据。

44 BFILE 数据类型

二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理

五 RAW & LONG RAW类型

51 LONG类型

它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:

1一个表中只有一列可以为LONG型。(Why有些不明白)

2LONG列不能定义为主键或唯一约束,

3不能建立索引

4LONG数据不能指定正则表达式。

5函数或存储过程不能接受LONG数据类型的参数。

6LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)

52 LONG RAW 类型,能存储2GB 的原始二进制数据(不用进行字符集转换的数据)

53 RAW类型

用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2,000字节的信息

六 ROWID & UROWID类型

在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。

例如,索引组织表行地址存储在索引的叶子,可以移动。

例如,外部表的ROWID(如通过网关访问DB2表)不是​​标准的ORACLE的rowid。

ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。

创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT …ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。

以上就是关于MySql数据类型有哪些全部的内容,包括:MySql数据类型有哪些、数据库表中字段类型有几种类型、数据库数据类型有哪些等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10156437.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存