我想知道我是否有必须创建的这些数据库的正确数据类型

时间:2016-10-17 14:22:19

标签: database oracle oracle11g

佣金分类列应该能够存储最大值为99的整数,并命名为comm_id。如果在添加行时未提供任何值,则应自动将Comm_id列的值设置为10。优势代码列还应包含最大值为99的整数值,并命名为ben_id。

必须创建一个新表commrate,以存储佣金率表,并且必须包含以下列:

comm_id:一个类似于添加到ACCTMANAGER表中的数字列

Comm_rank:一个字符字段,可以存储最多15个字符的储罐名称

Rate:一个可以存储两位小数的数字字段(例如.01或.03

必须创建新表,福利,以存储可用的福利计划选项,并且必须包含以下列:

ben_id:一个类似于添加到acctmanager表中的数字列

ben_plan:可以存储单个字符值的字符字段

ben_provider:一个可以存储三位数整数的数字字段

active:一个可以保存Y或N值的字符字段

我的oracle代码是

第一张表是针对acctmanager的

alter table ACCTMANAGER
add ( Comm_id number(2) default 10,
      Ben_id number(2) 
);

我选择数字的原因是因为它想要最大值99

第二张表

create table COMMRATE
( Comm_id number(2) default 10,
  Comm_rank varchar2(15),
  Rate number(0,2) 
);

我认为这是正确的,但我遇到的问题是comm_rank,因为我可以选择varchar2或char,但我更喜欢varchar2

第三个福利表

create table BENEFITS 
( Ben_id number(2),
  Ben_plan char(1),
  Ben_provider number(3),
  Active varchar2(1)
);

活动的最后一列,我选择varchar2,但我认为最好选择char,因为它只有一个可以保存Y或N值的字符。或者我应该选择char?

1 个答案:

答案 0 :(得分:0)

为提供上下文,此问题来自Joan Casteel的文本 Oracle 12c:SQL

问题来自第3章,尚未涵盖约束的概念。约束在第4章中介绍。

对于第二张桌子,我得到了:

CREATE TABLE commrate
( comm_id NUMBER(2) DEFAULT 10,
  comm_rank VARCHAR2(15),
  rate NUMBER(2,2) );

唯一的区别是“比率NUMBER(2,2)”从0变为2,因为使用语法NUMBER(p,s)... p表示该数字的左侧和右侧的总位数。小数点后的位置。

.01到.99在小数点右边有2位数字。

我认为...