数据表
SQL数据类型:
①字符型数据类型
- 是数据库中最常用的数据类型之一, 有时人们将其称为:字符串。
- 字符型数据可由字母(a-z,A-Z 大小写字母共52个)、数字(0-9共10个)、空白符(空格符,制表符,换行符等统称为空白符)、标点,特殊字符与汉字(在数据表中允许存储标点,特殊字符和汉字)组成。
其中,空白符只在字符常量和字符串中有具体意义。在其他地方出现时(如SQL语句各关键字之间),只起间隔作用,编译程序对他们忽略。 - 在SQL语言中,字符型数据被放在一对单引号(’ ',且必须是
英文输入状态下的单引号
)中,用于区别其他类型的数据。每个字符型数据都有长度,其长度是该字符型数据类型个数。(如:'home’的长度是4,'0123456’的长度是7,但每个汉字占两个字符的位置,所以’张三’的长度是4,不是2)
②数字型数据
- 就是通常所说的数字。
- 可由0~59之间的数字、正负符号和小数点(.)组成。(如:100、3.14、-123等)
- 数字型数据不允许北方在任何定界符之内。数字型数据除了以上的形式表示之外,还可以用浮点形式的科学计数法表示。(如:3.46E+03等)
- 在具体的数据库系统中,数字型数据又被详细分为整数型数据、浮点型数据和货币型数据等。
- 数字型数据也有长度。(如:100的长度为3,3.14的长度为4,包括小数点,-123的长度为3等)
③日期型数据
- 用来表示日期和时间。(如:2021-09-01 12:00:00、2021年9月1日、01/SEP/2021、12:00:00等)
④二进制型数据
- 在计算机中所有数据都被保存为二进制数据。(如以上的字符型数据、数字型数据和日期型数据等,在计算机中都是以二进制数据的形式存放的)
- 此处所说的二进制数据则
专指
用来表示图形图像、视频动画和其他类型的文件等等。当前流行的所有数据可系统都支持二进制数据。(如:在SQL Server中提供了IMAGE数据类型,通常存放图片,在MySQL中提供了BLON和LONGBLOB数据类型,用来存放BLOBs数据等)
⑤自定义数据
- 除了数据库系统提供的数据类型以外,用户还可以根据自己的需要自定义数据类型。SQL中的
CREATE TYPE
就是用于自定义数据类型的语句。 - 不过,并非全部是数据库系统都支持
CREATE TYPE
语句。(如:SQL Server 2000中就不可以使用CREATE TYPE
语句定义用户数据类型,从SQL Server 2008才开始支持该语句)
MySQL数据类型:
①数值类型
TINYINT
:用于存放-128~127之间的所有正负整数。
该类型的数据在内存中占用1个字节的空间,即使用8位二进制数表示,其中的1位二进制数表示整数值的正负号,其它7位表示整数值的长度和大小TINYINT UNSIGNED
:无符号的TINYINT
类型,用于存放0~255之间的所有整数。
该类型的数据在内存中占用1个字节的空间SMALLINT
:用于保存-32768~32767之间的所有正负整数。
该类型的数据在内存中占用2个字节的空间SMALLINT UNSIGNED
:无符号的SMALLINT
类型,用于存放0~65535之间的所有整数。
该类型的数据在内存中占用2个字节的空间MEDIUMINT
:用于存储-8388608~8388607之间的所有正负整数。
该类型的数据在内存中占用3个字节的空间MEDIUMINT UNSIGNED
:无符号的MEDIUMINT
类型,用于存放0~16777215之间的所有整数。
该类型的数据在内存中占用3个字节的空间INT
或INTEGER
:用于存放-2147483648~2147483647之间的所有正负整数。
该类型的数据在内存中占用4个字节的空间INT UNSIGNED
或INTEGER UNSIGNED
:无符号的INT
或INTEGER
类型,用于存放0~4294967295之间的所有整数。
该类型的数据在内存中占用4个字节的空间BIGINE
:用于存放-9223372036854775808~9223372036854775807之间的所有正负整数。
该类型的数据在内存中占用8个字节的空间BIGINT UNSIGNES
:无符号的BIGINE
类型,用于存放0~18446744073709551615之间的所有整数。
该类型的数据在内存中占用8个字节的空间FLOAT
:用于存放数据范围为-3.402823466E+38 ~ -1.175494351E-38,0,1.175494351E-38 ~ 3.402823466E+38之间的浮点数。
该类型的数据在内存中占用4个字节的空间DOUBLE
或DOUBLE PRECISION
或REAL
:用于存放数据范围为-1.7976931348623157E+308 ~ -2.2250738585072014E-308,0,2.2250738585072014E-308 ~ 1.7976931348623157E+308之间的浮点数。
该类型的数据在内存中占用8个字节的空间DECIMAL[(M,[D])]
或NUMERIC(M,D)
:由M(整个数字的长度,包括小数点坐标的位数和小数点右边的位数,但不包括负号和小数点)和D(小数点右边的位数)决定的数字数据类型。M默认为10,D默认为0。
例:DECIMAL[(5,[2])]
或NUMERIC(5,2)
的表示范围是-999.99~999.99
②字符串类型
CHAR(M) [BINARY]
或NCHAR(M) [BINARY]
:用于保存定长的字符串。
M:表示字符串的最大长度,其范围是1~255,字符串中的每个字符占用1个字节的存储空间。
BINARY:表示不分大小写字母。没有BINARY项,则默认BINARY项。
NCHAR:表示使用默认的字符集。
当输入的字符串个数小于M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。[NATIONAL] VARCHAR(M) [BINARY]
:用于存放变长的字符串,占用的存储空间范围为0~255字节。
M:表示字符串的最大长度,其范围是1~255,字符串中的每个字符占用1个字节的存储空间。
BINARY:表示不分大小写字母。没有BINARY项,则默认BINARY项。
当输入的字符串个数小于M,则数据库系统将以空格补足,但在取出来时末尾的空格将自动去掉。TINYBLOB
:用于保存不超过255个字符的二进制字符串,所占用的存储空间范围为0~255字节。BLOB
:用于存储二进制的长文本数据,所占用的存储空间范围为0~65535字节。MEDIUMBLOB
:用于存储二进制形式的中等长度的长文本数据,所占用的存储空间范围为0~16777215字节。LONGBLOB
:用于保存二进制形式的极大长度的长文本数据,所占用的存储空间范围为0~4294967295字节。TINYTEXT
:用于存储短文字字符串,所占用的存储空间范围为0~255字节。TEXT
:用于存储长文本数据,所占用的存储空间范围为0~65535字节。MEDIUMTEXT
:用于存储中等长度的长文本数据,所占用的存储空间范围为0~16777215字节。LONGTEXT
:用于保存极大长度的长文本数据,所占用的存储空间范围为0~4294967295字节。
平时用的最多的是CHAR
、VARCHAR
类型,偶尔用到TEXT
类型
③日期与时间类型
DATE
:用于存储日期数据,日期数据的范围为1000-01-01至9999-12-31。
每个DATE
类型的数据占用3字节存储空间,其输入格式为“年-月-日(YYYY-MM-DD)”DATETIME
:用于存储混合日期和时间数据,日期和时间数据的范围为1000-01-01 00:00:00至9999-12-31 23:59:59。
每个DATETIME
类型的数据占用8字节的存储空间,其输入格式为“年-月-日 时-分-秒(YYYY-MM-DD HH:MM:SS)”TIME
:用于存储