<ul id="k6c2q"><tbody id="k6c2q"></tbody></ul>
    <kbd id="k6c2q"></kbd>
  • <ul id="k6c2q"><pre id="k6c2q"></pre></ul>
    <ul id="k6c2q"><pre id="k6c2q"></pre></ul>
    論文格式
    電氣工程 會計論文 金融論文 國際貿易 財務管理 人力資源 輕化工程 德語論文 工程管理 文化產業管理 信息計算科學 電氣自動化 歷史論文
    機械設計 電子通信 英語論文 物流論文 電子商務 法律論文 工商管理 旅游管理 市場營銷 電視制片管理 材料科學工程 漢語言文學 免費獲取
    制藥工程 生物工程 包裝工程 模具設計 測控專業 工業工程 教育管理 行政管理 應用物理 電子信息工程 服裝設計工程 教育技術學 論文降重
    通信工程 電子機電 印刷工程 土木工程 交通工程 食品科學 藝術設計 新聞專業 信息管理 給水排水工程 化學工程工藝 推廣賺積分 付款方式
    • 首頁 |
    • 畢業論文 |
    • 論文格式 |
    • 個人簡歷 |
    • 工作總結 |
    • 入黨申請書 |
    • 求職信 |
    • 入團申請書 |
    • 工作計劃 |
    • 免費論文 |
    • 現成論文 |
    • 論文同學網 |
    搜索 高級搜索

    當前位置:論文格式網 -> 免費論文 -> 其他論文

    使用SQL語句實現數據庫復雜查詢功能的開發

    本論文在其他論文欄目,由論文格式網整理,轉載請注明來源www.donglienglish.cn,更多論文,請點論文格式范文查看

    摘  要: 數據庫應用系統中數據的復雜查詢問題,長期困擾著使用者和開發者。本文通過具體問題,論述了實現復雜查詢的方法,同時論證了各種方法的特點及適用范圍。
     關鍵詞:查詢;動態;數據窗口;SQL語句

     當今數據庫技術已成為計算機應用的核心技術,可以認為當今任何計算機信息系統和計算機應用系統都與數據庫的應用分不開,數據庫已成為其核心和基礎。建立數據庫應用系統是要充分利用數據庫中的數據。對數據庫中的數據進行的操作除增加(Insert)、更改(update)和刪除(delete)外,最常用,也是重要的是查詢操作。即便是最簡單的數據庫應用系統,也離不開查詢功能,查詢可以說是進行數據管理的重要手段,不過也是數據庫應用系統開發過程中較困難、花時間、有一定難度的部分。
     1. 問題的描述
     某單位根據上級部門的要求建立人員信息管理應用系統,它是人事管理信息系統(Personnel Management Information System)的子系統。人員信息管理系統是對人員所有信息的全面管理,包括:基本信息、培訓或進修信息、履歷信息、工資變動信息、離退信息、家庭成員及社會關系信息等等。根據中共中央組織部頒布的全國組織、干部、人事管理信息系統信息結構體系的要求,對人員的信息描述共有43個信息集(對應43張表),426個數據項,本文根據數據庫設計的要求進行加工,只列出3張表(table)。
     1)表名:基本信息 編碼:personnel
    字段編碼 數據類型 長度 字段名稱
    personnel_id char 9 人員代碼
    name varchar 20 姓名
    sex char 1 性別
    birthday datetime 4 出生日期
    native_place char 6 籍貫
    nationality char 2 民族
    marriage char 1 婚姻狀況
    workday datetime 7 參加工作時間
    party char 2 政治面貌
    graduaton char 2 學歷
    department char 30 所在單位
    identification char 15 身份證號
    cul_field char 6 培訓專業
     (2)表名:工資變動信息 編碼:wages
    字段編碼 數據類型 長度 字段名稱
    personnel_id char 9 人員代碼
    sa_id char 3 人員內碼
    change_day datetime 6 工資變動日期
    sa_file_num char 3 工資變動文件
    salary money 4 工資
     3)表名:離退信息 編碼:retirement
    字段編碼 數據類型 長度 字段名稱
    personnel_id char 9 人員代碼
    ret_day datetime 7 離退日期
    rel_style char 2 離退類別
    pay money 3 離退休費
    comment text 4 離退說明
     在應用中為保證數據的規范化,需充分利用國際代碼和組標代碼,這樣做也可以節省存儲空間。將這些代碼表建成數據庫中的靜態表,包括:性別(GB2261)、籍貫(ZB01)、民族(GB3304)、婚姻狀況(GB4766)、政治面貌(GB4762)、學歷(GB4658)、工資變動文件(ZB52)和離退狀態(GB12405)。它們的結構基本相同,每個表中都有兩個字段,分別存儲代碼及內容。以性別為例:
     表名:性別 編碼:GB2261
     字段編碼 數據類型 長度 字段名稱
     code char 2 代碼
     comment char 4 內容
     表中數據:
     code comment
     男性
     女性
     這些代碼表一旦建立,表中數據對應用來講是相對不變的,所以稱為靜態表。在需要的時候,靜態表的數據可以修改,一般放在維護中進行。
     當這些靜態表建成后,可得到完善的人員信息管理系統的數據模型,
     2.使用SQL語句
     SQL(Structured Query Language)語言是1974年由Boyce和Chamberlin提出的,并在IBM公司San Jose Research Laboratory研制的System R上實現了這種語言。由于它功能豐富,語言簡潔,使用方式靈活而倍受青睞,并扎根于計算機工業界及計算機用戶。
     SQL是集數據操縱(Data Manipulation)、數據定義(Data Definition)與數據
     控制(Data Control)為一體的關系數據語言。查詢是數據操縱語言中最主要的部分。從SQL的英文名稱:結構化的查詢語言,即能看出SQL在查詢中的貢獻,可以說數據庫查詢語句是SQL語言的核心。
     SQL查詢語句只使用命令動詞,SELECT
     一般格式: SELECT〈目標列〉
     FROM〈基本表(或視圖)〉
     [WHERE〈條件表達式〉]
     [GROUP BY〈列名1〉[HAVING〈內部函數表達式〉]]
     [ORDER BY〈列名2〉ASC|DESC]
     格式說明:〈〉中的內容為根據需要的具體內容;[]中的內容為可選項。
     語句含義:根據WHERE子句中的條件表達式,從基本表(或視圖)中找出滿足條件的元組,按SELECT子句中的目標列,選出元組中的分量形成表。GROUP子句將結果按列名1分組,每個組產生結果表中的一個元組;ORDER子句使結果表按列名2升序或降序排列。 這是最基本的方法,只要能夠對庫操作,就可以實施所需要的查詢。例如:想了解所有離退休人員的基本情況及他們的離退休費,可以鍵入如下語句:
     SELECT DISTINCT retirement.personnel_id,name,sex,
     birthday,workday,retirement.pay
     FROM personnel,retirement
     WHERE personnel.personnel_id=retirement.personnel_id
     執行后得到下列列表,顯示所需信息:
     personnel_id name sex birthday workday pay
     1 張三 1 1919/03/21 1994/05/06 1,187.00
     13李四 2 1935/05/04 1954/11/13 457.30
     2 王五 1 1928/03/21 1935/05/06 947.00
     5 陳六 2 1917/05/21 1933/05/21 937.00
     8周七1 1939/05/31 1960/07/13 1,128.80
     9 鄭八 1 1917/05/21 1933/05/21 745.00
     但這種方法要求操作者對數據庫的結構有充分的了解,例此數據庫有多少個表,有多少個數據項,這些數據項分別屬于哪一個表等。顯然,這是數據庫管理員的工作范疇。對用戶,即使了解SQL語法,也只能完成簡單的查詢,對復雜的查詢工作簡直是望塵莫及了。也就是說單單是SQL語句,并不能很好地完成數據庫的復雜查詢,必須要與其他技術配合使用。另外,使用SQL語句進行查詢,只能直接反映每一列的信息,而我們的43張基本表是盡可能地保存代碼以保證數據的規范且節約存儲空間。也就是說,我們能得到準確的查詢結果,但得到地卻是整篇的代碼(例上表中的sex列),這對開發者和使用者都難以接受。如果能夠將整篇的代碼自動轉換成所表達的文字,那當然是再好不過了。
     3. 借助PowerBuilder實現綜合信息的查詢
     目前,隨著工具軟件的發展和廣泛采用,使數據庫應用系統的開發如虎添翼,其中PowerBuilder以其獨特的數據窗口(DataWindow)倍受歡迎。
     PowerBuider是美國著名的數據庫應用開發工具生產廠家Powersoft公司于1991年6月推出的功能強大、性能優異的開發工具,它是一種面向對象的、具有可視圖形界面的、快速的交互開發工具。智能化的數據窗口對象是其精華所在。利用此對象可以操作關系數據庫的數據而無需寫入SQL語句,即可以直接檢索、更新和用多種形式表現數據源中的數據。但要注意,必須使數據窗口成為窗口(Window)下數據窗口控制的一個連接對象,數據窗口才能使用戶在應用執行期間訪問數據庫中的數據。
     利用PowerBuilder提供的內部查詢機制,我們即可以讓數據窗口作為查詢條件的輸入,又可以讓該數據窗口作為查詢結果的輸出,這樣就可以使數據窗口中的所有數據項進行自由組合的查詢。例如:在窗口W_que上建立兩個數據窗口控制dw_1和dw_2,分別連接兩個數據窗口對象dw_que1與dw_que2,其中dw_1用于輸入查詢條件,而dw_2用于顯示滿足查詢條件的所有元組。事實上條件的輸入及元組的顯示完全可以在一個數據窗口中實現,考慮到這兩種操作的差別(例:條件輸入可編輯,而元組顯示不可編輯;條件輸入可為某一范圍,而元組顯示僅為滿足條件的所有紀錄……)將其用兩個數據窗口控制來實現。這就要求dw_2與dw_1數據共享,即要求dw_que1與dw_que2兩數據窗口的數據源完全相同,如圖2所示。(略)
     用這種方法實現查詢優點突出,例:通過設置數據窗口中對應列的編輯風格(
     Edit Styles)為相應的下拉式數據窗口(DropDownDataWindow),使顯示的元組文字化。注意,這要事先建好下拉式數據窗口。設置數據窗口中對應列的編輯風格同樣可滿足其它顯示需要。利用數據窗口的風格特點:查詢表的列寬、列序可自由改變,甚至可以覆蓋掉一些列,以達到更滿足查詢顯示的需要。
     綜合查詢的信息來自多個表,改變數據窗口的數據源,采用多表連接的數據源即可實現。但是如我們問題的描述,如果我們需要的查詢項隨機地來自這43張表中的數據項,顯示項也是隨機地。這種任意條件的組合,可選輸出項的顯示稱為動態查詢(Dynamic Query)依然采用上述方法,數據窗口dw_que1與dw_que2的數據源將是這43張表的連接,先不說效率問題,單從這426個項中輸入查詢條件,又顯示這426個項,就使人敬而遠之。因為,在每一次查詢前,都不了解此次查詢的要求是什么,這樣,每張表中的每一個數據項都缺一不可;另一方面,每一次的查詢,一旦查詢條件確定、顯示條目也確定后,我們會發現,每一次有意義的查詢并不是需要全部的43張表,換言之,每一次查詢沒有必要將43張表全部連結,而應只連接那些被選中數據項所在的表,即數據源是動態產生的。由于數據源不確定,數據窗口就無法設計,動態查詢無法用這種方法實現。
     4. 動態查詢的實現
     在某些實際的應用系統開發中,由于用戶在開發前提不出查詢的需求,而在系統運行中希望能夠對所有的數據項任意組合進行查詢,以滿足來自多方的需求,實現動態地查詢(即隨機地從43張表中選擇數據項進行組合作為查詢條件并任意地選擇數據項作為顯示條目)。對于此類查詢的實現要利用PowerBuilder通過編程的方式在運行時動態地創建數據窗口,并動態地控制數據窗口。
     動態地創建一個數據窗口,應用程序需要執行下列任務:
     ·動態地構造SQL語句。
     ·用符合數據窗口語法的字符串,為現在的數據窗口控制創建一個數據窗口對象。具體實現如下:
     1)動態地生成SQL語句,根據SQL的語法:SELECT stringa
     FROM stringb
     WHERE stringc
     也就是動態地生成 stringa, stringb, stringc.由用戶輸入要顯示的列,一旦輸入完畢,列名就隨之確定,將所有列名拼成一個“串”,中間用“,”分隔,形如“columm1,column2,column3,...,columnr”,則動態地生成stringa;同樣由用戶輸入查詢條件,包括相應的列、滿足的條件或范圍、邏輯關系等,將這些條件拚成一個串,即為stringc,顯然,所有的列名都確定了,他們所在的表名也確定了,按照stringb的語法規則即可構造。注意:上面的stringc由兩部分(表間關系stringc1及查詢條件stringc2)組成;表名串stringb與表間關系stringc1、查詢條件stringc2及顯示條目stringa均有關。
     在實現的過程中:為貼近實際應用,習慣上,先輸入查詢條件,再輸入顯示條目。即在輸入查詢條件后,生成strinc2,stringb,stringc1;然后,再在輸入顯示條目后生成stringa,并修改stringc1,stringb。最后形成SQL語法:
     str="select"+stringa+"from"+stringb+"where"+stringcl+stringc2
     2)在現在的事物對象里利用相關的SyntaxFromSQL()函數生成符合數據窗口語法的字符串:
      exp=syntaxfromsq1(sq1ca,str,strsty,error)生成數據窗口的源代碼
     其中:strsty為數據窗口的顯示風格,例:
     strsty="style(type=grid)datawindow(units=lcolor=12632256)text(font.face='system')"
     3) 創建數據窗口對象
     dw_que.create(exp)
     這樣就實現了用戶要求的隨機查詢。
     在真實系統中,用戶在輸入查詢條件時希望通過選項方式錄入查詢信息,由于庫表中存放的大量信息為代碼,這就需要在程序中先把錄入的文字信息轉化成相應的代碼再連接到查詢條件中。為簡化輸入,提高準確性,可采用代碼輸入,即動態地嵌套下拉式數據窗口。在顯示查詢結果的數據窗口中,事先不能嵌套下拉式數據窗口,可預先做一個函數,在程序運行中根據所選的列把代碼轉化成所對應的漢字顯示,這樣更完善了用戶要求的隨機查詢。
     根據數據窗口的動態特性,對于那些運行時才能確定的數據窗口采用動態方式創建,使應用程序能更靈活地滿足用戶的需求。
     5. 小結
     使用SQL語句是查詢操作的基礎,但如何根據查詢的要求自動的構造最貼切的SQL語句是問題的關鍵。利用PowerBuilder中的數據窗口使問題簡化,如何通過嵌入動態生成的SQL語句動態地生成數據窗口是解決問題的根本。將查詢條件的輸入實現多級菜單選擇將查詢結果文字化,使復雜查詢問題解決得更完善。動態查詢的方法,不僅能應用于人事管理信息系統,同時也是解決其他需要復雜查詢的數據庫應用系統的途徑。這種動態查詢方法的在數據庫應用系統的使用,避免了應用系統開發中開發者冥思苦想所有可能的查詢條件,而系統運行中用戶總遇到有些查詢要求無法滿足的矛盾。動態查詢的實現,縮短了開發周期,減少了產品維護的工作。


    相關論文
    上一篇:衛生行政執法中的自由裁量權問題 下一篇:批發企業商業管理信息系統的設計..
    Tags:SQL語句 實現數據庫復雜 【收藏】 【返回頂部】
    人力資源論文
    金融論文
    會計論文
    財務論文
    法律論文
    物流論文
    工商管理論文
    其他論文
    保險學免費論文
    財政學免費論文
    工程管理免費論文
    經濟學免費論文
    市場營銷免費論文
    投資學免費論文
    信息管理免費論文
    行政管理免費論文
    財務會計論文格式
    數學教育論文格式
    數學與應用數學論文
    物流論文格式范文
    財務管理論文格式
    營銷論文格式范文
    人力資源論文格式
    電子商務畢業論文
    法律專業畢業論文
    工商管理畢業論文
    漢語言文學論文
    計算機畢業論文
    教育管理畢業論文
    現代教育技術論文
    小學教育畢業論文
    心理學畢業論文
    學前教育畢業論文
    中文系文學論文
    最新文章
    熱門文章
    計算機論文
    推薦文章

    本站部分文章來自網絡,如發現侵犯了您的權益,請聯系指出,本站及時確認刪除 E-mail:349991040@qq.com

    論文格式網(www.donglienglish.cn--論文格式網拼音首字母組合)提供其他論文畢業論文格式,論文格式范文,畢業論文范文

    Copyright@ 2010-2018 LWGSW.com 論文格式網 版權所有

    感谢您访问我们的网站,您可能还对以下资源感兴趣:

    论文格式网:毕业论文格式范文
    • <samp id="ua0i0"></samp>
        <strike id="ua0i0"></strike>