兼容的MySQL数据类型
SET类型
SET表示一个字符串对象,可以包含0个或多个成员,但成员个数的上限为64。设置字段值时,可以取取值范围内的 0 个或多个值。SET类型在存储数据时成员个数越多,其占用的存储空间越大。
目前在建表之前需要另行自定义“set”类型,并且将“set”类型定义为varchar,同时,自定义的“set”类型名称一定要以“set_”开头。
示例:
创建:
test=# CREATE DOMAIN set_test AS varchar;
CREATE DOMAIN
test=# CREATE TABLE set_1 (
test(# id SERIAL PRIMARY KEY,
test(# name VARCHAR(64) NOT NULL,
test(# col3 set_test NOT NULL
test(# );
CREATE TABLE
插入数据:
mysql> INSERT INTO set_1(id, name, col3) VALUES(1, 'zhangsan1', 'A1,A2');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO set_1(id, name, col3) VALUES(2, 'zhangsan2', 'A1,B1');
Query OK, 1 row affected (0.00 sec)
查询结果:
mysql> SELECT * FROM set_1 where col3 = 'A1,A2' order by id;
+----+-----------+-------+
| id | name | col3 |
+----+-----------+-------+
| 1 | zhangsan1 | A1,A2 |
+----+-----------+-------+
1 row in set (0.00 sec)
枚举类型
枚举类型规范数据本身,限定只能插入规定的数据项,直接转化成数字存储而不是字符串,节省存储空间,并且在表的.frm文件中存储“数字-字符串”之间的对应关系
在建表之前需要另行自 定义枚举类型,同时,自定义的枚举类型名称一定要以“enum_”开头。
示例:
新建:
test=# CREATE TABLE enum_2 (
id SERIAL PRIMARY KEY,
name VARCHAR(64) NOT NULL,
sex enum_sex NOT NULL
);
CREATE TABLE
新增数据:
mysql> INSERT INTO enum_2(id, name, sex) VALUES(1, 'zhangsan1', 'M');
Query OK, 1 row affected (0.00 sec)