数据类型

1.6 数据类型

数值、字符、日期、二进制……选对类型既省空间又少麻烦(比如用 char 还是 varchar)。

第1章 数据库基础语法22 页课件8 个知识点

本讲导览

核心内容

第6节

数据类型

如:

姓名,字符型,长度为8(即4个汉字)

年龄,数字型,且是整数,长度为2(不超过100岁);

性别:字符型,长度为2(即男或女)

生日:日期型

数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。

MYSQL中定义了多种系统数据类型。

字符型,用char表示;

整数型,用int表示;

小数型,用float表示;

日期时间型,用datetime表示;

数据库中常用的一些数据类型表示法

课件表格 · 第3页
数据类型
整数int, bigint, smallint, tinyint
精确数值decimal, numeric
近似数值float, real
货币money, smallmoney
datetime, smalldatetime,date,time
Non-Unicodechar, varchar, varchar(max), text
Unicodenchar, nvarchar, nvarchar(max), ntext
binary, varbinary, varbinary(max)
image
uniqueidentifier
xml
bit, cursor, timestamp, sysname, table, sql_variant
📄 展开课件原文(第 1–3 页,共 3 页)
第 1 页

第6节、数据类型

6-1、数据,有不同的类型和长度。

如:

姓名,字符型,长度为8(即4个汉字)

年龄,数字型,且是整数,长度为2(不超过100岁);

性别:字符型,长度为2(即男或女)

生日:日期型

第 2 页

数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。

MYSQL中定义了多种系统数据类型。

如:

字符型,用char表示;

整数型,用int表示;

小数型,用float表示;

日期时间型,用datetime表示;

第 3 页

数据库中常用的一些数据类型表示法

数据类型
整数int, bigint, smallint, tinyint
精确数值decimal, numeric
近似数值float, real
货币money, smallmoney
datetime, smalldatetime,date,time
Non-Unicodechar, varchar, varchar(max), text
Unicodenchar, nvarchar, nvarchar(max), ntext
binary, varbinary, varbinary(max)
image
uniqueidentifier
xml
bit, cursor, timestamp, sysname, table, sql_variant
6-2

常用数据类型

可以存储整数、小数。

1、整数:

(1)TINYINT型:存储从-128--+127的整数,或(0,255)。

(2) SMALLINT型:可以存储从-32768到32767的整数,或(0,65535)。

(3)INT型 :数范围是从-2,147,483,648到2,147,483,647的整数 ,或(0,4294967295).

2、小数:

(1)定点小数:总长位数、小数位数固定不变。

Decimal型:同时表示一个数的总位数和小数位数。

Decimal(d,m),d为总位数(不包括小数点),m为小数位数。

如:金额 Decimal (5,2),表示总长度为5位,其中小数2位,例123.45

小数位数若为零,则等同与INT型。

(2)不定点小数(又称浮点小数)

总长和小数位数不固定。

①float型:单精度,占4个字节

取值范围 -3.4×1038~ 3.4×1038

②double型:双精度,占8个字节,

取值范围 -1.79×10308~ 1.79×10308

📄 展开课件原文(第 4–6 页,共 3 页)
第 4 页

6-2、常用数据类型

一、数值类型:

可以存储整数、小数。

1、整数:

(1)TINYINT型:存储从-128--+127的整数,或(0,255)。

(2) SMALLINT型:可以存储从-32768到32767的整数,或(0,65535)。

(3)INT型 :数范围是从-2,147,483,648到2,147,483,647的整数 ,或(0,4294967295).

第 5 页

2、小数:

(1)定点小数:总长位数、小数位数固定不变。

Decimal型:同时表示一个数的总位数和小数位数。

Decimal(d,m),d为总位数(不包括小数点),m为小数位数。

如:金额 Decimal (5,2),表示总长度为5位,其中小数2位,例123.45

小数位数若为零,则等同与INT型。

第 6 页

(2)不定点小数(又称浮点小数)

总长和小数位数不固定。

①float型:单精度,占4个字节

取值范围 -3.4×1038~ 3.4×1038

②double型:双精度,占8个字节,

取值范围 -1.79×10308~ 1.79×10308

二

日期和时间型:

1、日期型:

(1)year: 存储年份,范围1901—2155

(2)date:存储日期,格式:年-月-日,

范围1000-01-01至9999-12-31

2、时间型:

(3)time:存储时间,格式:时:分:秒

3、日期时间型

(4)DATETIME型:可以存储的日期范围是从1000年1月1日第一毫秒到9999年12月31日最后一毫秒。

