我需要帮助来选择SQL表中的数据类型。
该属性需要采用4个选项,例如,我想创建具有属性status
的表,但我不知道它必须是哪种数据类型,以及如何实现选择的4个选项。
CREATE TABLE status (
USERNAME type_of_data (options: offline, online, away, busy)
);
我无法为每个选项再创建4个表。
有可能吗?如果没有,哪种更好的方法呢?
Thx
答案 0 :(得分:2)
您可以为状态定义一个表,该表具有2列(ID(int),Status(VARCHAR(100)))以(离线,在线,离开,忙碌)填充您的表行,因此您可以将其ID用作外部键入其他表。
应该是:
CREATE TABLE [dbo].[TBL_STATUS](
[ID] [int] IDENTITY(1,1) NOT NULL,
[STATUS] [nvarchar](100) NOT NULL,
CONSTRAINT [PK_TBL_STATUS] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[TBL_USER](
[ID] [int] IDENTITY(1,1) NOT NULL,
[USER_ID] [int] NULL,
[USERNAME] [nvarchar](200) NULL,
[STATUS_ID] [int] NULL,
CONSTRAINT [PK_TBL_USER] PRIMARY KEY CLUSTERED
(
[ID] ASC
)
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[TBL_USER] WITH CHECK ADD CONSTRAINT [FK_TBL_USER_TBL_STATUS] FOREIGN KEY([STATUS_ID])
REFERENCES [dbo].[TBL_STATUS] ([ID])
GO
ALTER TABLE [dbo].[TBL_USER] CHECK CONSTRAINT [FK_TBL_USER_TBL_STATUS]
GO
答案 1 :(得分:1)
似乎您需要检查约束:
CREATE TABLE status
(
USERNAME varchar(100) not null,
type_of_data varchar(20) not null,
constraint check_type check (type_of_data in ('offline', 'online', 'away', 'busy'))
);
上面创建了一个包含两列的表。一个名为username
,没有任何限制(强制性规定除外),另一个名为type_of_data
。
您可以在type_of_data
列中输入的值限于'offline'
,'online'
,'away'
和'busy'
;
您还应该找到该表的主键。也许它是username
,或者可能需要向其添加一个identity
列以生成主键。
答案 2 :(得分:0)
您可以使用VARCHAR
中的VARCHAR2
或oracle
数据类型来存储状态列。
根据DOCS
VARCHAR2数据类型存储长度可变的字符串。什么时候 您创建带有VARCHAR2列的表,并指定一个最大值 介于1到4000字节之间的字符串长度(以字节或字符为单位) VARCHAR2列