J2EE 开发购物网站 经验篇 - 建表

GO ON 继续进阶!!(本贴个人认为对初学者很有帮助,请大家认真看。因时间仓促,如有错误请指正)
SQL*PLUS基础
在上一贴中,我们掌握了些基本的oracle操作,如创建、授权用户,创建数据库等。在OEM(Oracle Enterprise Manager)可视化的窗口环境中,虽然我们也可以很方便地做这些事,但是事实上,用SQL语言书写在开发上更有效率!!oracle提供的SQL*Plus就是个不错的工具,如果大家喜欢窗口的开发环境,用SQLPlus Worksheet也行!下面说点基本的西西!
SQL(Structure Query Language)语言是结构化查询语言,是数据库的核心语言,是面向集合的描述性非过程化语言。
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据库控制语言DCL。
1.数据查询语言DQL的基本结构是由select子句,from子句,where子句组成的查询块:
select <字段名表> from <表或视图名> where <查询条件>
2.数据操纵语言DML完成在数据库中确定、修改、添加、删除某一数据值的任务(以下是部分常用DML语句):
insert    增加数据行到表
delete    从表中删除数据行
Update    更改表中数据
3.数据定义语言DDL完成定义数据库的结构,包括数据库本身、数据表、目录、视图等数据库元素(以下是部分常用DDL语句)
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*Plus后,我们做如下操作(这次没有截图,有详细的说明)
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(<size>):固定长度字符串,最大长度为2000字节,如果不指定长充,缺省为1个字节长。
varchar2(<size>):可变长度的字符串,最大长度为4000字节,具体定义时指明最大长度,这咱类型可以放数字、字母以及ASCII码字符集(或者EBCDIC等数据库系统接受的字符集标准)中的所有符号。如果数据长度没有达到最大值,oracle会根据数据大小自动调节字段长度。是
最长用的数据类型。
nchar(<size>):根据字符集而定的固定长度字符串,最大长度2000字节。
nvarchar2(<size>):根据字符集而定的可变长度字符串,最大长度4000字节。
long:可变长字符列,最大长度限制为2GB,用于不需要作字符串搜索的长串数据。此类型是一个遗留下来的而且将来不会被支持的数据类型,逐渐被BLOB,CLOB,NCLOB等大的数据类型所取代。
numberic数据类型用来存储负的和正的整数,分数和浮点型数据,在oracle中提供的numberic数据类型:
number(<m>,<n>):可变长的数值列,允许0、正值及负值,m是所有的有效数字的位数,n是小数点以后的位数。
在oracle中提供的date数据类型:
date:缺省格式是dd-mon-yy(日-月-年)
在oracle中提供的lob数据类型:
blob、clob、nclob:三种大型对象(lob),用来保存较大的图形文件或带格式的文本文件,如word文档,以及音频、视频等非文本文件,最大长充是4GB。晕些数据存储在数据库内部保存。
bfile:在数据库外部保存的大型二进制对象文件,最大长度是4GB,这种外部的LOB类型,通过数据库记录变化情况,但是数据的具体保存是在数据库外部进行的。
在oracle中提供的raw数据类型:
raw(<size>):可变长二进制数据,具体定义字段时必须指明最大长度,这种格式用来保存较小的图形文件或带格式的文本文件,它也是一种较老的数据类型,将被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 结束///
[Ctrl+A 全部选择 然后拷贝]
说明一:建立表之间的关联
product、item、orders三个表通过公共域,通常称为键域(Key Field)进行关联,存在两种类型的键:主键(Primary key)和外部键(Foreign key)。主键使表中的数据行保持唯一,在表product中,product_id为主键,表orders中也包含有product_id,此时的product_id就是外部键。一个表的外部键从其它表中获取信息。看看上面的SQL语句,应该会了吧!
说明二:关于自动编号
在access中有自动编号的数据类型,MSSQL和MYSQL也都有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值,而oracle没有自动增长的数据类型,我们需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段,可以预见的是,有此功能,我们可以把数据从ACCESS、MSSQL或MYSQL迁移到oracle了!
create sequence type_id increment by 1 start with 1;
这句中,type_id为序列号的名称,每次增长为1,起始序号为1。
好了,咱们的数据库已经建好了,而且从中也了解到一些基本的相关知识,关于本人的用J2EE开发购物网站之二oracle篇到此结束,如有什么疑问请留言!!
在接下的第三篇weblogic中,本人将继续把个人心血经验无偿奉上,希望大家能从中有所收获!!谢谢支持!
PS:写得真累,快赶上出书了!!

