Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 表属性数据类型_Sql_Oracle - Fatal编程技术网

Sql 表属性数据类型

Sql 表属性数据类型,sql,oracle,Sql,Oracle,我需要一个帮助来选择SQL表中的数据类型。 属性需要取4个选项,例如,我想用属性status创建表,但我不知道它必须是什么数据类型,以及如何实现choose的4个选项 CREATE TABLE status ( USERNAME type_of_data (options: offline, online, away, busy) ); 我无法为每个选项再创建4个表。 有可能吗?如果没有,那更好的办法是什么 Thx您可以使用oracle中的VARCHAR或VARCHAR2数据类型来存储状

我需要一个帮助来选择SQL表中的数据类型。 属性需要取4个选项,例如,我想用属性
status
创建表,但我不知道它必须是什么数据类型,以及如何实现choose的4个选项

CREATE TABLE status (
   USERNAME type_of_data (options: offline, online, away, busy)
);
我无法为每个选项再创建4个表。
有可能吗?如果没有,那更好的办法是什么


Thx

您可以使用
oracle
中的
VARCHAR
VARCHAR2
数据类型来存储状态列

VARCHAR2数据类型存储可变长度的字符串。什么时候 创建具有VARCHAR2列的表时,指定最大值 字符串长度(以字节或字符为单位)介于1和4000字节之间 VARCHAR2列


您可以为Status定义一个表,该表有两列(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

似乎您需要一个检查约束:

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\u of_data

您可以在数据的
类型'offline'
'online'
'away'
'busy'


您还应该找到该表的主键。可能是
username
,或者您需要向其中添加一个
identity
列来生成主键。

我不知道属性是什么意思。在您发布的代码中,您正在创建一个名为
status
的数据库表,其中包含一个名为
USERNAM的列E
并且该值必须是“脱机”、“联机”、“外出”和“忙碌”中的一个。那么,你是在问什么是列
USERNAME
的合适数据类型,它将强制它只接受四个可用选项中的一个?这就是我的意思。x,我想这就是我需要的,使用约束检查如何准确地做到这一点?我想找到一些关于状态的信息,但没有找到任何内容,给出的第一个示例通过@a_horse_和_no_name,也很好,但我必须在不使用check的情况下执行,因此我认为您的示例非常符合我的需要。Thx