设为首页 加入收藏

TOP

mysql支持的数据类型及其测试(六)
2015-07-24 11:09:05 来源: 作者: 【 】 浏览:2
Tags:mysql 支持 数据 类型 及其 测试
nity Server (GPL)

Protocol version: 10

Connection: localhostvia TCP/IP

Server characterset: utf8

Db characterset: utf8

Client characterset: gbk

Conn. characterset: gbk

TCP port: 3306

Uptime: 2hours 6 min 46 sec?

Threads: 1 Questions: 122 Slow queries:0 Opens: 57 Flush tables: 1 Open tables: 1 Queries per second avg: 0.016

//插入汉子,一个汉子代表一个字符:

mysql> INSERT teststring VALUES('开课吧开课','大家快学习');

Query OK, 1 row affected (0.05 sec)?

mysql> SELECT * FROM teststring;

+------------+------------+

| str1 | str2 |

+------------+------------+

| A | A |

| 开课吧开课 | 大家快学习 |

+------------+------------+

2 rows in set (0.00 sec)?

mysql> INSERT teststring VALUES('开课吧开课','大家快学习.');

ERROR 1406 (22001): Data too long forcolumn 'str2' at row 1?

CHAR与VARCHAR区别:

(1)存储方式与检索方式不同;保存数据是,当数据长度小于指定长度,CHAR类型会在后面用空格填充指定长度,当检索数据时会去掉后面的空格;PHP可以用TRIM或RTRIM函数将查询出来的数据中的空格去掉。VARCHAR保存时不填充空格,当检索数据时如果有空格,空格保留。

(2)CHAR效率高于VARCHAR,但浪费了空间。长度超过255或者长度不固定时,只能用VARCHAR.

(2)TEXT:只能保存字符数据,存大量文本时可以用TEXT.

TINYTEXT

TEXT

MEDIUMTEXT

LONGTEXT

当长度超过6万多字时,使用TEXT,但是能用VARCHAR的地方尽量不用TEXT类型。

数据检索效率:CHAR>VARCHAR>TEXT

实验结果:

mysql> CREATE TABLE testtext(

-> a TINYTEXT,

-> b TEXT,

-> c MEDIUMTEXT,

-> d LONGTEXT);

Query OK, 0 rows affected (0.11 sec)

(3)ENUM枚举类型

ENUM(‘值1’,’值2’,……):最多65535个值

ENUM:保存值所对应的编号,插入值时只能插入列举值中的一个

CREATE TABLE testenum(

Sex ENUM(‘男’,’女’,’保密’));

INSERT testenum VALUES(‘男’);

INSERT testenum VALUES(1);

INSERT testenum VALUES(2);

INSERT testenum VALUES(3);

实验结果:

mysql> CREATE TABLE testenum(

-> sex ENUM('男','女','保密'));

Query OK, 0 rows affected (0.06 sec)

mysql> INSERT testenum VALUES(1);

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testenum;

+------+

| sex |

+------+

| 男 |

+------+

1 row in set (0.00 sec)

mysql> INSERT testenum VALUES('保密');

Query OK, 1 row affected (0.03 sec)

mysql> SELECT * FROM testenum;

+------+

| sex |

+------+

| 男 |

| 保密 |

+------+

2 rows in set (0.00 sec)

mysql> INSERT testenum VALUES(3);

Query OK, 1 row affected (0.05 sec)

mysql> SELECT * FROM testenum;

+------+

| sex |

+------+

| 男 |

| 保密 |

| 保密 |

+------+

3 rows in set (0.00 sec)

(4)SET:保存排列的编号,不区分顺序

最多保存64个值,插值时可以插入多个值,必须插入集合中的值。

CREATE TABLE testset(

Fav SET(‘A’,’’B,’C’,’D’));

INSERT testset VALUES(‘A,B,C’);

INSERT testset VALUES(‘B,D’);

INSERT testset VALUES(‘C,D’);

INSERT testset VALUES(‘D,E’);(出错)

做权限管理时,使用集合非常简单。

实验结果:

mysql> CREATE TABLE testset(

-> fav SET('A','B','C','D'));

Query OK, 0 rows affected (0.09 sec)

mysql> INSERT testset VALUES('A,B,C');

Query OK, 1 row affected (0.03 sec)?

mysql> INSERT testset VALUES('B,D');

Query OK, 1 row affected (0.02 sec)?

mysql> INSERT testset VALUES('B,C');

Query OK, 1 row affected (0.03 sec)?

mysql> INSERT testset VALUES('B,E');

ERROR 1265 (01000): Data truncated forcolumn 'fav' at row 1

mysql> SELECT * FROM testset;

+-------+

| fav |

+-------+

| A,B,C |

| B,D |

| B,C |

+-------+

3 rows in set (0.00 sec)

首页 上一页 3 4 5 6 下一页 尾页 6/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇extended-insert对mysqldump及导.. 下一篇MySQL5.6如何优化慢查询的SQL语句..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Java 学习线路图是怎 (2025-12-25 15:19:15)
·关于 Java 学习,有 (2025-12-25 15:19:12)
·有没有Java swing教 (2025-12-25 15:19:09)
·Start, Stop, and Di (2025-12-25 14:50:57)
·C语言入门教程:零基 (2025-12-25 14:50:54)