程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql之set與enum的介紹

mysql之set與enum的介紹

編輯:關於MYSQL數據庫
set,enum的數據類型都是字符串類型的對象,其中set最多可以包含64個元素,並且可以任意取到集合中的元素。而enum則是只能取到集合中的木一個元素,最多包含65536個元素,也就是說set是多項選擇,enum是單項選擇了。
這裡我們來比較下他們之間相同點和不同點:
復制代碼 代碼如下:
mysql> create table db_set(
    -> set1 set('x','y','z') not null,
    -> enum1 enum('one','two','three') not null);
Query OK, 0 rows affected (0.06 sec)
mysql> desc db_set;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type                      | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| set1  | set('x','y','z')          | NO   |     | NULL    |       |
| enum1 | enum('one','two','three') | NO   |     | NULL    |       |
+-------+---------------------------+------+-----+---------+-------+
mysql> insert into db_set values(1,3),(1,4),(4,1);
Query OK, 3 rows affected, 1 warning (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 1
mysql> select * from db_set ;
+------+-------+
| set1 | enum1 |
+------+-------+
| x    | three |
| x    |       |
| z    | one   |
+------+-------+
3 rows in set (0.01 sec)
 

這裡我們看到了它們的輸出結果,我當時也是很不解後來才知道:
set類型中對於超出它能表示的范圍的,就用二進制來加去:
Set元素
 十進制
 二進制

‘x'
 1
 0001

‘y'
 2
 0010

‘z'
 4
 0100

enum類型超出自己能表示的范圍,就附空值了:
enum元素
 索引

null
 null

‘'
 0

‘one'
 1

‘two'
 2

‘three'
 3

現在大家明白了吧。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved