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

来源:互联网 发布:淘宝运营 知乎 编辑:程序博客网 时间:2024/06/06 05:01

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 |

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 腰抻了怎么办最有效 孩子胳膊抻着了怎么办 胳膊伤筋了疼怎么办 宝宝胳膊抻了疼怎么办 练完普拉提头晕怎么办 生完孩子腰背疼怎么办 宝宝不肯把屎尿怎么办 存的电话删除了怎么办 脚踝的韧带断了怎么办 买了双鞋子想退怎么办 鞋子大了一码怎么办 nba篮球大师身体素质满了怎么办 钉鞋大了一码怎么办 篮球鞋鞋垫会向里面跑怎么办 穿高跟鞋脚肿了怎么办 衣服弄到单车油怎么办 高低床孩子摔下来怎么办 量血压时老紧张怎么办 牛仔外套的扣子掉了怎么办 裤子的裤筒大了怎么办 衣服拉链驰坏了怎么办 小脚裤裤腿紧了怎么办 地垫粘地板了怎么办 棉麻衬衣皱了怎么办 麻料衣服烫皱了怎么办 在京东买一双奥康鞋没有防伪怎么办 足球鞋丁掉了一颗怎么办 鼻子有点大想变小该怎么办 阿勒泰小东沟风景区边防证怎么办 孩子上一年级了学习很差怎么办 孩子作息时间不规律怎么办 冬天冻脸怎么办小妙招 冬天冻脚怎么办小妙招 冬天脚冷怎么办小妙招 初中生不爱学习父母该怎么办 早孕办公室买新办公桌怎么办 一年级学生专注度差怎么办 pscs6界面字体太小怎么办 psd文件打不开程序错误怎么办 经常熬夜皮肤暗黄怎么办 炎症引起的经期不来怎么办