对属性性别施加约束,使其仅接受 '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,以确保其值为 FM