1.6 数据类型
数值、字符、日期、二进制……选对类型既省空间又少麻烦(比如用 char 还是 varchar)。
本讲导览
核心内容
数据类型
如:
姓名,字符型,长度为8(即4个汉字)
年龄,数字型,且是整数,长度为2(不超过100岁);
性别:字符型,长度为2(即男或女)
生日:日期型
数据类型决定了数据在计算机中的存储格式,代表不同的信息类型。
MYSQL中定义了多种系统数据类型。
字符型,用char表示;
整数型,用int表示;
小数型,用float表示;
日期时间型,用datetime表示;
数据库中常用的一些数据类型表示法
| 数据类型 | |
|---|---|
| 整数 | int, bigint, smallint, tinyint |
| 精确数值 | decimal, numeric |
| 近似数值 | float, real |
| 货币 | money, smallmoney |
| datetime, smalldatetime,date,time | |
| Non-Unicode | char, varchar, varchar(max), text |
| Unicode | nchar, nvarchar, nvarchar(max), ntext |
| binary, varbinary, varbinary(max) | |
| image | |
| uniqueidentifier | |
| xml | |
| bit, cursor, timestamp, sysname, table, sql_variant |
📄 展开课件原文(第 1–3 页,共 3 页)
常用数据类型
可以存储整数、小数。
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 页)
日期和时间型:
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 页)
字符型
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 页)
二进制型:
(1)binary型:
固定长度的二进制数据。
(2)varbinary型:
可变长的二进制数据。
(3)BLOB型:可以用来存图片
可变长的二进制数据。最长为2^16-1个字节
📄 展开课件原文(第 11–11 页,共 1 页)
空值
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 页)
扩展:ASCII码与UNICODE
即:美国信息交换标准代码
主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统。
1、ASCII码
2.UNICODE
统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
将世界上所有的文字用2个字节统一进行编码.

📄 展开课件原文(第 14–15 页,共 2 页)
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