命令行进行Oracle数据库导入导出操作

1、资源管理器进到Oracle的bin目录下(我的是C:oracleproduct10.2.0db_1bin),Shift+鼠标右键,选择“在此处打开命令行窗口” ,进入命令行窗口进行操作。

2、导出:(查看帮助:exp help=y)

命令:exp USERID@DBName file=d:***bak.dmp owner=userName log=d:***bak.log

例:exp znwy/znwy@orcl file=d:znwy_20131119_bak.dmp owner=znwy log=d:znwy_20131119_bak.log

3、导入:(查看帮助:imp help=y)

命令:imp USERID@DBName file=d:***bak.dmp fromuser=userName log=d:***bak.log

例:imp znwy/znwy@orcl file=C:Usersdesk77znwy_20131119_bak.dmp fromuser=znwy log=C:Usersdesk77znwy_20131119_bak.log

Oracle trunc用法

获取当前月份第一天select trunc(sysdate,’mm’) from dual
结果:2013/10/1

TRUNC()函数分两种
1.TRUNC(for dates)
TRUNC函数为指定元素而截去的日期值。
其具体的语法格式如下:
TRUNC(date,[fmt])
其中:
date 一个日期值
fmt 日期格式,该日期将由指定的元素格式所截去。忽略它则由最近的日期截去

下面是该函数的使用情况:
TRUNC(TO_DATE(’24-Nov-1999 08:00 pm’,’dd-mon-yyyy hh:mi am’))
=’24-Nov-1999 12:00:00 am’
TRUNC(TO_DATE(’24-Nov-1999 08:37 pm’,’dd-mon-yyyy hh:mi am’,’hh’)) =’24-Nov-1999 08:00:00 am’

2.TRUNC(for number)
TRUNC函数返回处理后的数值,其工作机制与ROUND函数极为类似,只是该函数不对指定小数前或后的部分做相应舍入选择处理,而统统截去。
其具体的语法格式如下:
TRUNC(number[,decimals])
其中:
number 待做截取处理的数值
decimals 指明需保留小数点后面的位数。可选项,忽略它则截去所有的小数部分

下面是该函数的使用情况:
TRUNC(89.985,2)=89.98
TRUNC(89.985)=89
TRUNC(89.985,-1)=80
注意:第二个参数可以为负数,表示为小数点左边指定位数后面的部分截去,即均以0记。
问:我有一个表,其中包含两个日期”vis_dt1″ 和”vis_dt2″。我想要找到落在某个范围之外的所有的”vis_dt2 dates”,例如”vis_dt1″之后的144-260天,但是包括了”vis_dt1″在内。我知道Oracle给我之间的天数,但是我如何才能调整为第一天?有没有通用的方法可以这样的运行日期?
答:我认为你的where子句中应制定如下的条件来表达你的需求:
  TRUNC(vis_dt2) NOT BETWEEN trunc(visdt1+144) and trunc(visdt1+260)
  AND trunc(vis_dt2) >= trunc(vis_dt1)

取2个日期之间的天数,用法示例:

select trunc(to_date(‘20040102′,’yyyymmdd’) – to_date(‘200312′,’yyyymm’)) from dual;
结果:32
select trunc(to_date(‘200401′,’yyyymm’) – to_date(‘200312′,’yyyymm’)) from dual;
结果:31
select trunc(to_date(‘2004′,’yyyy’) – to_date(‘2003′,’yyyy’)) from dual;
结果:365

Oracle 连接查询

oracle左连接,右连接查询

在Oracle PL-SQL中,左连接和右连接以如下方式来实现  查看如下语句:

SELECT emp_name, dept_name

FORM Employee, Department

WHERE Employee.emp_deptid(+) = Department.deptid

此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向, 右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配, 也就是说上例中无论会不会出现某个部门没有一个员工的情况, 这个部门的名字都会在查询结果中出现。

反之:

SELECT emp_name, dept_name

FORM Employee, Department

WHERE Employee.emp_deptid = Department.deptid(+)

 则是左连接,无论这个员工有没有一个能在Department表中得到匹配 的部门号,这个员工的记录都会被显示.

mysql存储过程

1. 存储过程简介

我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

