帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > JAVA编程
实战 J2EE 开发购物网站 创建数据表
作者:佚名 发布时间:2005-04-02 来源:不详
 
  SQL*PLUS基础

  在上一贴中,我们掌握
OEM(Oracle Enterprise Ma
但是事实上,用SQL语言书
,如果大家喜欢窗口的开发
了些基本的oracle操作,如创建
nager)可视化的窗口环境中,虽
写在开发上更有效率!!oracle
环境,用SQLPlus Worksheet也
、授权用户,创建数据库等。在
然我们也可以很方便地做这些事,
提供的SQL*Plus就是个不错的工具
行!下面说点基本的西西!

  SQL(Structure Query
集合的描述性非过程化语言
Language)语言是结构化查询语

言,是数据库的核心语言,是面向

  SQL语言共分为四大类
控制语言DCL。
:数据查询语言DQL,数据操纵语

言DML,数据定义语言DDL,数据库


  1.数据查询语言DQL的基本结构是由s
elect子句,from子句,where子句组成的查询块:
  select <字段名表> from <表或视图名> where <查询条件>


  2.数据操纵语言DML完成在数据库中
部分常用DML语句):
确定、修改、添加、删除某一数据值的任务(以下是

  insert  增加数据行到表                                                
  delete  从表中删除数据行                                              
  Update  更改表中数据                                                  

  3.数据定义语言DDL完
据库元素(以下是部分常用D
成定义数据库的结构,包括数据
DL语句)
库本身、数据表、目录、视图等数

  create table  创建表                                            
  create index  创建索引                                          
  create view  创建视图                                            
  alter table  增加表列,重定义表列,更改存储分配                  
  drop table  删除表                                                
  drop index  删除索引                                              

  4.数据库控制语言DCL用来授予或回
生的时间及效果,对数据库实行监视等。
收访问数据库的某种特权,并控制数据库操纵事务发
如:
  grant    将权限或角色授予用户或其它角色                              
  revoke    回收用户权限                                              
  roll    回滚,是
此更改时,oracle所采取的
前最后提交的状态。
当某个对话更改了数据库中的数
保护操作。这是一个把信息恢复

据后,由于某种原因用户不想提交
到用户使update、insert、delete

  commit    提交。
库才算完成,有提交前只有

在完成数据库的插入,删除和修
操作数据库的本人才能看到,别

改操作时,只有当事务提交到数据
人只有在最后提交完成才可以看到


  接下来,我们在SQL*Plus中实战一下,为我们下面将要做的打好基础。        
  用system登陆到SQL*Pl
us后,我们做如下操作(这次没
有截图,有详细的说明)
  SQL>create user maxuan identified by max; #创建口令为max的用户maxuan

  SQL>grant connect,resource to maxuan; #为用户maxuan授权

  SQL>conn maxuan/max; #以用户maxuan进行连接

  L>create table test(a number); #建立一个名为test的表,只有字段名为A的一列,数据类型为数字

  SQL>insert into test values(1); #插入一条记录

  SQL>select * from test; #查询记录,此时A列的第一行为1

  SQL>update test set a=2; #更改记录,此时A列的第一行已改为2

  SQL>commit; #提交

  SQL>delete from test; #删除test表中所有的记录,此时test表中没有记录

  SQL>roll; #回滚到提交前,此时再查询test表,A列第一行值又回复到2


  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数据类型用来
numberic数据类型:
存储负的和正的整数,分数和浮

点型数据,在oracle中提供的

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


  在oracle中提供的date数据类型:                                      
  date:缺省格式是dd-mon-yy(日-月-年)                          

  在oracle中提供的lob数据类型:                                        
  blob、clob、nclob:
件,如word文档,以及音频
部保存。
三种大型对象(lob),用来保存
、视频等非文本文件,最大长充

较大的图形文件或带格式的文本文
是4GB。晕些数据存储在数据库内

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

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

  long raw:可变长二进
本文件,以及音频、视频等
代。
制数据,最大长度是2GB,可以
非文本文件,这也是一种较老的

用来保存较大的图形或带格式的文
数据类型,将被lob数据类型所取


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

  创建购物网站后台数据库

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

  item表结构(商品类型表)                                                  
  字段名称  数据类型    允许空  主键/外键  备注                    
  type_id  INTEGER(自动编号)  否  主键  商品类别ID标记
  type  varchar2(30)  否    商品类别名称                

  product表结构(商品列表)                                              
  字段名称  数据类型    允许空  主键/外键  备注                      
  product_id  INTEGE
R(自动编号)  否  主键 
 商品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脚本文
直接拷贝到SQL*Plus里执行
,在后面我会给出详细的说明,
件,在SQL*Plus或SQLPlus Work

你可以在SQL*Plus里对照着输入,
sheet里执行。当然也可以把代码


  代码:                                                                        
  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_p
k primary key (product_id),
  constraint product_fk foreign ke
y(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 wit
h 1;
  create sequence prod
uct_id increment by 1 start
with 1;
  create sequence order_id increme
nt by 1 start with 1;
  create sequence admin_id increme
nt by 1 start with 1;

  rem ///BY MAXUAN 结束///                                  

  说明一:建立表之间的关联                                                      
    product、item、o
存在两种类型的键:主键(P
一,在表product中,produ
product_id就是外部键。一
了吧!
rders三个表通过公共域,通常
rimary key)和外部键(Foreign
ct_id为主键,表orders中也包
个表的外部键从其它表中获取信

称为键域(Key Field)进行关联,
key)。主键使表中的数据行保持唯
含有product_id,此时的
息。看看上面的SQL语句,应该会


  说明二:关于自动编号                                                          
    在access中有自动
记录时不用操作此字段,会
立一个自动增长的序列号,
此功能,我们可以把数据从
编号的数据类型,MSSQL和MYSQL
自动获得数据值,而oracle没有
插入记录时要把序列号的下一个
ACCESS、MSSQL或MYSQL迁移到or
也都有自动增长的数据类型,插入
自动增长的数据类型,我们需要建
值赋于此字段,可以预见的是,有
acle了!
  create sequence type
_id increment by 1 start wit
h 1;
  这句中,type_id为序列号的名称,每次增长为1,起始序号为1。            
 
 
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·实战 J2EE 开发购物网站 经验篇  (2005-04-02)
 ·实战 J2EE 开发购物网站 开发环境  (2005-04-02)
 ·实战 J2EE 开发购物网站 创建数据  (2005-04-02)
 ·架构Web Service: 实战Web服务  (2005-03-12)
 ·CMP实体bean实战开发  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·谈谈JDBC
·JDBC专题介绍
·JDBC接口技术
·利用weblogic的POOL(连接池)连接
·Jsp中调用Oracle存储过程的小例子
·JSP数据库操作例程
·JSP数据库连接大全
·用连接池提高Servlet访问数据库的效
·一种简单JDBC连接池的实现
·数据库连接池Java实现小结
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统