(0)

相关推荐

  • 图解Eclipse j2ee开发环境的搭建过程

    Eclipse是一个开源的功能强大的ide开发环境,再加上他的扩展插件功能,使得他被广泛使用. J2ee有几种开发环境,eclipse+lomboz或者eclipse+myeclipse. Myeclipse是一个商用产品,较lomboz功能更加强,特别是在struts这样的mvc开发中. 为了能够测试,需要安装一个web server,我用的是tomcat   下面分别介绍安装和配置(win32平台).  1.jdk的安装,注意环境变量的设置,JAVA_HOME,CLASSPATH,PATH

  • J2ee 高并发情况下监听器实例详解

    J2ee 高并发情况下监听器实例详解 引言:在高并发下限制最大并发次数,在web.xml中用过滤器设置参数(最大并发数),并设置其他相关参数.详细见代码. 第一步:配置web.xml配置,不懂的地方解释一下:参数50通过参数名maxConcurrent用在filter的实现类中获取,filter-class就是写的实现类, url-pattern就是限制并发时间的url,结束! <filter> <filter-name>ConcurrentCountFilter</filt

  • J2EE验证码图片如何生成和点击刷新验证码

    验证码图片生成步骤 创建BufferedImage对象. 获取BufferedImage的画笔,即调用getGraphics()方法获取Graphics对象. 调用Graphics对象的setColor()方法和fillRect()方法设置图片背景颜色. 调用Graphics对象的setColor()方法和drawLine()方法设置图片干扰线. 调用BufferedImaged对象的setRGB()方法设置图片的噪点. 调用Graphics对象的setColor()方法.setFont()方法

  • 实战 J2EE 开发购物网站 - 创建数据库

    二:创建数据库小试牛刀oracle 8i(顺便我们练练手)(为了方便,我就将oracle 8i简写8i了)8i和9i确实有些不一样,不过在界面上区别不大,还是以我的oracle 8i为例为大家讲解一下吧!既然是实战,首先我们为自己新建一个开发用户,并创建一个表!!在oracle里创建新用户和表的方法比较多,只要你有管理员的权限(废话!),首先用最简单的,在8i的程序组中启动DBA Studio程序项,在出现的数据库链接信息中输入管理用户名和口令即可,当然,在oracle中,你可以用用户名斜杠口令

  • JDK、J2EE、J2SE、J2ME四个易混淆概念区分

    JDK,J2EE,J2SE,J2ME的概念区别是什么呢? 1.这些是什么? JDK是Java development toolkit,相当于是Java的库函数,是编译,运行java程序的工具包. J2EE是Java 2 enterprise edition是Java的一种企业版用于企业级的应用服务开发 J2SE是Java 2 standard edition是Java的标准版,用于标准的应用开发 J2ME是Java 2 Micro Edition是Java的微型版,常用于手机上的开发 J2EE,

  • 分享J2EE的13种核心技术

    Java最初是在浏览器和客户端机器中粉墨登场的.当时,很多人质疑它是否适合做服务器端的开发.现在,随着对Java2平台企业版(J2EE)第三方支持的增多,Java被广泛接纳为开发企业级服务器端解决方案的首选平台之一. 在本文中我将解释支撑J2EE的13种核心技术:JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF. J2EE平台由一整套服务(Services).应用程序接口

  • 经常听朋友说什么J2EE,终于知道点什么是J2EE了,汗一个

    经常听朋友说什么J2EE,终于知道点什么是J2EE了,汗一个,上网搜了下这个说的比较详细了,J2EE,Java2平台企业版(Java 2 Platform Enterprise Edition), 是Sun公司为企业级应用推出的标准平台.Java平台共分为三个主要版本Java EE.Java SE和Java ME. Sun公司在1998年发表JDK1.2版本的时候,使用了新名称Java 2 Platform,即"Java2平台",修改后的JDK称为Java 2 Platform Sof

  • J2EE 开发购物网站 经验篇 - 建表

    GO ON 继续进阶!!(本贴个人认为对初学者很有帮助,请大家认真看.因时间仓促,如有错误请指正)SQL*PLUS基础在上一贴中,我们掌握了些基本的oracle操作,如创建.授权用户,创建数据库等.在OEM(Oracle Enterprise Manager)可视化的窗口环境中,虽然我们也可以很方便地做这些事,但是事实上,用SQL语言书写在开发上更有效率!!oracle提供的SQL*Plus就是个不错的工具,如果大家喜欢窗口的开发环境,用SQLPlus Worksheet也行!下面说点基本的西西

  • 实战 J2EE 开发购物网站 二

    第三步,安装配置jBuilder 7 这里我安装的是weblogic版安装jBuilder不要把它装到带有空格的目录里如Prograih Files,或是中文目录中,不然编译时会出错的.安装很简单,不必多言,这里着重讲一下配置 小技巧一:大家觉得jBuilder运行时也许很慢,因为jbuilder默认使用32MB内存,如果你的内存够大的话,可以加大一点,具体办法如下,在jBuilder安装目录BIN下找到jbuilder.config文件,编辑它,改变Vmparams 后的参数,我的配置为 vm

  • 详解J2EE开发的网站部署到阿里云服务器的方法

    呐呐呐,做Java呢,最重要是要把自己的"作品" 部署到公网上去啦. 特别是初学者,需要向面试官证明自己会什么,这个真的就很重要啦,空口无凭,为什么面试官就相信你的简历内容是真的呢? 最好的办法当然就是把作品放在公网上,show 他一脸啦 对于已经参加工作的同事,这个反倒是比较简单的,因为在工作中,部署一个项目无非就是通过ftp把.war(或者其他形式)传递上去,然后重启tomcat, 等一等就完成了. 可是,如果是学习者,比已经工作的人员面临的挑战更大,为什么呢? 因为手上没有一个已

  • ORACLE学习笔记-新建用户及建表篇

    一.用户相关SQL语句 /*新建用户*/ create user SA identified by 2013; 说明:SA用户名,2013密码 /*授权connect,resource给用户sa*/ grant connect,resource to sa; 说明:CONNECT角色: --是授予最终用户的典型权利,最基本的 . ESOURCE 角色: --是授予开发人员的 /*查询所有的用户*/ select * from all_users; /*将表STU查询权限授予SA*/ GRANT

  • PHP实现一个多功能购物网站的案例

    一.需要实现的页面: Index.aspx:浏览商品页面,显示商品列表,用户可以点击"加入购物车". ViewCart.aspx:查看购物车页面,显示已购买的商品信息,可以点击"删除"和"提交添加订单购买"商品 ViewAccount.aspx:查看个人账户余额 Login.aspx:登录页面 二.实现功能: 1.显示商品列表 2.实现购买功能,购买的时候动态显示购物车中的商品数量和商品总价格 3.点击查看购物车后,显示已购买的商品.注意&quo

  • django模型层(model)进行建表、查询与删除的基础教程

    前言 在django的框架设计中采用了mtv模型,即Model,template,viewer Model相对于传统的三层或者mvc框架来说就相当对数据处理层,它主要负责与数据的交互,在使用django框架设计应用系统时,需要注意的是django默认采用的是orm框架中的codefirst模型,也就是说开发人员只需要专注于代码的编写,而不需要过多的关注数据库层面的东西,把开发人员从数据库中解放出来 django会根据Model类生成一个数据库镜像文件,然后再使用该镜像文件生成数据库,同时该文件将

  • mysql建表常用的sql语句汇总

    最近跟项目,写后台需要用到SQL语句,就整理了一下mysql建表常用sql语句,并写几个可执行SQL脚本,方便日后复习查看以及使用: 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) 断开:exit (回车) 创建授权:grant select on 数据库.* to 用户名@登录主机 identified by \"密码\" 修改密码:mysqladmin -u用户名 -p旧密码 password 新密码 删除授权: revok

  • 数据库建表设计六范式介绍

    目录 前言 1.第一范式(1NF)无重复的列(确保每列保持原子性) 2.第二范式(2NF)属性完全依赖于主键 (消除部分子函数依赖,确保表中的每列都和主键相关) 3.第三范式(3NF)属性不依赖于其它非主属性 (消除传递依赖,确保每列都和主键列直接相关,而不是间接相关) 4.BCNF 鲍依斯-科得范式 (针对某一列与复合主键中的某一列有关,而与其他主键无关) 5.4NF(第四范式) 6.5NF(第五范式) 前言 数据库设计六范式 为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则

  • sql server建表时设置ID字段自增的简单方法

    打开要设置的数据库表,点击要设置的字段,比如id,这时下方会出现id的列属性表 列属性中,通过设置"标识规范"的属性可以设置字段自增,从下图上看,"是标识"的值是否,说明id还不是自增字段 能够设置ID字段自增的字段必须是可自增的,比如int,bigint类型,而varchar类型是不可自增的.比如查看name的列属性时,可以看到"是标识"是否且不可更改. 点击"标识规范",展开后,点击"是标识"会出现下拉

随机推荐