如何在mysql的单列中添加项目列表

时间:2014-03-04 10:14:57

标签: mysql

我想创建表格。 例如,

create table countryrules(cname varchar(15), rule1, rule2);

此处,rule1rule2包含字符串列表。
那么,请告诉我我可以使用哪种数据类型?

3 个答案:

答案 0 :(得分:7)

从不,永远不会在一列中存储多个值!

而是使用另一个表来关联国家和规则。

country table
-------------
id
name
other_column


rule table
----------
id
name
other_column


countryrules table
------------------
country_id
rule_id

答案 1 :(得分:1)

表格栏中的

strings ..... !!

配对,这是database,它应该包含特定值,如果您打算在架构中存储string,我建议您normalize从头开始整个数据库计划然后提出架构以更有效的方式存储价值!!!!! :)

juergen d 的架构是一个很好的开始!! :d

答案 2 :(得分:1)

我不确定您是否正在尝试为列定义受约束的值列表 如果是,那么您可以尝试使用enumset值。

示例

mysql> CREATE TABLE `set_of_values` (
    ->   `e` enum('yes','no') DEFAULT 'no',
    ->   `s` varchar(10) DEFAULT NULL,
    ->   `e2` enum('ok','ok_2','not_ok') DEFAULT NULL,
    ->   `e3` enum('ok','ok_2','not_ok') NOT NULL,
    ->   `st` set('a','b','c') DEFAULT 'c'
    -> )
    -> ;
Query OK, 0 rows affected (0.45 sec)

mysql>
mysql> desc set_of_values;
+-------+----------------------------+------+-----+---------+-------+
| Field | Type                       | Null | Key | Default | Extra |
+-------+----------------------------+------+-----+---------+-------+
| e     | enum('yes','no')           | YES  |     | no      |       |
| s     | varchar(10)                | YES  |     | NULL    |       |
| e2    | enum('ok','ok_2','not_ok') | YES  |     | NULL    |       |
| e3    | enum('ok','ok_2','not_ok') | NO   |     | NULL    |       |
| st    | set('a','b','c')           | YES  |     | c       |       |
+-------+----------------------------+------+-----+---------+-------+
5 rows in set (0.01 sec)