===== 第 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-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 ===== 第 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 ===== 第 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 ===== 第 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小一半。 ===== 第 11 页 ===== 四、二进制型: (1)binary型: 固定长度的二进制数据。 (2)varbinary型: 可变长的二进制数据。 (3)BLOB型:可以用来存图片 可变长的二进制数据。最长为2^16-1个字节 ===== 第 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 ===== 第 14 页 ===== 6-4、扩展:ASCII码与UNICODE 即:美国信息交换标准代码 主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统。 1、ASCII码 ===== 第 15 页 ===== 2.UNICODE 统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。 统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 将世界上所有的文字用2个字节统一进行编码. ===== 第 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