Mysql数据类型---SET
来源:互联网 发布:vb中index 编辑:程序博客网 时间:2024/06/09 00:49
标签(空格分隔): MYSQL
SET 类型与 ENUM 类型相似。使用她指定一个 permitted values 列表。但是 SET 类型的字段可以写入列表范围内的多个值。通常,我们在一个字段存储一个值,例如,一个会员拥有一个name,一个town。SET 类型让我们可以在一个字段存储多个值。例如我们可以在一个字段存储会员的多个电话号码。
但是 SET 类型的permitted values数目不能太多,最多只能包含64个值。
创建 teams_new 表,包含teamno,playerno,division字段,其中division字段为 SET 类型
CREATE TABLE teams_new( teamno INTEGER NOT NULL PRIMARY KEY, playerno INTEGER NOT NULL, division SET ('first','second','third','fourth'))
小结:
在 SET 关键字后面使用括号列出 permitted values。这些值必须是字符表达式,即使permitted values 是一个数字序列,也必须写成字符字面量形式。
permitted values 有时也被称作 elements。divsion 字段由4个 element 组成。
插入数据行
插入数据行时,SET 类型的字段的元素必须在一个字符字面量中并且通过逗号分隔。
mysql> INSERT INTO teams_new VALUES (1, 27, 'first');Query OK, 1 row affected (0.80 sec)mysql> INSERT INTO teams_new VALUES (2, 27, 'first,third');Query OK, 1 row affected (0.05 sec)mysql> INSERT INTO teams_new VALUES (3, 27, 'first,third,sixth');ERROR 1265 (01000): Data truncated for column 'division' at row 1mysql> INSERT INTO teams_new VALUES (4, 27, 'first,fifth');ERROR 1265 (01000): Data truncated for column 'division' at row 1mysql> INSERT INTO teams_new VALUES (5, 27, NULL);Query OK, 1 row affected (0.07 sec)mysql> INSERT INTO teams_new VALUES (6, 27, 7);Query OK, 1 row affected (0.09 sec)mysql> INSERT INTO teams_new VALUES (7, 27, CONV(1001,2,10));Query OK, 1 row affected (0.07 sec)mysql> SELECT * FROM teams_new;+--------+----------+--------------------+| teamno | playerno | division |+--------+----------+--------------------+| 1 | 27 | first || 2 | 27 | first,third || 5 | 27 | NULL || 6 | 27 | first,second,third || 7 | 27 | first,fourth |+--------+----------+--------------------+5 rows in set (0.00 sec)
小结:第一行值添加了一个值 first,第二行添加了两个值,这两个值不是指定为两个字面量,而是一个字面量,即 ‘first,third’而不是‘first’,’third’.
第三行,第四行包含超出范围的值,报错。第五行输入 NULL 。第六行指定了三个值。
同 ENUM 类型一样,SET 类型字段并没有存储实际值,而是存储一个64个长度的二进制字符串。在这个字符串中,如果这个列的第一个值出现了,右数第1位是1,否则就是0。如果集合中第二个值出现了,右数第2位是1,否则就是0,以此类推。
显示 division字段内部类型
mysql> SELECT teamno teamno,division * 1,BIN(division * 1) FROM teams_new;+--------+--------------+-------------------+| teamno | division * 1 | BIN(division * 1) |+--------+--------------+-------------------+| 1 | 1 | 1 || 2 | 5 | 101 || 5 | NULL | NULL || 6 | 7 | 111 || 7 | 9 | 1001 |+--------+--------------+-------------------+5 rows in set (0.00 sec)
小结:
通过 divsion * 1 ,我们可以显示内部值。使用 BIN函数把 DECIMAL值转为二进制,并且可以看到MYSQL使用的位模式。注意,这个位模式可以相当长。
- Mysql数据类型---SET
- MySQL数据类型 ENUM和SET
- mysql中的数据类型enum和set
- MySQL 四种特殊数据类型 ENUM、SET、BOOL/BOOLEAN、TINYINT
- redis--set数据类型
- redis数据类型之set
- Redis数据类型-Set
- Redis数据类型--SET
- redis数据类型 - set类型
- Redis数据类型(Set)
- Redis---set数据类型操作
- 5、Set数据类型
- redis的数据类型-set
- Python,set数据类型
- ES6 Set数据类型
- Redis数据类型之Set
- mysql set
- MySQL--SET
- Mysql数据类型---字符串类型
- Codeforces Round #433 (Div. 2 C. Planning(优先队列)
- python类与对象part1
- Python pickle模块学习(超级详细)
- Lintcode116 Jump Game solution 题解
- Mysql数据类型---SET
- SpringData详解
- 八皇后问题
- Mysql数据类型---ENUM
- ARCore:从哪里冒出来的ARCore
- makefile 与 链接库
- 使用AdBlockPlus在App中过滤网页广告
- 简单靶点
- 爬虫学习