SQL添加一个新列,其值只能在几个固定选项中

2024-02-01

我想在我的数据表中添加一个带有 SQL 的新列,如下所示,

CREATE TABLE brands (
    Brand varchar(255),
    Contact varchar(150),
    Address varchar(255),
    Location varchar(50),
)

:

I wish to add a new column called country, and the value only can be selected from the following values: "Japan", "New Zealand", "US", "France" enter image description here

我可以添加新列,但我不知道如何设置该列的有限可选值。如果您有想法,请帮忙。非常感谢


您可以使用检查约束或外键。

检查约束:

alter table brands add country_name varchar(64) not null;
alter table brands add constraint ck_country_list 
   check (country_name in ('Japan', 'New Zealand', 'US', 'France'));

对于检查约束,允许的值永远不会改变(除非您更改约束代码)。使用外键,允许的值存储在另一个表中。只要该值存在于另一个表中,它们就允许存在于该表中。

create table countries(country_name varchar(64) not null primary key);

insert countries (country_name) 
values ('France'), ('New Zealand') -- etc

alter table brands add country_name varchar(64) not null;

alter table brands add constraint fk_brands_countries 
   foreign key (country_name) references countries (country_name);

但我们实际上可以做得更好!国家已经有一个明确定义的“事物”来唯一地标识它们:ISO 3166 国家/地区代码 https://www.iso.org/iso-3166-country-codes.html。您可以使用 2 字符、3 字符或 int 版本。对于主键来说,尽可能使用定义明确的标准始终是一个好主意。

这是超出您当前正在尝试学习的内容的下一个级别。但它可能是这样的:

create table countries
(
   country_code char(2) not null primary key clustered,
   country_name varchar(64) not null
);

insert countries (country_code, country_name)
values ('FR', 'France'), ('NZ', 'New Zealand') -- etc etc;

alter table brands add country_code char(2) not null;

alter table brands add constraint fk_brands_countries
   foreign key (country_code) references countries (country_code);

当你想获得国家名称时,你加入brands表到countries表使用country_code column.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL添加一个新列,其值只能在几个固定选项中 的相关文章

  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • 在sqlite SQL语句中与order by子句结合使用limit

    下面的两条 SQL 语句总是会产生相同的结果集吗 1 SELECT FROM MyTable where Status 0 order by StartTime asc limit 10 2 SELECT FROM SELECT FROM
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • 如何在 PostgreSQL 中使用具有多个值的 SQL LIKE 条件?

    有没有更短的方法来查找多个匹配项 SELECT from table WHERE column LIKE AAA OR column LIKE BBB OR column LIKE CCC 这个问题适用于 PostgreSQL 9 1 但如
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 如何从 PostgreSQL 中的时间戳列值提取一天中的时间(或小时)?

    我正在尝试从 PostgreSQL 中的 时间戳 列中提取一天中的时间 这是我的做法 但是 太糟糕了 知道如何做得更好吗 SELECT date part hour date demande text hours date part min
  • 当所有维度值都具有 100% 重要性时处理多对多维度

    我至少会尽力保持简洁 假设我们正在跟踪一段时间内的账户余额 所以我们的事实表将包含诸如 账户余额情况表 FK 账户ID FK 日期ID Balance 显然你有一个账户维度表 and a 日期维度表 所以现在我们可以轻松地过滤帐户或日期 或
  • PHP 通过 SSL 连接到 MS SQL

    我想要实现的目标非常简单 我想通过安全连接从 PHP 脚本连接到外部 MS SQL 数据库 然而 这已被证明是有问题的 到目前为止 经过三个小时的研究 我不知所措 客户端的平台是Ubuntu 这意味着我无法使用SQLSRV 安全连接已经在不
  • 跨多个表进行搜索,并在结果行中显示表名称

    如何构建 SQL 语句以跨多个平面不相关的表运行 并使用选择结果和结果来自的表的名称显示结果 这种情况是这样的 我有几个表 每个表都有相同的列名 这是我从外部各方收到的数据 并将其存储在不同的表中 相同的表看起来像 Table 1 pid
  • 自加入表

    我有一张像这样的桌子 Employee name salary a 10000 b 20000 c 5000 d 40000 我想获取所有工资高于A工资的员工 我不想使用任何嵌套或子查询 在采访中被问及并暗示是使用自连接 我真的不知道如何实
  • SQL Server 列名区分大小写

    我使用的数据库具有 French CI AS 排序规则 CI 应该代表不区分大小写 但无论如何都是区分大小写的 我试图理解为什么 我断言这一点的原因是 使用 GIVEN 案例设置进行批量插入失败 但使用另一个 Given 案例设置则成功 例
  • 如何将表中不存在但原始SQL中存在的实体字段设置为别名?

    假设我们有一个这样的查询 SELECT CUSTOM EXPRESSION as virtualfield FROM users 用户的实体本身具有 虚拟字段 但映射注释没有 因为表没有该字段 假设它作为原始 SQL 执行 我们如何使用上面
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何使用sql作为xml路径('')但保留回车符

    我有下面的代码 select select cast Narrative as Varchar max char 13 from officeclientledger where ptmatter matter and ptTrans 4
  • C#的数组列表可以用来填充SSIS对象变量吗?

    我已在 C 脚本中填充了一个列表 并将其值分配给 SSIS 对象变量 然后 我使用该对象变量通过循环遍历 For every do 枚举器来执行一些 SQL 查询 我尝试通过 Foreach ado 枚举器执行此操作 但出现错误 X 变量不
  • 在 postgres 查询中使用列表

    我有一个动态列表 list a b c d 所以长度可能会改变 我想在查询中比较这些列表值 select from student where name in all the list values 我想将列表值传递到此查询中 我怎样才能做
  • SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

    也CHAR CHARACTER and VARCHAR CHARACTER VARYING SQL 提供了NCHAR NATIONAL CHARACTER and NVARCHAR NATIONAL CHARACTER VARYING 类型
  • 在 Oracle 行的多个列上使用透视

    我在 Oracle 表中有以下示例数据 tab1 我正在尝试将行转换为列 我知道如何在某一列上使用 Oracle 数据透视表 但是否可以将其应用于多个列 样本数据 Type weight height A 50 10 A 60 12 B 4

