我为计算机广告资源创建了一个数据库。我的任务是说我只能允许某些字词输入“Dell”和“IBM”这样的字段。以下是我创建表的方法:
Create table computer_inventory (
assetnumber int(10) not null default 0,
manufacturer char(3) ENUM('Dell', 'IBM', 'OtherCompany') NOT NULL default ' ',
originalcost decimal(12,2) not null default 0,
currentvalue decimal(12,2) not null default 0,
boughtfrom varchar(20) not null default ' ',
instock tinyint(1) not null default 0,
currentuser varchar(20) not null default ' ',
userphonenum varchar(13) not null default ' ',
boughtdate datetime not null default '0000-00-00'
);
现在我想让一个人只能进入制造商的“DELL”或“IBM”。
答案 0 :(得分:2)
请查看此特定用例的ENUM类型。
此类型的字段允许您明确说明此列中允许的内容。对于您的情况,您需要“戴尔”和“IBM”以及您想要允许的任何其他公司。
CREATE TABLE tablename (
company ENUM('Dell', 'IBM', 'OtherCompany')
);
此命令将创建一个包含单个字段(tablename
)的表(company
)。在该字段中,只允许三个值。 '戴尔','IBM'和'其他公司'。
编辑:
根据您的修改,您可以修改manufacturer
行,如上所述。
manufacturer ENUM('Dell', 'IBM', 'OtherCompany') NOT NULL
文档中需要注意的一件事:
如果ENUM列声明为NOT NULL,则其默认值为第一个 允许值列表的元素。
在这种情况下,这意味着如果您未通过制造商,则默认为Dell
答案 1 :(得分:1)
您的代码中有两个错误:
正确的代码:
Create table computer_inventory (
assetnumber int(10) not null default 0,
manufacturer ENUM('Dell', 'IBM', 'OtherCompany') NOT NULL,
originalcost decimal(12,2) not null default 0,
currentvalue decimal(12,2) not null default 0,
boughtfrom varchar(20) not null default ' ',
instock tinyint(1) not null default 0,
currentuser varchar(20) not null default ' ',
userphonenum varchar(13) not null default ' ',
boughtdate datetime not null default '0000-00-00')