格式:年-月-日 时:分:秒

如:2024-08-22 15:06:13

📄 展开课件原文(第 7–7 页,共 1 页)
第 7 页

二、日期和时间型:

1、日期型:

(1)year: 存储年份,范围1901—2155

(2)date:存储日期,格式:年-月-日,

范围1000-01-01至9999-12-31

2、时间型:

(3)time:存储时间,格式:时:分:秒

3、日期时间型

(4)DATETIME型:可以存储的日期范围是从1000年1月1日第一毫秒到9999年12月31日最后一毫秒。

格式:年-月-日 时:分:秒

如:2024-08-22 15:06:13

三

字符型

1、CHAR型:固定长度的字符串。通常最长为255。

如:姓名 Char(10),表示定义一个可以存10个字符的姓名字段。

不管存几个字,都分配给10个字的存储空间。

2、VARCHAR型:可变长的字符串。通常最长为255。

如:姓名 VARChar(10),表示定义一个最大可以存10个字符的姓名字段,但要根据存储的内容长度具体分配字节数。

区别:

把“welcome”分别存入char(10)和varchar(10)类型的字段中,之后,再分别从它们中取出,发现:

从char型字段取出的是“welcome ”,有3个空格;

从vchar型字段取出的是“welcome”,没有空格。

思考:为什么对于CHAR型字段在查询时一般用like,而对于VARCHAR型字段在查询时可以用like,也可以用=?

扩展:

(1)NCHAR型:固定长度的字符串。

(2)NVARCHAR型:可变长的字符串。

注:以N开头的字符类型,是表示使用unicode标准,在这个标准中,为统一全世界各国的文字字符,统一规定,任何一个字符都占2个字节,其类型比不带N的字符类型多一倍的存储空间。

如:英文字母、数字、汉字、日文等每个都占2字节。

以上2种数据类型,目前在MYSQL中尚不支持,但在SQL SERVER、ORACLE等其它数据库系统中较普遍使用。

3、TEXT型:

可变长的文本类型(即大字符串类型)。

最长为2^16-1个字符.

4、TINYTEXT型:

最长为2^8-1个字符.

比TEXT小一半。

📄 展开课件原文(第 8–10 页,共 3 页)
第 8 页

三、字符型

1、CHAR型:固定长度的字符串。通常最长为255。

如:姓名 Char(10),表示定义一个可以存10个字符的姓名字段。

不管存几个字,都分配给10个字的存储空间。

2、VARCHAR型:可变长的字符串。通常最长为255。

如:姓名 VARChar(10),表示定义一个最大可以存10个字符的姓名字段,但要根据存储的内容长度具体分配字节数。

区别:

把“welcome”分别存入char(10)和varchar(10)类型的字段中,之后,再分别从它们中取出,发现:

从char型字段取出的是“welcome ”,有3个空格;

从vchar型字段取出的是“welcome”,没有空格。

思考:为什么对于CHAR型字段在查询时一般用like,而对于VARCHAR型字段在查询时可以用like,也可以用=?

第 9 页

扩展:

(1)NCHAR型:固定长度的字符串。

(2)NVARCHAR型:可变长的字符串。

注:以N开头的字符类型,是表示使用unicode标准,在这个标准中,为统一全世界各国的文字字符,统一规定,任何一个字符都占2个字节,其类型比不带N的字符类型多一倍的存储空间。

如:英文字母、数字、汉字、日文等每个都占2字节。

以上2种数据类型,目前在MYSQL中尚不支持,但在SQL SERVER、ORACLE等其它数据库系统中较普遍使用。

第 10 页

3、TEXT型:

可变长的文本类型(即大字符串类型)。

最长为2^16-1个字符.

4、TINYTEXT型:

可变长的文本类型(即大字符串类型)。

最长为2^8-1个字符.

比TEXT小一半。

四

二进制型:

(1)binary型:

固定长度的二进制数据。

(2)varbinary型:

可变长的二进制数据。

(3)BLOB型:可以用来存图片

可变长的二进制数据。最长为2^16-1个字节

📄 展开课件原文(第 11–11 页,共 1 页)
第 11 页

四、二进制型:

(1)binary型:

固定长度的二进制数据。

(2)varbinary型:

可变长的二进制数据。

(3)BLOB型:可以用来存图片

可变长的二进制数据。最长为2^16-1个字节

6-3

空值

1、空值(NULL)意味着没有输入,通常表明值是未知的或未定义的。

