对属性性别施加约束,使其仅接受 'F' 或 'M' 字符
Putting constraint on an attribute gender so that it only accepts 'F' or 'M' characters
我正在执行一项作业,该作业正在实施一个数据库,其中包含书籍、作者、出版商和 table 个人。
CREATE TABLE IF NOT EXISTS Author (
author_id INT,
author_name VARCHAR(255),
books_written VARCHAR(255),
gender CHAR(1),
birthday DATE,
country VARCHAR(100),
PRIMARY KEY(author_name)
);
我必须将 constraint
放在我的作者 table 的性别属性上,以便此属性的组件中的唯一字符可以是 'F' 或 'M' .我只想到 CHAR(1),我知道这不是解决方案。我该怎么做?
您可以为性别列使用 ENUM
类型:
CREATE TABLE IF NOT EXISTS Author (
author_id INT,
author_name VARCHAR(255),
books_written VARCHAR(255),
gender ENUM('F', 'M'),
birthday DATE,
country VARCHAR(100),
PRIMARY KEY(author_name)
);
你可以这样做:
CREATE TABLE Author (
author_id INT,
author_name VARCHAR(255),
books_written VARCHAR(255),
gender char(1) not null,
birthday DATE,
country VARCHAR(100),
PRIMARY KEY(author_name),
constraint chk1 check (gender = 'F' or gender = 'M')
);
确保该列也标记为 NOT NULL
,以确保其值为 F
或 M
。
我正在执行一项作业,该作业正在实施一个数据库,其中包含书籍、作者、出版商和 table 个人。
CREATE TABLE IF NOT EXISTS Author (
author_id INT,
author_name VARCHAR(255),
books_written VARCHAR(255),
gender CHAR(1),
birthday DATE,
country VARCHAR(100),
PRIMARY KEY(author_name)
);
我必须将 constraint
放在我的作者 table 的性别属性上,以便此属性的组件中的唯一字符可以是 'F' 或 'M' .我只想到 CHAR(1),我知道这不是解决方案。我该怎么做?
您可以为性别列使用 ENUM
类型:
CREATE TABLE IF NOT EXISTS Author (
author_id INT,
author_name VARCHAR(255),
books_written VARCHAR(255),
gender ENUM('F', 'M'),
birthday DATE,
country VARCHAR(100),
PRIMARY KEY(author_name)
);
你可以这样做:
CREATE TABLE Author (
author_id INT,
author_name VARCHAR(255),
books_written VARCHAR(255),
gender char(1) not null,
birthday DATE,
country VARCHAR(100),
PRIMARY KEY(author_name),
constraint chk1 check (gender = 'F' or gender = 'M')
);
确保该列也标记为 NOT NULL
,以确保其值为 F
或 M
。