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 ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章