2、空值(NULL)不等于0、空格、或零长度的字符串。

3、如果向一个表中插入数据行时,如果某字段允许空值而用户没有提供具体值,则数据库系统自动赋NULL值;如果某字段不允许空值而用户没有提供具体值,则插入失败。

4、空值会使某些计算产生错误结果,故建议尽量不要允许空值。

5、空值无法比较,只能使用“is null”或”is not null”判断。

小结

常用数据类型

(1)整型:tinyint、smallint、int

(2)实型:float

(3)日期时间型:date、time、datetime

(4)字符型:

固定长度:nchar、char

可变长度:nvarchar、varchar、ntext、text

(5)图象型:blob

📄 展开课件原文(第 12–13 页,共 2 页)
第 12 页

6-3、空值

1、空值(NULL)意味着没有输入,通常表明值是未知的或未定义的。

2、空值(NULL)不等于0、空格、或零长度的字符串。

3、如果向一个表中插入数据行时,如果某字段允许空值而用户没有提供具体值,则数据库系统自动赋NULL值;如果某字段不允许空值而用户没有提供具体值,则插入失败。

4、空值会使某些计算产生错误结果,故建议尽量不要允许空值。

5、空值无法比较,只能使用“is null”或”is not null”判断。

第 13 页

小结

常用数据类型

(1)整型:tinyint、smallint、int

(2)实型:float

(3)日期时间型:date、time、datetime

(4)字符型:

固定长度:nchar、char

可变长度:nvarchar、varchar、ntext、text

(5)图象型:blob

6-4

扩展:ASCII码与UNICODE

即:美国信息交换标准代码

主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统。

1、ASCII码

2.UNICODE

统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。

统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

将世界上所有的文字用2个字节统一进行编码.

第14页 · 课件原图
第14页 · 课件原图
📄 展开课件原文(第 14–15 页,共 2 页)
第 14 页

6-4、扩展:ASCII码与UNICODE

即:美国信息交换标准代码

主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统。

1、ASCII码

第 15 页

2.UNICODE

统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。

统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

将世界上所有的文字用2个字节统一进行编码.

6-5

mysql数据类型

对于MySQL来说,任何一个存入数据库中的数据都有对应的数据类型,即MySQL的每一个数据值都必须有类型。

在创建数据库表的时候,要为每个字段指定一个合适的类型。

 数据类型,是指MySQL数据库支持的字段类型。

 MySQL支持大量的字段类型,它可以被分为3类:

数值类型、字符串(字符)类型、日期和时间类型。

1、数值类型

MySQL数值类型大致可以分为两种:

整型。用于无小数部分的数

如1,96,-3,0,-66322等。

浮点型。用于可能具有小数部分的数

如3.14159,-6.89,9.65E+5等。

MySQL支持五种整型: TINYINT、SMALLINT、MEDIUMINT、INT 和BIGINT;

INT 为INTEGER的缩写。

这些类型在可表示的取值范围上是不同的。各种类型的存储需求也是不同的,取值范围较大的类型所需的存储量较大。

 MySQL支持三种浮点类型 FLOAT、DOUBLE、real

和2种定点小数型decimal、numeric。

FLOAT定义一个小(单精度)浮点数,DOUBLE定义一个普通大小(双精度)浮点数。

Numeric和DECIMAL用法完全相同。Decimal(m,n)其中m表示数的总位数(整数位数+小数位数,不包括小数点),n表示小数位置。

如果n为0,则表示整数。

2、字符串类型

字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM和SET。

(1)CHAR、VARCHAR是经常被用到的两种类型,用于存储较小的字符串,比如用户名,密码等。

(2)如果需要存储很大的字符串数据,需要用BLOB、TEXT类型。

(3)ENUM类型提供一种类别的表示方法,可以设定该字段有几种可能的取值,每次对字段赋值只能从这几个可能取值中取出一个。

(4)SET类型和ENUM类型比较相似,区别是可以同时取几个值,不同于ENUM类型每次只能取一个值。

扩展说明:

(1)MySQL目前它没有nchar数据类型,这是一个较为不便之处。在其他数据库管理系统,比如Oracle和SQL Server中都有nchar数据类型,它们用来存储Unicode字符,因此可以支持多语言。

(2)MySQL没有nchar,对于存储Unicode字符,则需要使用UTF-8编码格式。utf8mb4字符集,它是MySQL支持的最多字符的字符集。

总之,虽然MySQL没有nchar数据类型,但是可以通过char类型来存储Unicode字符,需要注意使用合适的字符集和字符长度。