随机推荐

  • Java编译器的内部架构[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我一直在努力Java从8年多开始 上周 在我公司的一次小型会议上 我的一位同事问我到底如何Java Compiler工作 我无言以对
  • C++ 中整数可以是 NaN 吗?

    我可以设置一个int to NaN 如果是 那么我如何检查是否int is NaN or not 不 NaN 是浮点值 每个可能的值int是一个数字 Edit 标准说 6 2 6 240 某些填充位组合可能会产生陷阱 表示 例如 如果一个
  • 变量声明的行为如何?

    include
  • SQL Server 中区分大小写的变量

    我有一个包含多个数据库的 SQL Server 我希望其中一个数据库对变量名称区分大小写 而其他数据库则不区分大小写 我需要更改设置 以便可以运行此脚本而不会出现错误 DECLARE A int DECLARE a int 如何将一个数据库
  • Google App Engine:通过 Python 使用自定义入口点

    我开始学习 Google App Engine 并使用 Flask 应用程序编写了一个基本的 main py 文件 该文件运行良好 这是前几行代码 from flask import Flask jsonify app Flask name
  • 与 Jackson 2.9.2 兼容的 Jersey 版本有哪些

    您能帮我解决这两个疑问 问题吗 任何使用过 Jackson 2 9 2 的人都可以告诉我 Jackson 2 9 2 的兼容 Jersey 版本是什么 我目前使用 Jersey 2 23 2 但它不适用于 Jackson 2 9 2 我收到
  • 使用 Kusto 获取每组的前 1 行

    我有一个表 我想使用 Kusto 查询语言获取每个组的最新条目 这是表格 文档状态日志 ID DocumentID Status DateCreated 2 1 S1 7 29 2011 3 1 S2 7 30 2011 6 1 S1 8
  • 发送电子邮件意向

    Intent intent new Intent Intent ACTION SEND intent setType text html intent putExtra Intent EXTRA EMAIL email protected
  • $lookup 具有相同的集合

    我是 MongoDB 新手 所以我不确定我的问题表述是否正确 我有一个集合 其中的数据如下所示 id ObjectId 66666 Id 994 PostType 1 AnswerId 334 CreationDate ISODate 19
  • 退出钛合金中的应用程序(iOS)

    iOS 相当于 win close var activity Titanium Android currentActivity activity finish Thanks 没有 钛 此外 苹果明确不鼓励这样做 iOS 应用程序从不显示关闭
  • Django模板,如何制作一个选择预定义值的下拉框?

    我试图创建一个下拉列表框 其中所选值等于从模板值传递的值 但没有成功 谁能看一下并告诉我我做错了什么
  • 具有插入曲线和透明背景的 CSS 形状

    我需要创建一个像这张图片一样的 CSS 形状 请检查这个fiddle http jsfiddle net KB2nY 我的工作 我已经创造了类似的东西 但我无法给它一条曲线 shape border left 70px solid tran
  • 停止执行 PerformSelector:

    非常基本的问题 self performSelector selector startSequence withObject nil afterDelay 1 0 但是 有没有办法在调用后阻止它呢 谢谢你的帮助 迪斯科 你要 NSObjec
  • AttributeError:既没有与关联的“InstrumentedAttribute”对象也没有“Comparator”对象

    我有一个表定义为 class Results db Model tablename results event id db Column db Integer db ForeignKey Events id primary key True
  • Visual Studio 中的代码指标计算

    以下代码指标计算的首选分数范围是多少 可维护性指标 圈复杂度 传承深度 类耦合 理论上的最佳值为 可维护性指数 100 数值越高 可维护性越好 圈复杂度 1 代码可以采用的不同路径的数量 继承深度 1 继承树中该类定义之上的类定义数量 不包
  • 如何监听 Fennec 扩展的页面加载?

    我正在为 Fennec 开发一个简单的扩展 它必须向每个加载的页面添加特殊的 HTML 元素 我创建了这个简单的overlay js var MyAddon onLoad function aEvent var appcontent doc
  • 是否有命名实体框架迁移的最佳或推荐实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 使用实体框架代码优先迁移时 是否有为每个迁移选择名称的最佳实践 例如 每个名称可能包含版本号或对模型所做的更改或两者 Add Migration
  • Python:os.stat().st_size 给出的值与 du 不同

    我正在创建一个实用程序 它将遍历目录并获取所有目录的子目录和文件的大小并存储该值 但是 尺寸计算不正确 这是我的类 它自动递归所有子目录 class directory Class that automatically traverses
  • 如何链接到 django-cms 中未翻译页面的语言主页?

    在 django cms 中 我有两种语言 其中一页荷兰语目前尚未翻译成英语 查看此页面时 语言选择器不提供英文翻译的链接 因为没有 但是 我想将链接链接到英文翻译以链接到主页 或其他一些英文页面 如果有意义的话 现在我可以自己创建所需的模
  • SQL添加一个新列,其值只能在几个固定选项中

    我想在我的数据表中添加一个带有 SQL 的新列 如下所示 CREATE TABLE brands Brand varchar 255 Contact varchar 150 Address varchar 255 Location varc