專利名稱:自動生成結(jié)構(gòu)化sql語句的方法與其電子裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)生成方法與其電子裝置,特別有關(guān)于一種自動生成結(jié)構(gòu)化 SQL語句的方法與其電子裝置。
背景技術(shù):
隨著計算機的快速發(fā)展,使得越來越多數(shù)據(jù)數(shù)據(jù)的處理事務(wù)越發(fā)的仰賴計算機來 完成。所以為能提高的處理數(shù)據(jù)數(shù)據(jù),所以國際商業(yè)機器(IBM)公司提出了一套結(jié)構(gòu)化查 詢語言(Structured Query Language,簡稱 SQL)。1986年 10 月,美國國家標(biāo)準(zhǔn)局(American National Standards hstitute,ANSI)對SQL進(jìn)行規(guī)范后,以此作為關(guān)系式數(shù)據(jù)庫管理系 統(tǒng)的標(biāo)準(zhǔn)語言(ANSI X3. 135-1986),1987年得到國際標(biāo)準(zhǔn)組織的支持下成為國際標(biāo)準(zhǔn)。不 過各種通行的數(shù)據(jù)庫系統(tǒng)在其實踐過程中都對SQL規(guī)范作了某些編改和擴充。所以,實際 上不同數(shù)據(jù)庫系統(tǒng)之間的SQL語言不能完全相互通用。為能有效率的從數(shù)據(jù)庫中搜尋出相應(yīng)的數(shù)據(jù),使用者需要具備SQL語句編程的能 力。由于SQL語句編程的學(xué)習(xí)需要耗費相當(dāng)時間的鉆研。因此,有其它廠商提供了許多圖 形化接口(graphic user interface, GUI)的 SQL 語句編程工具。例如,微軟公司曾經(jīng)推出一套查詢設(shè)計器。在查詢設(shè)計器中,使用者可以從添加表 中拖曳單獨的表、視圖(view)、函數(shù)等元件,請參考圖1所示。使用者依序?qū)⑺x出的各項 元件組合成具有相應(yīng)功能的SQL語句120。但是習(xí)知的查詢設(shè)計器110僅能用在獨立結(jié)構(gòu) 的SQL語句120中,并無法實現(xiàn)復(fù)雜結(jié)構(gòu)的SQL語句120。舉例來說,使用者欲從圖1中的 Talbe表A中選出第10條到第15條記錄的SQL語句120為“select top 5*from(select top 15*fromTableA where targeted =' OOla' order by name asc)TableA order by namedesc”。由于欲查詢TableA中的第10條到第15條記錄。所以在SQL語句120中需要 加入復(fù)合式的SQL語句120。這樣的作法無法在現(xiàn)有的查詢設(shè)計器110中所實現(xiàn)。因此大 大的降低了查詢設(shè)計器110的可利用性。
發(fā)明內(nèi)容
鑒于以上的問題,本發(fā)明要解決的技術(shù)問題在于提供一種自動生成結(jié)構(gòu)化SQL語 句的方法,用以自動建置帶有子查詢結(jié)構(gòu)的復(fù)合式SQL語句及其數(shù)據(jù)表。為實現(xiàn)上述技術(shù)問題,本發(fā)明提供一種自動生成結(jié)構(gòu)化SQL語句的方法,其包括 下列步驟根據(jù)一輸入要求創(chuàng)建一暫存表與一歷程記錄表,該暫存表記錄多個字段,該歷程 記錄表記錄該輸入要求的一索引集合與每一輸入要求的該字段的一結(jié)構(gòu)信息;以外鍵連結(jié) 至該歷程記錄表建立一結(jié)構(gòu)記錄表,每一該結(jié)構(gòu)記錄表中具有相應(yīng)該字段的一數(shù)據(jù)對象; 從該歷程記錄表與該結(jié)構(gòu)記錄表中選取該字段與該數(shù)據(jù)對象,并設(shè)定該字段與該數(shù)據(jù)對象 的一查詢結(jié)構(gòu)要求;以及,根據(jù)該查詢結(jié)構(gòu)要求產(chǎn)生相應(yīng)的一輸出表。上述自動生成結(jié)構(gòu)化SQL語句的方法,其特點在于,于創(chuàng)建該歷程記錄表的步驟, 還包括解析該輸入要求的一字符結(jié)構(gòu);以及,根據(jù)該字符結(jié)構(gòu)的組成順序用以定義該歷程記錄表。上述自動生成結(jié)構(gòu)化SQL語句的方法,其特點在于,該結(jié)構(gòu)信息為一延伸標(biāo)記語 、
曰ο上述自動生成結(jié)構(gòu)化SQL語句的方法,其特點在于,該數(shù)據(jù)對象為該字段、一數(shù) 據(jù)、或該暫存表。上述自動生成結(jié)構(gòu)化SQL語句的方法,其特點在于,產(chǎn)生相應(yīng)的該輸出表步驟后, 還包括根據(jù)該輸出表產(chǎn)生相應(yīng)的一 SQL語句。從本發(fā)明的另一觀點,本發(fā)明提出一種自動生成結(jié)構(gòu)化SQL語句的電子裝置,其 提供一種可以自動建置帶有子查詢結(jié)構(gòu)的復(fù)合式SQL語句及其數(shù)據(jù)表的接口的電子裝置。本發(fā)明還提供一種自動生成結(jié)構(gòu)化SQL語句的電子裝置,其特征在于,包含一儲 存單元,其儲存一接口生成程序、多筆歷程記錄表與多筆結(jié)構(gòu)記錄表;一處理單元,電性連 接于該儲存單元;以及,一顯示單元,其電性連結(jié)于該處理單元,該顯示單元具有一對象選 擇區(qū)、一對象編輯區(qū)與一語句輸出區(qū);其中,該處理單元接收一輸入要求創(chuàng)建一暫存表與相 應(yīng)的該歷程記錄表,該處理單元將該歷程記錄表外鍵連結(jié)該結(jié)構(gòu)記錄表,再從每一該結(jié)構(gòu) 記錄表中具有相應(yīng)該字段的一數(shù)據(jù)對象,并根據(jù)該數(shù)據(jù)對象設(shè)定一查詢結(jié)構(gòu)要求,于該對 象選擇區(qū)中根據(jù)該查詢結(jié)構(gòu)要求繪制該數(shù)據(jù)對象,從該對象選擇區(qū)中選出的該數(shù)據(jù)對象并 將該數(shù)據(jù)對象繪制于該對象編輯區(qū)中,根據(jù)該對象編輯區(qū)中的該數(shù)據(jù)對象的排列順序在該 語句輸出區(qū)中顯示相應(yīng)的一輸出表。本發(fā)明提供一種可自動產(chǎn)生SQL語句的數(shù)據(jù)表,從而提供使用者更為快速的處理 環(huán)境。通過本發(fā)明可以構(gòu)造復(fù)合結(jié)構(gòu)的SQL語句或跨窗體等具有結(jié)構(gòu)層次的SQL語句。以下結(jié)合附圖和具體實施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。
圖1為現(xiàn)有技術(shù)的查詢設(shè)計器的接口示意圖;圖2A為本發(fā)明的結(jié)構(gòu)示意圖;圖2B為本發(fā)明的界面示意圖;圖3為本發(fā)明的運作流程圖;圖4為本發(fā)明的運作態(tài)樣的流程示意圖;圖5為本發(fā)明的接口生成程序的細(xì)部流程示意圖。其中,附圖標(biāo)記110查詢設(shè)計器
120SQL語句
210儲存單元
221數(shù)據(jù)庫程序
222數(shù)據(jù)表接口生成程序
220處理單元
230顯示單元
231對象選擇區(qū)
232對象編輯區(qū)
233語句輸出區(qū)
具體實施例方式本發(fā)明可應(yīng)用于具有數(shù)據(jù)庫的計算機,而計算機所采用的數(shù)據(jù)庫并不限定為網(wǎng)狀 式數(shù)據(jù)庫(Network Database)、關(guān)系型數(shù)據(jù)庫(Relational Database)以及對象導(dǎo)向式數(shù) 據(jù)庫(Object-Oriented Database)。請參考圖2A所示,其為本發(fā)明的結(jié)構(gòu)示意圖。在本發(fā) 明中包括儲存單元210、處理單元220與顯示單元230。儲存單元210中儲存有上述的任一 種數(shù)據(jù)庫程序221,而儲存單元210可以是硬盤(hard disk)、或是隨身碟(flash memory) 的任一種。處理單元220用以運行數(shù)據(jù)庫程序221與本發(fā)明的數(shù)據(jù)表接口生成程序222,并 將生成的數(shù)據(jù)表接口繪制于顯示單元230中,并提供給使用者操作。顯示單元230繪制對 象選擇區(qū)231、對象編輯區(qū)232與語句輸出區(qū)233,請參考圖2B所示,其為本發(fā)明的界面示 意圖。本發(fā)明的數(shù)據(jù)表接口生成程序222包括以下步驟,請參考圖3所示,其為本發(fā)明的 運作流程圖步驟S310 根據(jù)輸入要求創(chuàng)建暫存表與歷程記錄表,暫存表記錄多個字段,歷程 記錄表記錄該輸入要求的索引集合與每一輸入要求的字段的結(jié)構(gòu)信息;步驟S320 以外鍵連結(jié)至歷程記錄表建立結(jié)構(gòu)記錄表,每一結(jié)構(gòu)記錄表中具有相 應(yīng)字段的數(shù)據(jù)對象;步驟S330 從歷程記錄表與結(jié)構(gòu)記錄表中選取字段與數(shù)據(jù)對象,并設(shè)定字段與數(shù) 據(jù)對象的查詢結(jié)構(gòu)要求;以及步驟S340 根據(jù)查詢結(jié)構(gòu)要求產(chǎn)生相應(yīng)的輸出表。首先,從計算機接收來自使用者的輸入要求,并根據(jù)輸入要求創(chuàng)建出一張暫存表 與歷程記錄表。輸入要求為一 SQL語句,其用以從數(shù)據(jù)庫中的各項數(shù)據(jù)表、視圖(view)調(diào) 用相關(guān)數(shù)據(jù)數(shù)據(jù)的操作。由于SQL語句是由高階語法所組成的,因此SQL語句中的語法是 相近于一般人所使用的句子。所以可以將SQL語句視為數(shù)據(jù)對象所構(gòu)成。換言之,在數(shù)據(jù) 對象為SQL語句中每一指令或參數(shù),例如SQL語法中的“select”、“order”或“wherein” 等。處理單元220從每一結(jié)構(gòu)記錄表中具有相應(yīng)該字段的數(shù)據(jù)對象,根據(jù)數(shù)據(jù)對象設(shè)定一 查詢結(jié)構(gòu)要求。為清楚說明本發(fā)明的整體運作,以下述例子作為解說。并請配合參考圖4所示。首 先是建立數(shù)據(jù)來源區(qū)中的多組數(shù)值群組。在建立數(shù)據(jù)來源的過程包括以下步驟步驟S410 保存輸入要求的SQL語句的查詢記錄;以及步驟S420 分析輸入要求的SQL語句中的數(shù)據(jù)對象組成。每個使用者的查詢設(shè)定,都能形成一個獨立的SQL語句。因此,將使用者的SQL語 句指派一個代碼,并且把執(zhí)行查詢設(shè)定形成的SQL的查詢結(jié)果表的表結(jié)構(gòu)(字段名稱、字段 數(shù)據(jù)類型)保存起來,意即解析輸入要求的一字符結(jié)構(gòu),并根據(jù)字符結(jié)構(gòu)的組成順序用以 定義歷程記錄表。比如根據(jù)使用者的查詢設(shè)定形成了下面的SQL語句SELECT T_DataServer. name, T_DataServer. userName,T_DataServer. password, T—DataServer—Database. databaseName
5
FROM T_DataServerINNER JOIN T_DataServer_DatabaseON T_DataServer. id = T_DataServer_Database. dataServerld處理單元220會將上述輸入要求的SQL語句用一個TempA暫存表存放,其中存放 格式如下所示SELECT top 0 A. *into#TempA FROM(SELECT T_DataServer. name,T_DataServer. userName,T_DataServer. password, T_DataServer_Database. databaseNameFROM T_DataServerINNER JOIN T_DataServer_DatabaseON T_DataServer. id = T_DataServer_Database. dataServerld)Ause tempdb接著,再取得TempA暫存表的結(jié)構(gòu)記錄表SELECT tempdb. dbo. syscolumns. name AS field,字段名tempdb. dbo. systypes. name AS type,類型tempdb. dbo. syscolumns. length 長度FROM tempdb. dbo. syscolumnsINNER JOIN tempdb. dbo. sysobjectsON tempdb. dbo. sysobjects. id = tempdb. dbo. syscolumns. idINNER JOIN tempdb. dbo. systypesON tempdb. dbo. syscolumns. xtype = tempdb. dbo. systypes. xtypeANDtempdb. dbo. syscolumns. xusertype=tempdb. dbo. systypes. xusertypewhere tempdb. dbo. sysobjects. xtype =’ U’AND(tempdb. dbo. sysobjects. id = object_id(, #TempA,))執(zhí)行輸入要求的SQL語句就可以返回SQL語句的查詢結(jié)果的結(jié)構(gòu)記錄表。在儲存 單元210中的每一筆SQL語句的查詢記錄如下表所示
權(quán)利要求
1.一種自動生成結(jié)構(gòu)化SQL語句的方法,其包括下列步驟根據(jù)一輸入要求創(chuàng)建一暫存表與一歷程記錄表,該暫存表記錄多個字段,該歷程記錄 表記錄該輸入要求的一索引集合與每一輸入要求的該字段的一結(jié)構(gòu)信息;以外鍵連結(jié)至該歷程記錄表建立一結(jié)構(gòu)記錄表,每一該結(jié)構(gòu)記錄表中具有相應(yīng)該字段 的一數(shù)據(jù)對象;從該歷程記錄表與該結(jié)構(gòu)記錄表中選取該字段與該數(shù)據(jù)對象,并設(shè)定該字段與該數(shù)據(jù) 對象的一查詢結(jié)構(gòu)要求;以及根據(jù)該查詢結(jié)構(gòu)要求產(chǎn)生相應(yīng)的一輸出表。
2.根據(jù)權(quán)利要求1所述的自動生成結(jié)構(gòu)化SQL語句的方法,其特征在于,于創(chuàng)建該歷程 記錄表的步驟,還包括解析該輸入要求的一字符結(jié)構(gòu);以及根據(jù)該字符結(jié)構(gòu)的組成順序用以定義該歷程記錄表。
3.根據(jù)權(quán)利要求2所述的自動生成結(jié)構(gòu)化SQL語句的方法,其特征在于,該結(jié)構(gòu)信息為一延伸標(biāo)記語言。
4.根據(jù)權(quán)利要求1所述的自動生成結(jié)構(gòu)化SQL語句的方法,其特征在于,該數(shù)據(jù)對象為 該字段、一數(shù)據(jù)、或該暫存表。
5.根據(jù)權(quán)利要求1所述的自動生成結(jié)構(gòu)化SQL語句的方法,其特征在于,產(chǎn)生相應(yīng)的該 輸出表步驟后,還包括根據(jù)該輸出表產(chǎn)生相應(yīng)的一 SQL語句。
6.一種自動生成結(jié)構(gòu)化SQL語句的電子裝置,其特征在于,包含一儲存單元,其儲存一接口生成程序、多筆歷程記錄表與多筆結(jié)構(gòu)記錄表;一處理單元,電性連接于該儲存單元;以及一顯示單元,其電性連結(jié)于該處理單元,該顯示單元具有一對象選擇區(qū)、一對象編輯區(qū) 與一語句輸出區(qū);其中,該處理單元接收一輸入要求創(chuàng)建一暫存表與相應(yīng)的該歷程記錄表,該處理單元 將該歷程記錄表外鍵連結(jié)該結(jié)構(gòu)記錄表,再從每一該結(jié)構(gòu)記錄表中具有相應(yīng)該字段的一數(shù) 據(jù)對象,并根據(jù)該數(shù)據(jù)對象設(shè)定一查詢結(jié)構(gòu)要求,于該對象選擇區(qū)中根據(jù)該查詢結(jié)構(gòu)要求 繪制該數(shù)據(jù)對象,從該對象選擇區(qū)中選出的該數(shù)據(jù)對象并將該數(shù)據(jù)對象繪制于該對象編輯 區(qū)中,根據(jù)該對象編輯區(qū)中的該數(shù)據(jù)對象的排列順序在該語句輸出區(qū)中顯示相應(yīng)的一輸出 表。
全文摘要
本發(fā)明涉及一種自動生成結(jié)構(gòu)化SQL語句的方法,其包括下列步驟根據(jù)一輸入要求創(chuàng)建一暫存表與一歷程記錄表,該暫存表記錄多個字段,該歷程記錄表記錄該輸入要求的一索引集合與每一輸入要求的該字段的一結(jié)構(gòu)信息;以外鍵連結(jié)至該歷程記錄表建立一結(jié)構(gòu)記錄表,每一該結(jié)構(gòu)記錄表中具有相應(yīng)該字段的一數(shù)據(jù)對象;從該歷程記錄表與該結(jié)構(gòu)記錄表中選取該字段與該數(shù)據(jù)對象,并設(shè)定該字段與該數(shù)據(jù)對象的一查詢結(jié)構(gòu)要求;以及,根據(jù)該查詢結(jié)構(gòu)要求產(chǎn)生相應(yīng)的一輸出表。
文檔編號G06F17/30GK102073642SQ20091022194
公開日2011年5月25日 申請日期2009年11月23日 優(yōu)先權(quán)日2009年11月23日
發(fā)明者張學(xué)敏, 陳玄同 申請人:英業(yè)達(dá)股份有限公司, 英業(yè)達(dá)集團(天津)電子技術(shù)有限公司