3、日期和时间类型

MySQL提供了几种时间值的字段类型,分别是:

DATE、DATETIME、TIME、TIMESTAMP 和YEAR。

(1)DATE、TIME 和DATETIME类型存储日期、时间以及日期和时间值的组合,其格式为“YYYY-MM-DD”、“hh:mm:ss”和“YYYY-MM-DD hh:mm:ss”。

(2)TIMESTAMP字段以YYYYMMDDhhmmss的格式表示日期和时间值,其取值范围从19700101000000到2037年的某个时间。

(3)YEAR 是一个用来有效地表示年份值的字段类型,占一个字节。其取值范围为从1901到2155。

MYSQL常用类型

常用数据类型

(1)整型:tinyint、smallint、int

(2)实型:float、double

(3)日期时间型:TIMESTAMP、datetime、date、time、year

(4)字符型:

固定长度:char

可变长度:varchar、text

📄 展开课件原文(第 16–22 页,共 7 页)
第 16 页

6-5.mysql数据类型

对于MySQL来说,任何一个存入数据库中的数据都有对应的数据类型,即MySQL的每一个数据值都必须有类型。

在创建数据库表的时候,要为每个字段指定一个合适的类型。

 数据类型,是指MySQL数据库支持的字段类型。

 MySQL支持大量的字段类型,它可以被分为3类:

数值类型、字符串(字符)类型、日期和时间类型。

第 17 页

1、数值类型

MySQL数值类型大致可以分为两种:

整型。用于无小数部分的数

如1,96,-3,0,-66322等。

浮点型。用于可能具有小数部分的数

如3.14159,-6.89,9.65E+5等。

第 18 页

MySQL支持五种整型: TINYINT、SMALLINT、MEDIUMINT、INT 和BIGINT;

INT 为INTEGER的缩写。

这些类型在可表示的取值范围上是不同的。各种类型的存储需求也是不同的,取值范围较大的类型所需的存储量较大。

 MySQL支持三种浮点类型 FLOAT、DOUBLE、real

和2种定点小数型decimal、numeric。

FLOAT定义一个小(单精度)浮点数,DOUBLE定义一个普通大小(双精度)浮点数。

Numeric和DECIMAL用法完全相同。Decimal(m,n)其中m表示数的总位数(整数位数+小数位数,不包括小数点),n表示小数位置。

如果n为0,则表示整数。

第 19 页

2、字符串类型

字符串类型包括CHAR、VARCHAR、BLOB、TEXT、ENUM和SET。

(1)CHAR、VARCHAR是经常被用到的两种类型,用于存储较小的字符串,比如用户名,密码等。

(2)如果需要存储很大的字符串数据,需要用BLOB、TEXT类型。

(3)ENUM类型提供一种类别的表示方法,可以设定该字段有几种可能的取值,每次对字段赋值只能从这几个可能取值中取出一个。

(4)SET类型和ENUM类型比较相似,区别是可以同时取几个值,不同于ENUM类型每次只能取一个值。

第 20 页

扩展说明:

(1)MySQL目前它没有nchar数据类型,这是一个较为不便之处。在其他数据库管理系统,比如Oracle和SQL Server中都有nchar数据类型,它们用来存储Unicode字符,因此可以支持多语言。

(2)MySQL没有nchar,对于存储Unicode字符,则需要使用UTF-8编码格式。utf8mb4字符集,它是MySQL支持的最多字符的字符集。

总之,虽然MySQL没有nchar数据类型,但是可以通过char类型来存储Unicode字符,需要注意使用合适的字符集和字符长度。

第 21 页

3、日期和时间类型

MySQL提供了几种时间值的字段类型,分别是:

DATE、DATETIME、TIME、TIMESTAMP 和YEAR。

(1)DATE、TIME 和DATETIME类型存储日期、时间以及日期和时间值的组合,其格式为“YYYY-MM-DD”、“hh:mm:ss”和“YYYY-MM-DD hh:mm:ss”。

(2)TIMESTAMP字段以YYYYMMDDhhmmss的格式表示日期和时间值,其取值范围从19700101000000到2037年的某个时间。

(3)YEAR 是一个用来有效地表示年份值的字段类型,占一个字节。其取值范围为从1901到2155。

第 22 页

MYSQL常用类型

常用数据类型

(1)整型:tinyint、smallint、int

(2)实型:float、double

(3)日期时间型:TIMESTAMP、datetime、date、time、year

(4)字符型:

固定长度:char

可变长度:varchar、text