一个存储过程是一个可编程的函数,它在数据库中创建并保存。它可以有SQL语句和一些特殊的控制结构组成。当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有用的。数据库中的存储过程可以看做是对编程中面向对象方法的模拟。它允许控制数据的访问方式。

存储过程通常有以下优点:

(1).存储过程增强了SQL语言的功能和灵活性。存储过程可以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。

(2).存储过程允许标准组件是编程。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。而且数据库专业人员可以随时对存储过程进行修改,对应用程序源代码毫无影响。

(3).存储过程能实现较快的执行速度。如果某一操作包含大量的Transaction-SQL代码或分别被多次执行,那么存储过程要比批处理的执行速度快很多。因为存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,并且给出最终被存储在系统表中的执行计划。而批处理的Transaction-SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。

(4).存储过程能过减少网络流量。针对同一个数据库对象的操作(如查询、修改),如果这一操作所涉及的Transaction-SQL语句被组织程存储过程,那么当在客户计算机上调用该存储过程时,网络中传送的只是该调用语句,从而大大增加了网络流量并降低了网络负载。

(5).存储过程可被作为一种安全机制来充分利用。系统管理员通过执行某一存储过程的权限进行限制,能够实现对相应的数据的访问权限的限制,避免了非授权用户对数据的访问,保证了数据的安全。

2. MySQL存储过程的创建

(1).创建存储过程
  1. DELIMITER //
  2. DROP PROCEDURE IF EXISTS `PROC_TEST`//
  3. CREATE PROCEDURE `PROC_TEST`(TABLE_NAME VARCHAR(20),NUM INT)
  4. BEGIN
  5.     SELECT * FROM TABLE_NAME LIMIT NUM;
  6. END//
  7. DELIMITER ;
(2).调用存储过程
           CALL PROC_TEST(‘USER’,20);
(3).删除存储过程
           DROP PROCUDURE productpricing

Servlet和JSP本质的区别

其中jsp与servlet是没有本质区别的,因为jsp最后在提交的时候还是要编译成servlet类。JSP是Servlet技术的扩展,是基于java servlet技术,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是”类servlet”。
其中两者也有最大的不同,就是当你用jsp写的时候出错不容易排错.但是写到servlet里面 那就方便多了,就像写java 类一样.

JSP的职责:从数据库取出数据,显示所有的留言信息(当中要用少量的,简单的逻辑处理:循环)、显示签写留言的页面(几乎全部都是html)。
Servlet的职责:接受签写留言页面提交过来的标单数据,进行数据检验,如果正确,则存入数据库并返回留言的显示页面;如果数据有误,给出错误提示后返回签写留言的页面。可以看到,这个就叫做逻辑处理。这些你也完全可以放在JSP中实现,但是用Servlet,其效率和安全性高多了,也让JSP页面变得很简洁明了。
JavaBean的职责:其实一般的留言板是不需要用到JavaBean的,但在这里,为了让你明白,还是牵强的把JavaBean用进来。所谓JavaBean,就是一个很简单的Java类,比如说,网上商城的所有商品是一个商品类,论坛中所有的帖子是一个帖子类,这里,留言板的所有留言是一个留言类,叫做Message类。每个类有着它特定的属性和方法。对于Message类,其属性有主题、内容、日期、留言者等,其方法可以有添加留言、删除留言、修改留言等。使用JavaBean,主要是为了让JSP编程能够适应Java程序员的习惯,直接对类和实例进行操作,而不是直接去操作数据库。

Javabean 就是一个类,这个类就定义一系列 get<Name> 和 set<Name> 方法。

JavaBean与类库的区别:
(1)并不是所有有用的模块都必须转化成Bean.Bean主要是能被用来可视化操作去完成一些效果.
(2)类库是一个提供函数操作给编程者的一个有效操作,但是并不能从可视化操作中来获益.
(3)举个例子来说:提供JDBC数据库访问的API作为一个类库比作为一个bean要好,因为JDBC的核心是用一个可编程的API,并不是能够直接展现于可视化操作.然而,写一个数库库访问Bean在JDBC的顶层还是有意义的.例如,你可以写一个能定制的"Select"bean以助于用户去组成一个查询语句,并且程序运行时用JDBC去运行这个查询语句,并显示结果集
EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序,类似微软的.com技术。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。
EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。