JAVA—咖啡館

          ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術,交流工作經驗,分享JAVA帶來的快樂!本網站部分轉載文章,如果有版權問題請與我聯系。

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

          公告

           

          Locations of visitors to this page
          點擊這里給我發消息 點擊這里給我發消息

          常用鏈接

          留言簿(17)

          隨筆分類(542)

          隨筆檔案(438)

          文章分類(182)

          文章檔案(142)

          新聞分類

          ※→ 【JAVA文檔】

          ※→ 【親人博客】

          ※→ 【休閑娛樂】

          ※→ 【友情鏈接】

          ※→ 【學習網站】

          ※→ 【服務網站】

          ※→ 【著名網站】

          ※→ 【阿里博客】

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          【數據庫】

          收集數據庫相關技術文章
               摘要: 分析函數2(Rank, Dense_rank, row_number)



          目錄
          ===============================================
          1.使用rownum為記錄排名
          2.使用分析函數來為記錄排名
          3.使用分析函數為記錄進行分組排名

          一、使用rownum為記錄排名:

          在前面一篇《Oracle開發專題之:分析函數》,我們認識了分析函數的基本應用,現在我們再來考慮下面幾個問題:

          ①對所有客戶按訂單總額進行排名
          ②按區域和客戶訂單總額進行排名
          ③找出訂單總額排名前13位的客戶
          ④找出訂單總額最高、最低的客戶
          ⑤找出訂單總額排名前25%的客戶  閱讀全文
          posted @ 2016-02-26 13:01 rogerfan 閱讀(322) | 評論 (0)  編輯

          posted @ 2015-09-26 16:49 rogerfan 閱讀(362) | 評論 (0)  編輯

               摘要: 本文是關于MySQL數據庫性能優化方面的問題,希望對初中級MySQL DBA以及其他對MySQL性能優化感興趣的朋友們有所幫助。
          在平時被問及最多的問題就是關于MySQL數據庫性能優化方面的問題,所以最近打算寫一個MySQL數據庫性能優化方面的系列文章,希望對初中級MySQL DBA以及其他對MySQL性能優化感興趣的朋友們有所幫助。

          數據庫屬于IO密集型的應用程序,其主職責就是數據的管理及存儲工作。而我們知道,從內存中讀取一個數據庫的時間是微秒級別,而從一塊普通硬盤上讀取一個IO是在毫秒級別,二者相差3個數量級。所以,要優化數據庫,首先第一步需要優化的就是IO,盡可能將磁盤IO轉化為內存IO。本文先從MySQL數據庫IO相關參數(緩存參數)的角度來看看可以通過哪些參數進行IO優化:

          ?query_cache_size/query_cache_type (global)

          Query cache作用于整個MySQL Instance,主要用來緩存MySQL中的ResultSet,也就是一條SQL語句執行的結果集,所以僅僅只能針  閱讀全文
          posted @ 2015-09-10 19:22 rogerfan 閱讀(406) | 評論 (0)  編輯

               摘要: mysql cache功能分析:

          1 mysql的cache功能的key的生成原理是:把select語句按照一定的hash規則生成唯一的key,select的結果生成value,即 key=>value。所以對于cache而言,select語句是區分大小寫的,也區分空格的。兩個select語句必須完完全 全一致,才能夠獲取到同一個cache。

          2 生成cache之后,只要該select中涉及到的table有任何的數據變動(insert,update,delete操作等),相 關的所有cache都會被刪除。因此只有數據很少變動的table,引入mysql 的cache才較有意義。關于這方面的測試,可以參考:《Query Cache,看上去很美》一文。

          所以,mysql的cache功能只適用于下列場合:數據變動較少,select較多的table。

          那么。在復雜的系統中,如何使用mysql的cache功能呢,基本方法如下:

          配置query_cache_type,同時改寫程序。

          quer  閱讀全文
          posted @ 2015-09-10 19:20 rogerfan 閱讀(434) | 評論 (0)  編輯

          posted @ 2014-07-16 11:58 rogerfan 閱讀(2990) | 評論 (0)  編輯

               摘要: PowerDesigner對數據庫反向建立PDM可以使用sql方式,這個很簡單,直接導入建表sql文件就可以了。
          要說的是使用數據庫做源的建模方式,以前弄過一次,很久沒弄忘了,這次要弄在網上搜了一下,結果不太滿意,于是自己重新整理了一個步驟,貼出來共享一下,也算給自己做個備忘。

          注意事先安裝好Oracle客戶端,并且正確配置好tns。

          1、 新建PDM:
          選擇菜單File->New Model,【Model type】選擇Physical Data Model,【Model name】 自由命名,【DBMS】選擇“ORACLE Version 10gR2”,OK。  閱讀全文
          posted @ 2014-02-10 09:29 rogerfan 閱讀(2335) | 評論 (0)  編輯

          posted @ 2013-03-31 05:17 rogerfan 閱讀(1310) | 評論 (0)  編輯

               摘要: 最近做一個項目,客戶希望可以自己選擇想要查看的列表,這樣就不好辦了,選擇列表的名字他們也想自定義,沒辦法這就需要查看數據表中字段,中文說明,默認標志了。在網上查了部分資料但是發現粘上去的代碼都存在問題,無奈只好自己修改了一下,代碼如下:

          如下代碼能正常運行,都是網上查找資料最后拼湊總結出來的。條件就自己加吧。網上好像也有不少類型的東西,這里留著以備不時只需!  閱讀全文
          posted @ 2013-03-31 04:59 rogerfan 閱讀(851) | 評論 (0)  編輯

               摘要: 如果做表單自定義或做數據庫管理軟件,就必須能自動取得某個用戶下數據庫的一些信息。比較有用的有:
          表名,字段英文名,字段中文名,字段的類型,字段的長度等。其中,字段的中文名按照數據庫的記錄是無法取到的,但是我們可以變通一下,
          通過comments去記錄字段中文名。
          //取得該用戶下所有的表
          select * from user_tables;
          //取得表名為Sysuser的注釋信息
          select * from user_tab_comments where table_name = 'SYSUSER';
          //取得該用戶下表名為Sysuser表的結構
          select * from user_tab_columns where table_name='SYSUSER';
          //取得該用戶下表名為sysuser表中字段的注釋信息
          select * from user_col_comments where table_name = 'SYSUSER';  閱讀全文
          posted @ 2013-03-31 04:46 rogerfan 閱讀(2473) | 評論 (0)  編輯

               摘要: 目標:
          本文主要介紹PowerDesigner中概念數據模型 CDM的基本概念。

          一、概念數據模型概述
          數據模型是現實世界中數據特征的抽象。數據模型應該滿足三個方面的要求:
          1)能夠比較真實地模擬現實世界
          2)容易為人所理解
          3)便于計算機實現

          概念數據模型也稱信息模型,它以實體-聯系(Entity-RelationShip,簡稱E-R)理論為基礎,并對這一理論進行了擴充。它從用戶的觀點出發對信息進行建模,主要用于數據庫的概念級設計。

          通常人們先將現實世界抽象為概念世界,然后再將概念世界轉為機器世界。換句話說,就是先將現實世界中的客觀對象抽象為實體(Entity)和聯系(Relationship),它并不依賴于具體的計算機系統或某個DBMS系統,這種模型就是我們所說的CDM;然后再將CDM轉換為計算機上某個DBMS所支持的數據模型,這樣的模型就是物理數據模型,即PDM。  閱讀全文
          posted @ 2013-02-28 21:53 rogerfan 閱讀(599) | 評論 (0)  編輯

               摘要: 1. SELECT子句中避免使用 “*”
          當你想在SELECT子句中列出所有的COLUMN時,使用動態SQL列引用 ‘*’ 是一個方便的方法.不幸的是,這是一個非常低效的方法. 實際上,ORACLE在解析的過程中, 會將“*” 依次轉換成所有的列名, 這個工作是通過查詢數據字典完成的, 這意味著將耗費更多的時間.

          2.使用DECODE函數來減少處理時間
          使用DECODE函數可以避免重復掃描相同記錄或重復連接相同的表. 例如:
          Sql代碼 1.SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’;
          2.SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ‘SMITH%’;
          SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%’;   閱讀全文
          posted @ 2010-11-19 14:06 rogerfan 閱讀(561) | 評論 (0)  編輯

               摘要: Oracle、DB2、SQLSERVER、Mysql、Access分頁SQL語句梳理
          最近把平時在項目中常用到的數據庫分頁sql總結了下。大家可以貼出分頁更高效的sql語句。
          sqlserver分頁
          第一種分頁方法
          需用到的參數:
          pageSize 每頁顯示多少條數據
          pageNumber 頁數 從客戶端傳來
          totalRecouds 表中的總記錄數 select count (*) from 表名
          totalPages 總頁數
          totalPages=totalRecouds%pageSize==0?totalRecouds/pageSize:totalRecouds/pageSize+1
          pages 計算前pages 條數據
          pages= pageSize*(pageNumber-1)   閱讀全文
          posted @ 2010-09-28 09:37 rogerfan 閱讀(878) | 評論 (0)  編輯

          posted @ 2010-08-16 14:45 rogerfan 閱讀(258) | 評論 (0)  編輯

          posted @ 2010-08-11 16:11 rogerfan 閱讀(536) | 評論 (0)  編輯

          posted @ 2010-07-13 10:23 rogerfan 閱讀(437) | 評論 (0)  編輯

               摘要: 對比版本
          Release 10.2.0.1.0 XE windowsXP
          5.0.45-community-nt-log MySQL Community Edition (GPL)

          當作計算器
          SQL> select 1+1 from dual;
          mysql> select 1+1;

          mysql> select 1+1 from dual;

          顯示表結構
          SQL> desc 表名
          mysql> desc 表名;

          SQL> describe 表名
          mysql> describe 表名;

          mysql> explain 表名;

          注意:explain 也可以用來獲取執行計劃。

          需要訪問:

          User_tables、user_tab_cols、USER_COL_COMMENTS、USER_INDEXES等等字典表。
          mysql> show columns fro  閱讀全文
          posted @ 2010-07-08 15:40 rogerfan 閱讀(1522) | 評論 (0)  編輯

               摘要: 方法1:
          適用于 SQL Server 2000/2005
          SELECT TOP 頁大小 *
          FROM table1
          WHERE id NOT IN
          (
          SELECT TOP 頁大小*(頁數-1) id FROM table1 ORDER BY id
          )
          ORDER BY id
            閱讀全文
          posted @ 2010-04-30 10:26 rogerfan 閱讀(1182) | 評論 (0)  編輯

               摘要: SQL Server 2000企業版本適用于WIN 2000操作系統,Windows 2003操作系統和Windows XP一般裝不了,只能安裝個人版,這讓我們用XP操作系統的程序員很頭疼,為了使用SQL Server 2000還得裝個Windows 2000操作系統,下面介紹一下在Windows XP下安裝SQL Server 2000企業版的方法。

          一、在SQL服務器的安裝盤中找到MSDE這個目錄,并且點擊SETUP.EXE安裝它,過程簡單,直接下一步就OK 了。

          二、重啟系統Windows XP,在任務欄右下角就可以看到SQL服務的圖標出現了。

          三、再拿出SQL服務器版的安裝光盤,直接安裝客戶端工具,安裝方法:點擊光盤根目錄下的AUTORUN.EXE,選擇“安裝SQL Server 2000組件“,選擇”安裝數據庫服務器“, 根據提示安裝,自檢過程中會提示操作系統不是SERVER版,只安裝客戶端工具。  閱讀全文
          posted @ 2010-04-28 17:07 rogerfan 閱讀(312) | 評論 (0)  編輯

               摘要: Oracle數據庫的三種標準的備份方法:
          1.導出/導入(EXP/IMP)。

          2.熱備份。

          3.冷備份。

          注釋:導出備件是一種邏輯備份,冷備份和熱備份是物理備份。

          一、 導出/導入(Export/Import)

          利用Export可將數據從數據庫中提取出來,利用Import則可將提取出來的數據送回到Oracle數據庫中去。

          1、簡單導出數據(Export)和導入數據(Import)

          Oracle支持三種方式類型的輸出:   閱讀全文
          posted @ 2010-04-27 09:25 rogerfan 閱讀(311) | 評論 (0)  編輯

               摘要: 當你需要同時包含日期和時間信息的值時則使用DATETIME類型。MySQL以'YYYY-MM-DD HH:MM:SS'格式檢索和顯示DATETIME值。支持的范圍為'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”表示盡管先前的值可能工作,但沒有保證)。

          當你只需要日期值而不需要時間部分時應使用DATE類型。MySQL用'YYYY-MM-DD'格式檢索和顯示DATE值。支持的范圍是'1000-01-01'到 '9999-12-31'。

          TIMESTAMP列類型的屬性不固定,取決于MySQL版本和服務器運行的SQL模式。這些屬性將在本節后面描述。
            閱讀全文
          posted @ 2010-04-24 07:57 rogerfan 閱讀(15920) | 評論 (0)  編輯

               摘要: 本章介紹Oracle 9i網絡中兩種主要的成分——數據庫服務器和治理客戶機的安裝和配置過程。本章目的在于幫助讀者把握如何安裝Oracle 9i以及如何配置Oracle 9i網絡環境。
          本書采用windows 2000 Server作為安裝的網絡操作系統平臺,數據庫服務器采用Oracle 9i Database for Windows 2000的企業版。
          2.1.1 安裝的硬件環境需求
          下列從5個主要的方面闡述Oracle 9i對硬件環境的要求。
          1. 對CPU的要求
          CPU最低配置到Pentium 166就可以。
          2. 對內存的要求
          內存容量最低為64MB,最好在256MB以上。
          3. 對硬盤的要求
          建議配置8GB容量以上硬盤。
          4. 對光驅的要求
          建議選用快速光驅,16倍速以上。
          5. 對網卡的要求
          一般可以選用10/100MB自適應網卡。  閱讀全文
          posted @ 2010-03-24 15:55 rogerfan 閱讀(280) | 評論 (0)  編輯

               摘要: 匯總:
          set autotrace on
          set autotrace traceonly explain
          set timing on

          或通過SQL*PLUS trace,然后查看user_dump_dest下的跟蹤文件,使用tkprof工具格式化后閱覽。
          alter session set events '10046 trace name context forever,level 12';
          alter session set events '10046 trace name context off';
          SELECT p.spid,s.username FROM v$session s,v$process p WHERE s.audsid=USERENV('sessionid') AND s.paddr = p.addr;

          使用方法示例:
          DBserver% sqlplus perf/perf
          SQL*Plus: Release 9.2.0.6.0 - Production on Mon  閱讀全文
          posted @ 2010-03-24 14:51 rogerfan 閱讀(613) | 評論 (0)  編輯

               摘要: 一、下載

          1、PowerDesigner 12.5官方下載地址 +|'}kOAa
           http://download.sybase.com/eval/PowerDesigner/powerdesigner125_eval.exe
           大小125 MB (132,006,349 字節) uzR(8lA
            閱讀全文
          posted @ 2010-03-17 16:09 rogerfan 閱讀(55508) | 評論 (36)  編輯

               摘要: 為了減輕DBA的工作,數據庫自動備份當然少不了,今天我和大家一起來學習通過crontab實現mysql數據的自動備份

          我們在/etc/cron.daily/目錄下創建文件backup內容如下

          #!/bin/bash
          #定義變量name的值,/bin/date日期格式為Y年-m月-d日
          name=`/bin/date "+%Y-%m-%d"`
          #/usr/bin/mysqldump 備份數據庫的命令路徑
          #-u root 數據庫的用戶名
          #-p password 數據庫的密碼把password替換成你自己的密碼  閱讀全文
          posted @ 2009-08-19 11:54 rogerfan 閱讀(627) | 評論 (0)  編輯

               摘要: 首先,設置mysql的環境變量(在path中添加%MYSQL_HOME%\bin),重啟電腦。
          完整代碼:
          /**
          * @param args
          */
          public static void main(String[] args) {
          /*
          * 備份和導入是一個互逆的過程。
          * 備份:程序調用mysql的備份命令,讀出控制臺輸入流信息,寫入.sql文件;
          * 導入:程序調用mysql的導入命令,把從.sql文件中讀出的信息寫入控制臺的輸出流
          * 注意:此時定向符">"和"<"是不能用的
          */
          backup();
          load();
          }
            閱讀全文
          posted @ 2009-08-18 17:38 rogerfan 閱讀(568) | 評論 (0)  編輯

               摘要: 一、了解備份的重要性

            可以說,從計算機系統出世的那天起,就有了備份這個概念,計算機以其強大的速度處理能力,取代了很多人為的工作,但是,往往很多時候,它又是那么弱不禁風,主板上的芯片、主板電路、內存、電源等任何一項不能正常工作,都會導致計算機系統不能正常工作。當然,這些損壞可以修復,不會導致應用和數據的損壞。但是,如果計算機的硬盤損壞,將會導致數據丟失,此時必須用備份恢復數據。

            其實,在我們的現實世界中,已經就存在很多備份策略,如RAID技術,雙機熱備,集群技術發展的不就是計算機系統的備份和高可用性嗎?有很多時候,系統的備份的確就能解決數據庫備份的問題,如磁盤介質的損壞,往往從鏡相上面做簡單的恢復,或簡單的切換機器就可以了。但是,上面所說的系統備份策略是從硬件的角度來考慮備份與恢復的問題,這是需要代價的。我們所能選擇備份策略的依據是:丟是數據的代價與確保數據不丟失的代價之比。還有的時候,硬件的備份有時根本滿足不了現實需要,假如你誤刪了一個表,但是你又想恢復的時候,數據庫的備份就變的重要了。ORACLE本身就提供了強大的備份與恢復策略,這里我  閱讀全文
          posted @ 2009-06-02 16:07 rogerfan 閱讀(270) | 評論 (0)  編輯

               摘要: ----------------------------------------------------------------
          用戶授權:
          GRANT ALTER ANY INDEX TO "user_id "
          GRANT "dba " TO "user_id ";
          ALTER USER "user_id " DEFAULT ROLE ALL
          創建用戶:
          CREATE USER "user_id " PROFILE "DEFAULT " IDENTIFIED BY " DEFAULT TABLESPACE "USERS " TEMPORARY TABLESPACE "TEMP " ACCOUNT UNLOCK;
          GRANT "CONNECT " TO "user_id ";
          用戶密碼設定:
          ALTER USER "CMSDB " IDENTIFIED BY "pass_word "
          表空間創建:
          CREATE TABLESPACE "table_space " LOGGING DATAFILE '  閱讀全文
          posted @ 2009-06-02 16:06 rogerfan 閱讀(683) | 評論 (0)  編輯

               摘要: 13-4 Lob類型
          13.4.1 基本介紹
          Oracle和plsql都支持lob(large object) 類型,用來存儲大數量數據,如圖像文件,聲音文件等。Oracle 9i realse2支持存儲最大為4g的數據,oracle 10g realse1支持最大8到128萬億字節的數據存儲,依賴于你的db的block size。
          在plsql中可以申明的lob類型的變量如下:
          類型 描述
          BFILE 二進制文件,存儲在數據庫外的操作系統文件,只讀的。把此文件當二進制處理。
          BLOB 二進制大對象。存儲在數據庫里的大對象,一般是圖像聲音等文件。
          CLOB 字符型大對象。一般存儲大數量文本信息。存儲單字節,固定寬度的數據。
          NCLOB 字節字符大對象。存儲單字節大塊,多字節固定寬度,多字節變寬度數據。  閱讀全文
          posted @ 2009-06-02 16:02 rogerfan 閱讀(1722) | 評論 (0)  編輯

               摘要: 環境區域是用來處理SQL語句的一個oracle存儲區域。游標是指向它的指針或句柄。通過游標,PL/SQL程序可以控制這個環境區域中被處理的語句。

          Oracle中的游標有兩種:顯式游標、隱式游標。

          顯示游標是用cursor...is命令定義的游標,它可以對查詢語句(select)返回的多條記錄進行處理,而隱式游標是在執行插入(insert)、刪除(delete)、修改(update)和返回單條記錄的查詢(select)語句時由PL/SQL自動定義的。
            閱讀全文
          posted @ 2009-06-02 16:01 rogerfan 閱讀(3488) | 評論 (0)  編輯

               摘要: ORACLE 游標

          一. PL/SQL 是用游標來管理 SQL 的 SELECT 語句的 . 游標是為了處理這些語句而分配的一大塊內存 . 它提供了對一個結果集進行逐行處理的能力 , 可看作是一種特殊的指針 . 它與某個查詢結果集相關聯 , 可以指向結果集的任意位置 , 以便對指定位置的數據進行處理 . 使用它可以在查詢數據的同時對數據進行處理 .

          二. 游標的分類 : 靜態游標和動態游標

          1. 在說明游標分類之前, 先說明一下PL/SQL 的兩個操作, 游標屬性, 變量屬性

          SET SERVEROUTPUT ON ;-- 此語句用于開啟打印輸出功能

          DMBS_OUTPUT.PUT_LINE();-- 打印輸出并換行.
            閱讀全文
          posted @ 2009-06-02 16:00 rogerfan 閱讀(1156) | 評論 (0)  編輯

               摘要: 1、Sysdate 當前日期和時間


          SQL> Select sysdate from dual;

          SYSDATE
          ----------
          21-6月 -05
            閱讀全文
          posted @ 2008-03-26 10:23 rogerfan 閱讀(758) | 評論 (0)  編輯

               摘要: 常用oracle函數
          SQL中的單記錄函數
          1.ASCII
          返回與指定的字符對應的十進制數;
          SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
          A A ZERO SPACE
          --------- --------- --------- ---------
          65 97 48 32  閱讀全文
          posted @ 2008-03-03 11:08 rogerfan 閱讀(376) | 評論 (0)  編輯

               摘要: 在SQLPLUS下,實現中-英字符集轉換
          alter session set nls_language='AMERICAN';
          alter session set nls_language='SIMPLIFIED CHINESE';
          主要知識點:
            閱讀全文
          posted @ 2008-02-29 13:31 rogerfan 閱讀(687) | 評論 (0)  編輯

               摘要: Oracle時間日期操作
          sysdate+(5/24/60/60) 在系統時間基礎上延遲5秒
          sysdate+5/24/60 在系統時間基礎上延遲5分鐘
          sysdate+5/24 在系統時間基礎上延遲5小時
          sysdate+5 在系統時間基礎上延遲5天
          add_months(sysdate,-5) 在系統時間基礎上延遲5月
          add_months(sysdate,-5*12) 在系統時間基礎上延遲5年  閱讀全文
          posted @ 2008-02-29 13:12 rogerfan 閱讀(1305) | 評論 (1)  編輯

               摘要: 這段時間開始學習寫存儲過程,主要原因還是因為工作需要吧,本來以為很簡單的,但幾經挫折,豪氣消磨殆盡,但總算搞通了,為了避免后來者少走彎路,特記述與此,同時亦對自己進行鼓勵。

          一:無返回值的存儲過程

          存儲過程為:

          CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2) AS

          BEGIN


          END TESTA;
            閱讀全文
          posted @ 2007-09-26 08:30 rogerfan 閱讀(360) | 評論 (0)  編輯

               摘要: 1.日期時間間隔操作

          當前時間減去7分鐘的時間
          select sysdate,sysdate - interval '7' MINUTE from dual
          當前時間減去7小時的時間
          select sysdate - interval '7' hour from dual
          當前時間減去7天的時間
          select sysdate - interval '7' day from dual
          當前時間減去7月的時間
          select sysdate,sysdate - interval '7' month from dual
          當前時間減去7年的時間
          select sysdate,sysdate - interval '7' year from dual
          時間間隔乘以一個數字
          select sysdate,sysdate - 8 *interval '2' hour from dual
            閱讀全文
          posted @ 2007-09-17 09:00 rogerfan 閱讀(502) | 評論 (0)  編輯

               摘要: Oracle的SQL函數分為單行函數和多行函數。單行函數只對單條記錄有效,多行函數對多條記錄有效。


          單行函數包括,字符、數字、日期、轉換和普通函數。


          字符函數舉例:

          全小寫 LOWER('SQL Course') sql course
          全大寫 UPPER('SQL Course') SQL COURSE
          首字母大寫 INITCAP('SQL Course') Sql Course
          拼接 CONCAT('Good', 'String') GoodString
          取子串 SUBSTR('String',1,3) Str
          求長度 LENGTH('String') 6
            閱讀全文
          posted @ 2007-09-17 09:00 rogerfan 閱讀(375) | 評論 (0)  編輯

               摘要: (1) 選擇最有效率的表名順序(只在基于規則的優化器中有效):
          ORACLE的解析器按照從右到左的順序處理FROM子句中的表名,FROM子句中寫在最后的表(基礎表 driving table)將被最先處理,在FROM子句中包含多個表的情況下,你必須選擇記錄條數最少的表作為基礎表。如果有3個以上的表連接查詢, 那就需要選擇交叉表(intersection table)作為基礎表, 交叉表是指那個被其他表所引用的表.
          (2) WHERE子句中的連接順序.:
          ORACLE采用自下而上的順序解析WHERE子句,根據這個原理,表之間的連接必須寫在其他WHERE條件之前, 那些可以過濾掉最大數量記錄的條件必須寫在WHERE子句的末尾.
          (3) SELECT子句中避免使用 ‘ * ‘:
          ORACLE在解析的過程中, 會將'*' 依次轉換成所有的列名, 這個工作是通過查詢數據字典完成的, 這意味著將耗費更多的時間
            閱讀全文
          posted @ 2007-09-17 08:56 rogerfan 閱讀(370) | 評論 (0)  編輯

               摘要: 1. 選用適合的ORACLE優化器

          ORACLE的優化器共有3種:

          a. RULE (基于規則)
          b. COST (基于成本)
          c. CHOOSE (選擇性)

          設置缺省的優化器,可以通過對init.ora文件中OPTIMIZER_MODE參數的各種聲明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你當然也在SQL句級或是會話(session)級對其進行覆蓋。

          為了使用基于成本的優化器(CBO, Cost-Based Optimizer) , 你必須經常運行analyze 命令,以增加數據庫中的對象統計信息(object statistics)的準確性。

          如果數據庫的優化器模式設置為選擇性(CHOOSE),那么實際的優化器模式將和是否運行過analyze命令有關。 如果table已經被analyze過, 優化器模式將自動成為CBO , 反之,數據庫將采用RULE形式的優化器。
          閱讀全文
          posted @ 2007-09-17 08:43 rogerfan 閱讀(1088) | 評論 (1)  編輯

               摘要: 目錄

          1.sql存儲過程概述
          2.SQL存儲過程創建
          3.sql存儲過程及應用
          4.各種存儲過程使用指南
          5.ASP中存儲過程調用的兩種方式及比較
          6.SQL存儲過程在.NET數據庫中的應用
          7.使用SQL存儲過程要特別注意的問題  閱讀全文
          posted @ 2007-09-10 12:54 rogerfan 閱讀(1584) | 評論 (0)  編輯

               摘要: 1.基本結構
          CREATE OR REPLACE PROCEDURE 存儲過程名字
          (
          參數1 IN NUMBER,
          參數2 IN NUMBER
          ) IS
          變量1 INTEGER :=0;
          變量2 DATE;
          BEGIN
          END 存儲過程名字  閱讀全文
          posted @ 2007-09-10 12:47 rogerfan 閱讀(233) | 評論 (0)  編輯

               摘要: 其實基本上有三種方法:

          1、使用SQL Server 2005中新增的ROW_NUMBER

          幾種寫法分別如下:



          1SELECT TOP 20 * FROM (SELECT
          2 ROW_NUMBER() OVER (ORDER BY Namec) AS RowNumber,
          3 *
          4FROM
          5 dbo.mem_member) _myResults
          6WHERE
          7 RowNumber > 10000  閱讀全文
          posted @ 2007-09-10 11:10 rogerfan 閱讀(231) | 評論 (0)  編輯

               摘要: 1. Access method(訪問方法):此步驟包括從文件中存儲和檢索記錄。
          2. Alias(別名):某屬性的另一個名字。在SQL中,可以用別名替換表名。
          3. Alternate keys(備用鍵,ER/關系模型):在實體/表中沒有被選為主健的候選鍵。
          4. Anomalies(異常)參見更新異常(update anomalies)
          5. Application design(應用程序設計):數據庫應用程序生命周期的一個階段,包括設計用戶界面以及使用和處理數據庫的應用程序。   閱讀全文
          posted @ 2007-09-10 09:30 rogerfan 閱讀(336) | 評論 (1)  編輯

               摘要: 表A記錄如下:
          aID aNum
          1 a20050111
          2 a20050112
          3 a20050113
          4 a20050114
          5 a20050115

          表B記錄如下:
          bID bName
          1 2006032401
          2 2006032402
          3 2006032403
          4 2006032404
          8 2006032408  閱讀全文
          posted @ 2007-09-10 09:18 rogerfan 閱讀(342) | 評論 (0)  編輯

               摘要: 1. SQL優化的原則是:將一次操作需要讀取的BLOCK數減到最低,即在最短的時間達到最大的數據吞吐量。
          調整不良SQL通常可以從以下幾點切入:
          ? 檢查不良的SQL,考慮其寫法是否還有可優化內容
          ? 檢查子查詢 考慮SQL子查詢是否可以用簡單連接的方式進行重新書寫
          ? 檢查優化索引的使用
          ? 考慮數據庫的優化器   閱讀全文
          posted @ 2007-09-10 09:04 rogerfan 閱讀(430) | 評論 (0)  編輯

          主站蜘蛛池模板: 武邑县| 沙田区| 广水市| 龙岩市| 阳朔县| 吉林市| 綦江县| 东城区| 宣威市| 安庆市| 双江| 常山县| 崇左市| 保德县| 松江区| 闽清县| 青阳县| 乾安县| 淮安市| 赣榆县| 敖汉旗| 军事| 富平县| 长寿区| 兴国县| 西城区| 扶风县| 邻水| 龙南县| 深泽县| 凭祥市| 友谊县| 金堂县| 阿尔山市| 大同市| 东源县| 潢川县| 芦溪县| 托克逊县| 凤城市| 巩留县|