深入浅出mysql-mysql支持的的数据类型

3. mysql支持的的数据类型


3.1数值类型


整数类型


* TINYINT 1字节
* SAMLLINT 2字节
* MEDIUMINT 3字节
* INT、INTEGER 4字节 (INT 是INTEGER的同名词)
* BIGINT 8字节


zerofill属性


是什么


zerofill 就是用“0”填充的意思。也就是在数字位数不够
的空间用字符“0”填满


范例


分别修改 id1 和 id2 的字段类型,加入 zerofill 参数:
mysql> alter table t1 modify id1 int zerofill;
Query OK, 1 row affected (0.04 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> alter table t1 modify id2 int(5) zerofill;
Query OK, 1 row affected (0.03 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from t1;
+------------+-------+
| id1 | id2 |
+------------+-------+
| 0000000001 | 00001 |
+------------+-------+
1 row in set (0.00 sec)


AUTO_INCREMENT属性


是什么


范例


例如,可按下列任何一种方式定义 AUTO_INCREMENT 列:
CREATE TABLE AI (ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
CREATE TABLE AI(ID INT AUTO_INCREMENT NOT NULL ,PRIMARY KEY(ID));
CREATE TABLE AI (ID INT AUTO_INCREMENT NOT NULL ,UNIQUE(ID));


浮点数类型


* FLOAT 4字节
* DOUBLE 8字节


精度和标度


是什么


浮点数和定点数都可以用类型名称后加“(M,D)”的方式来进行表示,“(M,D)”表示该值一共显示 M 位数字(整数位+小数位),其中 D 位位于小数点后面


范例


浮点数如果不写精度和标度,则会按照实际精度值显示,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错;定点数如果不写精度和标度,则按照默认值 decimal(10,0)来进行操作,并且如果数据超越了精度和标度值,系统则会报错。


定点数类型


*DEC(M,D) M+2字节
*DECIMAL(M,D)M+2字节


位类型


BIT(M) 1~8字节


3.2日期类型


DATE 4字节 范围 1000-01-01 至 9999-12-31


DATETIME 8字节 范围 1000-01-01 00:00:00 至 9999-12-31 23:59:59


TIMESTAMP 4字节


TIME 3字节


YEAR 1字节


3.3字符串类型


CHAR(M) M为0-255的之间的整数
VARCHAR(M) M为0-65535之间的整数
TINYBLOB 允许长度0-255的字节
BLOB 允许长度0-65536
MEDIUMBLOB 允许长度 0-167772150字节
LONGBLOB
TINYTEXT 0-255字节
TEXT 0-65535字节
MEDIUMTEXT
LONGTEXT
VARBINARY(M)
BINARY(M)


CHAR和VARCHAR


是什么


*char列的长度固定为创建表时声明的长度,varchar 的长度为可变长度
*检索的时候char列删除尾部的空格,varchar 则保留空格


范例


(1)创建测试表 vc,并定义两个字段 v VARCHAR(4)和 c CHAR(4):
mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Query OK, 0 rows affected (0.16 sec)
(2)v 和 c 列中同时插入字符串“ab ”:
mysql> INSERT INTO vc VALUES ('ab ', 'ab ');
Query OK, 1 row affected (0.05 sec)
(3)显示查询结果:
mysql> select length(v),length(c) from vc;
+-----------+-----------+
| length(v) | length(c) |
+-----------+-----------+
| 4 | 2 |
+-----------+-----------+
1 row in set (0.01 sec)


BINARY 和 VARBINARY 


是什么


包含二进制字符串而不包含非二进制字符串


枚举类型ENUM


是什么


枚举类型,它的值范围需要在创建表时通过枚举方式显式指定,对 1~255 个成员的枚举需要 1 个字节存储;对于 255~65535 个成员,需要 2 个字节存储。最多允许有 65535 个成员


范例


(1)创建测试表 t,定义 gender 字段为枚举类型,成员为'M'和'F':
mysql> create table t (gender enum('M','F'));
Query OK, 0 rows affected (0.14 sec)
(2)插入 4 条不同的记录:
mysql> INSERT INTO t VALUES('M'),('1'),('f'),(NULL);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> select * from t;
+--------+
| gender |
+--------+
| M |
| M |
| F |
| NULL |
+--------+
4 rows in set (0.01 sec)


SET类型


是什么


Set 和 ENUM 类型非常类似,也是一个字符串对象,里面可以包含 0~64 个成员。根据成员的不同,存储上也有所不同。
  1~8 成员的集合,占 1 个字节。
  9~16 成员的集合,占 2 个字节。
  17~24 成员的集合,占 3 个字节。
  25~32 成员的集合,占 4 个字节。
  33~64 成员的集合,占 8 个字节。
Set 和 ENUM 除了存储之外,最主要的区别在于 Set 类型一次可以选取多个成员,而 ENUM则只能选一个。


范例


Create table t (col set ('a','b','c','d');
insert into t values('a,b'),('a,d,a'),('a,b'),('a,c'),('a');
mysql> select * from t;
+------+
| col |
+------+
| a,b |
| a,d |
| a,b |
| a,c |
| a |

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值