现在位置:首页->学习专题->j2ee
J2EE实例 开发购物网站全过程详细解析(下)
作者: 日期: 2007-5-21 14:23:47 访问次数:出处:
 显示选项:自动滚屏[左键停止]

oracle的数据类型

在数据库中创建数据表的时候,我们需要定义表中所有字段的类型,数据类型大致分为:character,numberic,date,lob和raw等,这些是最基本的数据类型。当然在oracle中也允许自定义数据类型。

在oracle中提供的character数据类型:

char():固定长度字符串,最大长度为2000字节,如果不指定长充,缺省为1个字节长。

varchar2():可变长度的字符串,最大长度为4000字节,具体定义时指明最大长度,这咱类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。如果数据长度没有达到最大值,oracle会根据数据大小自动调节字段长度。是最长用的数据类型。

nchar():根据字符集而定的固定长度字符串,最大长度2000字节。

nvarchar2():根据字符集而定的可变长度字符串,最大长度4000字节。

long:可变长字符列,最大长度限制为2GB,用于不需要作字符串搜索的长串数据。此类型是一个遗留下来的而且将来不会被支持的数据类型,逐渐被BLOB,CLOB,NCLOB等大的数据类型所取代。

numberic数据类型用来存储负的和正的整数,分数和浮点型数据,在oracle中提供的numberic数据类型:

number:可变长的数值列,允许0、正值及负值,m是所有的有效数字的位数,n是小数点以后的位数。

在oracle中提供的date数据类型:

date:缺省格式是dd-mon-yy(日-月-年)

在oracle中提供的lob数据类型:blob、clob、nclob:三种大型对象(lob),用来保存较大的图形文件或带格式的文本文件,如word文档,以及音频、视频等非文本文件,最大长充是4GB。晕些数据存储在数据库内部保存。

bfile:在数据库外部保存的大型二进制对象文件,最大长度是4GB,这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。

在oracle中提供的raw数据类型:

raw():可变长二进制数据,具体定义字段时必须指明最大长度,这种格式用来保存较小的图形文件或带格式的文本文件,它也是一种较老的数据类型,将被lob数据类型所取代。

long raw:可变长二进制数据,最大长度是2GB,可以用来保存较大的图形或带格式的文本文件,以及音频、视频等非文本文件,这也是一种较老的数据类型,将被lob数据类型所取代。

其它的数据类型:

rowid:这是oracle数据表中的一个伪例,它是数据表中每行数据内在的唯一标识

integer:整数类型

四、创建购物网站后台数据库

现在我们回到用J2EE体系开发购物网站的主题,开始实战建购物网站的后台数据库。为了实现购物网站的基本的功能,我们需要建立四个表:商品列表(products)、商品类型表(item)、订单列表(orders)和管理员列表(admin)。表结构如下所示:

item表结构(商品类型表)

字段名称 数据类型 允许空 主键/外键 备注

type_id INTEGER(自动编号) 否 主键 商品类别ID标记

type varchar2(30) 否 商品类别名称

product表结构(商品列表)

字段名称 数据类型 允许空 主键/外键 备注

product_id INTEGER(自动编号) 否 主键 商品ID标记

title varchar2(30) 否 商品名称

type_id INTEGER 否 外键 商品类别标记

info varchar2(80) 是 商品简介

price number(16,2) 否 商品价格

orders表结构(订单列表)

字段名称 数据类型 允许空 主键/外键 备注

order_id INTEGER(自动编号) 否 主键 订单ID标记

name varchar2(20) 否 顾客姓名

address varchar2(100) 是 发货地址

tel number(16) 是 联系电话

email varchar2(30) 否 联系email

btime date 是 订购日期

product_id INTEGER 否 外键 商品标记

uword varchar2(100) 是 顾客留言

admin表结构(管理员列表)

字段名称 数据类型 允许空 主键/外键 备注

admin_id INTEGER(自动编号) 否 主键 管理员ID标记

adminname varchar2(20) 否 管理员名称

password varchar2(20) 否 管理员密码

设计完表结构后,我们就要开始创建了。创建表我想已经不是什么难事了,那么我们要注意的是product、item、orders这三个表之间的关联,还有自动编号。

下面是完整的SQL语句,在后面我会给出详细的说明,你可以在SQL*Plus里对照着输入,也可以将它存为SQL脚本文件,在SQL*Plus或SQLPlus Worksheet里执行。当然也可以把代码直接拷贝到SQL*Plus里执行!

rem ///BY MAXUAN 开始///

create table item(

type_id integer not null,

type varchar2(30),

constraint item_pk primary key(type_id)

);

create table product(

product_id integer not null,

title varchar2(30) not null,

type_id integer not null,

info varchar2(80),

price number(16,2) not null,

constraint product_pk primary

key (product_id),

constraint product_fk foreign

key(type_id) references item(type_id)

);

create table orders(

order_id integer not null,

name varchar2(20) not null,

address varchar2(100),

tel number(16),

email varchar2(30) not null,

btime date,

product_id integer not null,

uword varchar2(100),

constraint orders_pk primary

key(order_id),

constraint orders_fk foreign

key(product_id) references product(product_id)

);

create table admin(

admin_id integer not null,

adminname varchar2(20) not null,

password varchar2(20) not null,

constraint admin_pk primary key(admin_id)

);

create sequence type_id

increment by 1 start with 1;

create sequence product_id

increment by 1 start with 1;

create sequence order_id

increment by 1 start with 1;

create sequence admin_id

increment by 1 start with 1;

rem ///BY MAXUAN 结束///

说明一:建立表之间的关联

product、item、orders三个表通过公共域,通常称为键域(Key Field)进行关联,存在两种类型的键:主键(Primary key)和外部键(Foreign key)。主键使表中的数据行保持唯一,在表product中,product_id为主键,表orders中也包含有product_id,此时的product_id就是外部键。一个表的外部键从其它表中获取信息。

说明二:关于自动编号

在access中有自动编号的数据类型,MSSQL和MYSQL也都有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值,而oracle没有自动增长的数据类型,我们需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段,可以预见的是,有此功能,我们可以把数据从ACCESS、MSSQL或MYSQL迁移到oracle了。

create sequence type_id increment

by 1 start with 1;

这句中,type_id为序列号的名称,每次增长为1,起始序号为1。 好了,咱们的数据库已经建好了,而且从中也了解到一些基本的相关知识。

⊕相关文章
  • ·J2EE实例 开发购物网站全过程详细解析(上)
  • ·Java基础-漫谈EJB在Java中的应用
  • ·精通J2EE应用程序开发之交叉分析J2EE
  • ·J2EE 全面简介
  • ·J2EE中使用Display标记库来展示表格(翻译)
  • ·EJB 3.0+Beehive开发客户反馈系统