表类型
MySQL的数据表类型很多,其中比较重要的是MyISAM,InnoDB这两种。
这两种类型各有优缺点,需要根据实际情况选择适合的,MySQL支持对不同的表设置不同的类型。下面做个对比:
MyISAM表类型是一种比较成熟稳定的表类型,但是MyISAM对一些功能不支持。
|
MyISAM |
InnoDB |
事务 |
不支持 |
支持 |
数据行锁定 |
不支持,只有表锁定 |
支持 |
外键约束 |
不支持 |
支持 |
表空间大小 |
相对小 |
相对大,最大是2倍 |
全文索引 |
支持 |
不支持 |
GIS数据 |
支持 |
不支持 |
COUNT问题 |
无 |
执行COUNT(*)查询时,速度慢 |
一般情况下我觉得选择MyISAM就行,如果需要事务,或者需要很多用户同时修改某个数据表里的数据时,可以考虑InnoDB数据表。
数据类型
1.整型(xxxint)
MySQL数据类型 |
含义 |
tinyint(m) |
1个字节表示(-128~127) |
smallint(m) |
2个字节表示(-32768~32767) |
mediumint(m) |
3个字节表示(-8388608~8388607) |
int(m) |
4个字节表示(-2147483648~2147483647) |
bigint(m) |
8个字节表示(+-9.22*10的18次方) |
右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。
书上说int(m)括弧里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,我测了一下,定义一个字段number 类型为int(4),插入一条记录"123456",用mysql query broswer执行SELECT查询,返回的结果集中123456正确显示,没有影响到显示的宽度,不知道这个m有什么用。
2.浮点型(float和double)
MySQL数据类型 |
含义 |
float(m,d) |
单精度浮点型,8位精度(4字节),m是十进制数字的总个数, d是小数点后面的数字个数。 |
double(m,d) |
双精度浮点型,16位精度(8字节) |
参数m只影响显示效果,不影响精度,d却不同,会影响到精度。
比如设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,小数点后面的数别四舍五入截成457了,但总个数不受到限制(6位,超过了定义的5位)。
3.定点数(decimal)
decimal(m,d) 定点类型
浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。参数m是定点类型数字的最大个数(精度),范围为0~65,d小数点右侧数字的个数,范围为0~30,但不得超过m。
对定点数的计算能精确到65位数字。
4.字符串(char,varchar,xxxtext)
MySQL数据类型 |
含义 |
char(n) |
固定长度的字符串,最多255个字符 |
varchar(n) |
固定长度的字符串,最多65535个字符 |
tinytext |
可变长度字符串,最多255个字符 |
text |
可变长度字符串,最多65535个字符 |
mediumtext |
可变长度字符串,最多2的24次方-1个字符 |
longtext |
可变长度字符串,最多2的32次方-1个字符 |
char和varchar:
1.都可以通过指定n,来限制存储的最大字符数长度,char(20)和varchar(20)将最多只能存储20个字符,超过的字符将会被截掉。n必须小于该类型允许的最大字符数。
2.char类型指定了n之后,如果存入的字符数小于n,后面将会以空格补齐,查询的时候再将末尾的空格去掉,所以char类型存储的字符串末尾不能有空格,varchar不受此限制。
3.内部存储的机制不同。char是固定长度,char(4)不管是存一个字符,2个字符或者4个字符(英文的),都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入一个字符将占用2个字节,2个字符占用3个字节,4个字符占用5个字节。
4.char类型的字符串检索速度要比varchar类型的快。
varchar和text:
1.都是可变长度的,最多能存储65535个字符。
2.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。
3.text类型不能有默认值。
5.二进制数据(xxxBlob)
XXXBLOB和xxxtext是对应的,不过存储方式不同,xxxTEXT是以文本方式存储的,如果存储英文的话区分大小写,而xxxBlob是以二进制方式存储的,不区分大小写。
xxxBlob存储的数据只能整体读出。
xxxTEXT可以指定字符集,xxxblob不用指定字符集。
6.日期时间类型(date,time,datetime,timestamp)
MySQL数据类型 |
含义 |
date |
日期'2008-12-2' |
time |
时间'12:25:36' |
datetime |
日期时间'2008-12-2 22:06:44' |
timestamp |
不固定 |
timestamp比较特殊,如果定义一个字段的类型为timestamp,这个字段的时间会在其他字段修改的时候自动刷新。所以这个数据类型的字段可以存放这条记录最后被修改的时间,而不是真正来的存放时间。
数据类型的属性
MySQL关键字 |
含义 |
NULL |
数据列可包含NULL值 |
NOT NULL |
数据列不允许包含NULL值 |
DEFAULT xxx |
默认值,如果插入记录的时候没有指定值,将取这个默认值 |
PRIMARY KEY |
主键 |
AUTO_INCREMENT |
递增,如果插入记录的时候没有指定值,则在上一条记录的值上加1,仅适用于整数类型 |
UNSIGNED |
无符号 |
CHARACTER SET name |
指定一个字符集 |
分享到:
相关推荐
NULL 博文链接:https://yuzhwe.iteye.com/blog/830195
mysql 表类型详细介绍,看完你就是表类型的专家!
Java 数据类型和 MySql 数据类型对应表 在 Java 编程中,了解 Java 数据类型和 MySql 数据类型的对应关系非常重要。这是因为在 Java 应用程序中,我们经常需要与数据库进行交互,而 MySql 是一种常用的关系数据库...
18. MYSQL行类型(专指IASM/MYIASM表) 19. MYSQL缓存 20. MYSQL表高速缓存工作原理 21. MYSQL扩展/优化-提供更快的速度 22. MYSQL何时使用索引 23. MYSQL何时不使用索引 24. 学会使用EXPLAIN 25. 学会使用...
18. MYSQL行类型(专指IASM/MYIASM表) 8 19. MYSQL缓存 8 20. MYSQL表高速缓存工作原理 9 21. MYSQL扩展/优化-提供更快的速度 9 22. MYSQL何时使用索引 10 23. MYSQL何时不使用索引 10 24. 学会使用EXPLAIN 10 25. ...
mysql innodb类型数据库表 根据ibd文件获取表 space id,用于恢复innodb类型数据表数据
Java 数据类型和 MySql 数据类型对应一览 在 Java 编程语言中,数据类型是指变量或函数可以持有的值的类型。 MySql 数据库也具有其自己的数据类型,用于存储和管理数据。在本文中,我们将对 Java 数据类型和 MySql ...
mysql数据类型转换
Mysql 与 java 的时间类型 MySql的时间类型有 Java中与之对应的时间类型 datejava.sql.Date Datetimejava.sql
1.MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化? 2.SQL注入漏洞产生的原因?... MYSQL 表类型是使用 InnoDB Tables 或 BDB tables 的话,你的 MYSQL 就 可 以 使 用 事 务 处 理。
BDB、HEAP、ISAM、MERGE、MyISAM、InnoDB以及Gemeni这7种Mysql表类型 3.简述在MySQL数据库中MyISAM和InnoDB的区别 MyISAM: 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表加锁; 存储...
MySQL索引类型大汇总 mysql里需要用到了
BDB、HEAP、ISAM、MERGE、MyISAM、InnoDB以及Gemeni这7种Mysql表类型 3.简述在MySQL数据库中MyISAM和InnoDB的区别 4.Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别? 6.主键和候选键有什么区别? 7...
MySQL锁类型以及查询锁表问题、解锁MySQL中select * for update锁表的范围MySQL中select * for update锁表的问题由
BDB、HEAP、ISAM、MERGE、MyISAM、InnoDB以及Gemeni这7种Mysql表类型 #### 3.简述在MySQL数据库中MyISAM和InnoDB的区别 MyISAM: ```` 不支持事务,但是每次查询都是原子的; 支持表级锁,即每次操作是对整个表...
mysql用触发器实现char类型主键自增长
Mysql中常用的类型转换函数和用法。让Mysql操作简单化
Mysql表类型都有哪些是一定需要知道的,下面就为您介绍七种Mysql表类型,希望能对您学习Mysql表类型有所帮助,需要的朋友可以了解下
MySQL字段类型说明 MySQL字段类型说明
MySQL数据类型简介