深圳网站营销推广公司,饮料网站建设市场分析,网页效果图素材,如何创办一家自己的公司数据类型简介数据表由多列字段构成#xff0c;每一个字段指定了不同的数据类型#xff0c;指定了数据类型之后#xff0c;也就决定了向字段插入的数据内容。不同的数据类型也决定了 MySQL 在存储它们的时候使用的方式#xff0c;以及在使用它们的时候选择什么运算符号进行运…数据类型简介数据表由多列字段构成每一个字段指定了不同的数据类型指定了数据类型之后也就决定了向字段插入的数据内容。不同的数据类型也决定了 MySQL 在存储它们的时候使用的方式以及在使用它们的时候选择什么运算符号进行运算。数值数据类型TINYINT 、SMALLINT 、MEDIUMINT 、INT 、BIGINT 、FLOAT 、DOUBLE 、DECIMAL。日期/时间类型YEAR 、TIME 、DATE 、DATETIME 、TIMESTAMP。字符串类型CHAR 、VARCHAR 、BINARY 、VARBINARY 、BLOB 、TEXT 、ENUM 、SET。数值类型数值类型主要用来存储数字不同的数值类型提供不同的取值范围可以存储的值范围越大所需要的存储空间也越大。数值类型分为①整数类型 ②浮点数类型 ③定点数类型。整数类型类型名称说明存储需求有符号的取值范围无符号的取值范围TINYINT很小的整数1个字节-128~1270~255SMALLINT小的整数2个字节-32768~327670 ~ 65535MEDIUMINT中等大小的整数3个字节-8388608 ~ 83886070 ~ 16777215INT普通大小的整数4个字节-2147483648 ~ 21474836470 ~ 4294967295BIGINT大整数8个字节-9223372036854775808 ~92233720368547758070 ~18446744073709551615浮点数类型和定点数类型MySQL 中使用浮点数和定点数来表示小数浮点数有两种类型单精度浮点数FLOAT和双精度浮点数DOUBLE定点数只有 DECIMAL。浮点数和定点数都可以用 (MN) 来表示其中 M 是精度表示总共的位数N 是标度表示小数的位数。DECIMAL 实际是以字符串形式存放的在对精度要求比较高的时候如货币、科学数据等使用DECIMAL类型会比较好。浮点数相对于定点数的优点是在长度一定的情况下浮点数能够表示更大的数据范围它的缺点是会引起精度问题。类型名称说明 存储需求有符号的取值范围无符号的取值范围FLOAT单精度浮点数4个字节-3.402823466EE38 ~ -1.175494251E-38DOUBLE双精度浮点数8个字节-1.7976931348623157E308 ~-2.2250738585072014E-308DECIMAL压缩的“严格”定点数M2个字节 不固定不固定日期/时间类型MySQL 有多种表示日期的数据类型比如当只记录年信息的时候可以使用 YEAR 类型而没有必要使用 DATE 类型。每一个类型都有合法的取值范围当指定确实不合法的值时系统将 零 值插入到数据库中。类型名称日期格式日期范围存储需求YEARYYYY1901~21551字节TIMEHH:MM:SS-838:59:59~838:59:593字节DATEYYYY-MM-DD1000-01-01 ~ 9999-12-313字节DATETIMEYYYY-MM-DD HH:MM:SS1000-01-01 00:00:00 ~ 9999-12-31 23:59:598字节TIMESTAMPYYYY-MM-DD HH:MM:SS1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07UTC4字节YEAR格式以4位字符串格式表示的 YEAR 范围为 1901 ~ 2155。格式以4位数字格式表示的 YEAR 范围为 1901 ~ 2155。格式以2位字符串格式表示的 YEAR 范围为 00 ~ 99 其中00 ~ 69 被转换为 2000 ~ 206970 ~ 99 被转换为 1970 ~ 1999。格式以2位数字格式表示的 YEAR 范围为 1 ~ 99 其中1 ~ 69 被转换为 2001 ~ 2069 70 ~ 99 被转换为 1970 ~ 1999。TIMETIME 类型的格式为 HH:MM:SS HH 表示小时MM 表示分钟SS 表示秒格式以 HHMMSS 格式表示的 TIME 例如 101112 被理解为 10:11:12 但如果插入不合法的时间如 109712 则被存储为 00:00:00格式以 D HH:MM:SS 字符串格式表示的 TIME 其中 D 表示日可以取 0 ~ 34 之间的值在插入数据库的时候 D 会被转换成小时如 2 10:10 在数据库中表示为 58:10:00 即 2x2410 58。DATEDATE 类型的格式为 YYYY-MM-DD 其中YYYY 表示年MM 表示月DD 表示日。格式YYYY-MM-DD 或 YYYYMMDD 取值范围为 1000-01-01 ~ 9999-12-3。格式YY-MM-DD 或 YYMMDD 这里 YY 表示两位的年值范围为 00 ~ 99 其中00 ~ 69 被转换为 2000 ~ 2069 70 ~ 99 被转换为 1970 ~ 1999。格式YY-MM-DD 或 YYMMDD 数字格式表示的日期其中 YY 范围为 00 ~ 99 其中00 ~ 69 被转换为 2000 ~ 2069 70 ~ 99 被转换为 1970 ~ 1999。DATETIMEDATETIME 类型的格式为 YYYY-MM-DD HH:MM:SS 其中YYYY 表示年MM 表示月DD 表示日HH 表示小时MM 表示分钟SS 表示秒。格式YYYY-MM-DD HH:MM:SS 或 YYYYMMDDHHMMSS 字符串格式取值范围为 1000-01-0100:00:00 ~ 9999-12-31 23:59:59。格式YY-MM-DD HH:MM:SS 或 YYMMDDHHMMSS 字符串格式其中 YY 范围为 00 ~ 99 其中00 ~ 69 被转换为 2000 ~ 2069 70 ~ 99 被转换为 1970 ~ 1999。格式YYYYMMDDHHMMSS 或 YYMMDDHHMMSS 数字格式取值范围同上。TIMESTAMPTIMESTAMP 类型的格式为 YYYY-MM-DD HH:MM:SS显示宽度固定在19个字符。TIMESTAMP 与 DATETIME 的区别在于TIMESTAMP 的取值范围小于 DATETIME 的取值范围。TIMESTAMP 的取值范围为 1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07 UTC 其中 UTC 是世界标准时间存储时会对当前时区进行转换检索时再转换回当前时区。字符串类型字符串类型用来存储字符串数据还可以存储比如图片和声音的二进制数据。MySQL 支持两种字符串类型文本字符串和二进制字符串。文本字符串类型说明存储需求CHAR(M)固定长度的文本字符串M 字节1 M 255VARCHAR(M)可变长度的文本字符串L1 字节在此 L M 和 1 M 255TINYTEXT非常小的文本字符串L1 字节在此 L 2^8TEXT小的文本字符串L2 字节在此 L 2^16MEDIUMTEXT中等大小的文本字符串L3 字节在此 L 2^24LONGTEXT大的文本字符串L4 字节在此 L 2^32ENUM枚举类型只能有一个枚举字符串值1 或 2 个字节取决于枚举值的数目最大值65535SET一个设置字符串对象可以有零个或多个SET成员1, 2, 3, 4 或 8 个字节取决于集合成员的数量最多64个成员二进制字符串类型说明存储需求BIT(M)位字段类型大约M7/8 个字节BINARY(M)固定长度的二进制字符串M个字节VARBINARY(M)可变长度的二进制字符串M1个字节TINYBLOG(M)非常小的BLOBL1 字节在此 L 2^8BLOB(M)小的BLOBL2 字节在此 L 2^16MEIDUMBLOB(M)中等大小的BLOBL3 字节在此 L 2^24LONGBLOB(M)非常大的BLOBL4 字节在此 L 2^32CHAR 和 VARCHARCHAR(M) 为固定长度的字符串在定义时指定字符串列长当保存时在右侧填充空格以达到指定的长度M 表示列长度取值范围是 0~255 个字符例如CHAR(4) 定义了一个固定长度的字符串列其包含的字符个数最大为 4当检索到 CHAR 值时尾部的空格将被删掉。VARCHAR(M) 为可变长度的字符串M 表示最大列长度取值范围是 0~65535 VARCHAR 的最大实际长度由最长的行的大小和使用的字符集确定而其实际占用的空间为字符串的实际长度加一一个字符串结束符 插入值 CHAR(4) 存储需求 VARCHAR(4) 存储需求 4个字节 1个字节 ab ab 4个字节ab 3个字节 abc abc 4个字节 abc 4个字节 abcd abcd 4个字节 abcd 5个字节 abcde abcd 4个字节 abcd 5个字节。TEXTTINYTEXT 最大长度为 255 个字符。TEXT 最大长度为 65536 个字符。MEDIUMTEXT 最大长度为 16777215 个字符。LONGTEXT 最大长度为 4294967295 个字符。ENUM 在基本的数据类型中无外乎就是些数字和字符但是某些事物是较难用数字和字符来准确地表示的。比如一周有七天分别是Sunday、Monday、Tuesday、Wednesday、Thursday、Friday 和 Saturday。 如果我们用整数 0、1、2、3、4、5、6 来表示这七天那么多下来的那些整数该怎么办 而且这样的设置很容易让数据出错即取值超出范围。我们能否自创一个数据类型而数据的取值范围就是这七天呢 因此有了 ENUM 类型Enumeration枚举它允许用户自己来定义一种数据类型并且列出该数据类型的取值范围。ENUM 是一个字符串对象其值为表创建时在列规定中枚举即列举的一列值语法格式为字段名 ENUM 值1值2 ..... 值n 字段名指将要定义的字段值 n 指枚举列表中的第 n 个值ENUM类型的字段在取值时只能在指定的枚举列表中取而且一次只能取一个。如果创建的成员中有空格时其尾部的空格将自动删除。ENUM 值在内部用整数表示每个枚举值均有一个索引值列表值所允许的成员值从 1 开始编号MySQL 存储的就是这个索引编号。枚举最多可以有 65535 个元素。 例创建表n1level为enum类型分别指定优秀,合格,不合格第一次插入数据时都在取值范围内而第二次插入取值范围外的数据显示报错查看表只有三行数据。mysql create table n1(- soc int,- level enum(优秀,合格,不合格));
Query OK, 0 rows affected (0.02 sec)
mysql insert into n1 values(90,优秀),(60,合格),(50,不合格);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql insert into n1 values(100,满分);
ERROR 1265 (01000): Data truncated for column level at row 1
mysql select * from n1;
-----------------
| soc | level |
-----------------
| 90 | 优秀 |
| 60 | 合格 |
| 50 | 不合格 |
-----------------
3 rows in set (0.00 sec)SETSET 是一个字符串对象可以有零个或多个值SET 列最多可以有 64 个成员其值为表创建时规定的一列值语法SET值1值2...... 值n。与 ENUM 类型相同SET 值在内部用整数表示列表中每一个值都有一个索引编号与 ENUM 类型不同的是ENUM 类型的字段只能从定义的列值中选择一个值插入而 SET 类型的列可从定义的列值中选择多个字符的联合。如果插入 SET 字段中列值有重复则 MySQL 自动删除重复的值插入 SET 字段的值的顺序并不重要MySQL 会在存入数据库时按照定义的顺序显示。 例创建n2表set集合内指定a,b,c,d第一次插入数据是没报错但是下边查看时可以看到默认把重复的去除了而第二次插入数据时‘x’非集合内数据所以报错。mysql create table n2(- z set(a,b,c,d));
Query OK, 0 rows affected (0.01 sec)
mysql insert into n2 values(a),(a,b,c,d),(a,a,b,c,c,d);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql insert into n2 values(a,b,x,a);
ERROR 1265 (01000): Data truncated for column z at row 1
mysql select * from n2;
---------
| z |
---------
| a |
| a,b,c,d |
| a,b,c,d |
---------
3 rows in set (0.00 sec)BITBIT 数据类型用来保存位字段值即以二进制的形式来保存数据如保存数据 13则实际保存的是 13 的二进制值即 1101。BIT 是位字段类型BIT(M) 中的 M 表示每个值的位数范围为 1~64 如果 M 被省略则默认为 1 如果为 BIT(M) 列分配的值的长度小于 M 位则在值得左边用 0 填充。如果需要位数至少为 4 位的 BIT 类型即可定义为 BIT(4) 则大于 1111 的数据是不能被插入的。mysql create table n3(b bit(4));
Query OK, 0 rows affected (0.01 sec)
mysql insert into n3 values(2),(9),(15);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql select bin(b0) from n3;
----------
| bin(b0) |
----------
| 10 |
| 1001 |
| 1111 |
----------
3 rows in set (0.01 sec)BINARY 和 VARBINARYBINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR不同的是它们包含二进制字节字符串。BINARY 类型的长度是固定的指定长度之后不足最大长度的将在它们右边填充 \0 以补齐指定长度。VARBINARY 类型的长度是可变的指定长度之后其长度可以在 0 到最大值之间。mysql create table n4(- b binary(3),- vb varbinary(30));
Query OK, 0 rows affected (0.01 sec)
mysql insert into n4 values(5,5);
Query OK, 1 row affected (0.01 sec)
mysql select * from n4;
------------
| b | vb |
------------
| 5 | 5 |
------------
1 row in set (0.00 sec)
mysql select length(b),length(vb) from n4;
-----------------------
| length(b) | length(vb) |
-----------------------
| 3 | 1 |
-----------------------
1 row in set (0.00 sec)BLOBBLOB 用来存储可变数量的二进制字符串分为 TINYBLOB 、BLOB 、MEDIUMBLOB 、LONGBLOB 四种类型。BLOB 存储的是二进制字符串TEXT 存储的是文本字符串。BLOB 没有字符集并且排序和比较基于列值字节的数值TEXT 有一个字符集并且根据字符集对值进行排序和比较 数据类型 |存储范围| ---|---|---| TINYBLOB |最大长度为255 BLOB |最大长度为65535MEDIUMBLOB| 最大长度为16777215 LONGBLOB |最大长度为4294967295。