Ajax/Oracle/分页查询

一:数据库连接池

    在系统初始化的时候,将数据库连接作为对象存储在数据库连接池中当用户需要访问数据库的时候,在连接池中取出一个已建立的空闲的连接对象,使用完毕将连接再放回连接池。连接的简历,断开由连接池自身来管理。

常见的数据库连接池有: C3p0、DBCP、 Tomcat Jdbc Pool、 Druid

c3p0连接池的使用:

1.导入相关jar包.

2.在项目src目录下新建一个名叫c3p0-config.xml,并配置连接池的相关信息

3.在代码中使用ComboPooledDataSource对象的getConnection()方法获取数据库连接对象

二:Ajax简介(Asynchronous(异步)   JavaScript and XML)

通过Ajax技术可以通过与后台服务器进行少量的数据交换,从而实现网页的异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行局部刷新。

三:JavaScript实现Ajax

1.获取Ajax对象
      var xhr=null;
      if(window.XMLHttpRequest){
          xhr=new XMLHttpRequest(); 
      }else{
          xhr=new ActiveXObject("Micorsoft.XMLHttp");

      }

2. 使用Ajax对象调用open("请求方式","请求路径","是否为异步")
3. 绑定状态改变事件
    xhr.onreadystatechange=function(){
          if(xhr.readyState==4){
               if(xhr.status==200){
                    // 交互成功时执行的代码
               }
           } 

    };

4. 发送请求  
    xhr.send(参数);
注意:若为post提交,则必须设置请求头消息:
setRequestHeader("content-type","application/x-www-form-urlencoded");


采用application/x-www-form-urlencoded的POST数据和url中传参只是形式不同,本质都是传递参数


四:jQuery实现Ajax

1.使用一个HTTP GET请求从服务器加载数据
   $.get( url [, data ] [, 微笑success ] )


2.使用一个HTTP POST 请求从服务器加载数据
   $.post( url [, data ] [, success ] )


3.执行一个异步的HTTP(Ajax)的请求

   $.ajax( [settings ] )

Oracle

一、Oracle安装:

   1、依次解压下图所示两个压缩包至当前文件夹,

   2、进入database文件夹,双击setup.exe,出现以下界面,复选框不勾选,点击下一步


3、选择桌面类,点击下一步

4、管理口令和确认口令输入密码:“123456”,点击下一步

5、选择响应文件,手动启动SCOTT,点击完成即可安装成功。


存储结构分为:逻辑存储结构和物理存储结构


  1. 数据块(Data  Blocks):是Oracle逻辑存储结构中最小的逻辑单位。

 一个数据块对应一个或多个物理块,大小由参数DB_BLOCK_SIZE决定

  数据块的结构包括块头(数据块标题、表目录、行目录)和存储区(自由空间、行数据)的两个部分。

2.数据区(Extent)

数据区是由联系单数据块结合而成的,它也是Oracle存储分配的最小单位。

3.段(Segment):

数据段:存储表中所有数据

索引段:存储表上最佳查询的所有索引数据

临时段:存储表排序操作期间建立的临时表的数据

回滚段:存储修改之前的位置和值

4.表空间(TableSpace)

表空间是数据库的最大逻辑划分区域

一个表空间由一个或多个数据文件组成,一个数据文件只属于一个表空间

表空间的大小是它所对应的数据文件大小的总和

默认创建的表空间:系统表空间、辅助表空间、撤销表空间、用户表空间。

5.物理存储结构:


5.1物理结构包含三种数据文件:控制文件(.TL)、数据文件(.DBF)、重做日志文件(.LOG)。

数据文件(.DBF):一个表空间可以包含几个数据文件

一个数据文件只能对应一个表空间


5.2数据文件种类:系统数据文件、回滚 数据文件、用户数据文件、临时数据文件。

5.3控制文件(.CTL)

是数据库中最小的文件,是数据库中最重要的文件

5.4日志文件(.LOG):重做日志文件和归档日志文件

重做日志文件特点:记录所有的数据变化,提供恢复机制

归档日志文件分为:归档模式和非归档模式

6 SQL*Plus工具的特点

在Oracle 11g数据库系统中,用户对数据库的操作主要是通过SQL *Plus来完成的。SQL *Plus作为Oracle的客户端工具,既可以建立位于数据库服务器上的数据连接,也可以建立位于网络中的数据连接。

特点:可以用它运行SQL查询和PL/SQL代码块并接受结果信息;
可以发布DBA命令并自动工作;
可以启动和关闭数据库;

一种创建数据库管理报告的便利方法。

连接数据库的时候出现账户锁定时:

解决办法:Step1:以管理员的身份登录数据库
    请输入用户名:sqlplus /as sysdba
    输入口令:(直接回车)
Step2:将scott用户的锁解开

    SQL> alter user scott identified by tiger account unlock;

7.查询:

简单查询语法:select [ distinct | * | 列名称 [AS][列别名],列名称[AS][列别名],…from 表名称 [表别名];

SYSTEM模式中,查询emp表:select * from soctt.emp;

在SCOTT模式下,同时查询dept和salgrade表中的所有数据:select * from dept, salgrade;

7.1排除重复行:使用distinct关键字  eg:select distinct jobfrom emp;

                    注意distinct的作用是消除重复内容,但是所谓的消除重复的内容,是指一条完整的数据全部是重复的,                     如果多行记录只有一列重复而其他列不重复,那么也是无法消除的;                         

                          当查询比较大的表时应尽可能地避免使用DISTINCT关键字。


7.2查询特定列:SELECT子句后面可以加想要查询的列名,用“,”隔开

语法:SELECT column_name1,column_name2,column_name3,column_name 

FROM 表名称;

7.3在SCOTT模式下,检索emp表中指定的列(job、ename、empno)

eg:select job、ename、empno from emp;

8.伪列:一种数据类型,唯一标识一条记录,物理位置的一个id,基于64位编码的18个字符。并不是真实的存在于数据表中的列

伪列可以从表中查询,但是不能插入、更新或删除。

用途:1.能以最快的方式访问表中的一行
2.能显示表的行是如何存储的

3.作为表中唯一标识

常用的伪列:rowid数据库中的每一行都有一个行地址,rowid伪列返回该行地址。可以使用rowid值来定位表中的一行,通常情况下,rowid值可以唯一地标识数据库的一行。

rownum:对于一个查询返回的每一行,rownum伪列返回一个数值代表的次序。返回第一行的rownum值为1,第二行的rownum值为2,以此类推。通过使用rownum伪列,用户可以限制查询返回的行数

1.查询emp表的rowid列:select rowid from emp;

2.从emp表中查询前5条数据:select * from emp where rownum< 6;

3.查询emp表中工资(sal)大于1500的数据记录:SQL> select empno,ename,sal from emp where sal > 1500;

4.查询emp表中没有奖金的员工信息:SQL> select empno,ename,sal,comm from emp where comm is null;

5.在emp表中,查询出既不是最高工资,也不是最低工资的员工信息:SQL> select empno,ename,sal from emp  where sal > (select min(sal) from emp)  and sal < (select max(sal) from emp);

6.在emp表中,查询不是销售部门(SALES)的员工信息:SQL> select empno,ename,job    from emp where deptno in  (select deptno from dept where dname<>'SALES');

7.在emp表中,使用“关联子查询”检索工资大于同职位的平均工资的员工信息:SQL> select empno,ename,sal   from emp f where sal > (select avg(sal) from emp where job = f.job) order by job;

8.通过DEPTNO(部门号)列来关联emp表和dept表,并检索这两个表中相关字段的信息:SQL> select e.empno as 员工编号, e.ename as 员工名称, d.dname as 部门 from emp e,dept d where e.deptno=d.deptno   and e.job='MANAGER';

9.通过deptno字段来内连接emp表和dept表,并检索这两个表中相关字段的信息:SQL> select e.empno as 员工编号, e.ename as 员工名称, d.dname as 部门  from emp e inner join dept d   on e.deptno=d.deptno;

外连接通常有以下三种:
左外连接:关键字为LEFT OUTER JOIN或LEFT JOIN。
右外连接:关键字为RIGHT OUTER JOIN 或RIGHT JOIN。

完全外连接:关键字为FULL OUTER JOIN或FULL JOIN。

eg:实现emp表和dept表之间通过deptno列进行右外连接:SQL> select e.empno,e.ename,e.job,d.deptno,d.dname  from emp e right join dept d  on e.deptno=d.deptno;

eg:实现emp表和dept表之间通过deptno列进行完全外连接:SQL> select e.empno,e.ename,e.job,d.deptno,d.dname  from emp e full join dept d on e.deptno=d.deptno;

eg:在emp表中检索工资(sal字段)大于2000的记录,并实现emp表与dept表的自然连接:SQL> select empno,ename,job,dname  from emp natural join dept  where sal > 2000;

eg:查询所有管理者所管理的下属员工信息:SQL> select em2.ename 上层管理者,em1.ename as 下属员工  from emp em1 left join emp em2  on em1.mgr=em2.empno order by em1.mgr;

聚合函数:

函  数

说    明

AVG(x[DISTINCT|ALL])

计算选择列表项的平均值,列表项目可以是一个列或多个列的表达式

COUNT(x[DISTINCT|ALL])

返回查询结果中的记录数

MAX(x[DISTINCT|ALL])

返回选择列表项目中的最大数,列表项目可以是一个列或多个列的表达式

MIN(x[DISTINCT|ALL])

返回选择列表项目中的最小数,列表项目可以是一个列或多个列的表达式

SUM(x[DISTINCT|ALL])

返回选择列表项目的数值总和,列表项目可以是一个列或多个列的表达式

VARIANCE(x[DISTINCT|ALL])

返回选择列表项目的统计方差,列表项目可以是一个列或多个列的表达式

STDDEV(x[DISTINCT|ALL])

返回选择列表项目的标准偏差,列表项目可以是一个列或多个列的表达式

GROUP BY函数:GROUP BY子句经常与聚集函数一起使用。使用GROUP BY子句和聚集函数,可以实现对查询结果中每一组数据进行分类统计。所以,在结果中每个数据都有一个与之对应的统计值。

函  数

说    明

AVG

返回一个数字列或是计算列的平均值

COUNT

返回查询结果中的记录数

MAX

返回一个数字列或是计算列的最大值

MIN

返回一个数字列或是计算列的最小值

SUM

返回一个数字列或是计算列的总和

3.HAVING子句

 在emp表中,首先通过分组的方式计算出每个部门的平均工资,然后再通过having子句过滤出平均工资大于2000的记录信息。

SQL> select deptno as 部门编号,avg(sal) as 平均工资    from emp   group by deptno  having avg(sal) > 2000 ;
排序:在SELECT语句中,可以使用ORDER BY子句对检索的结果集进行排序,该子句位于FROM子句之后,其语法格式如下:
]
[GROUSELECT columns_list
FROM table_name
[WHERE conditional_expressionP BY columns_list]
ORDER BY { order_by_expression [ ASC | DESC ] }  [ ,...n ]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值