專利名稱:數(shù)據(jù)庫查詢建模系統(tǒng)和數(shù)據(jù)庫查詢建模方法
技術領域:
本發(fā)明涉及數(shù)據(jù)庫查詢技術領域,具體而言,涉及一種數(shù)據(jù)庫查詢建模系統(tǒng)和一種數(shù)據(jù)庫查詢建模方法。
背景技術:
數(shù)據(jù)庫已成為一個成熟軟件系統(tǒng)中不可或缺的必要組成部分,而對數(shù)據(jù)庫的查詢操作,更是數(shù)據(jù)庫系統(tǒng)中,最簡單,最常用的操作。但是隨著企業(yè)業(yè)務復雜度的不斷提高,對數(shù)據(jù)庫的查詢操作也變得越來越復雜,這就需要編寫更加復雜的數(shù)據(jù)庫查詢語句,即SQL語句,來訪問數(shù)據(jù)庫。比如,一個SQL語句中會嵌套多個子查詢,或者多個表之間有多種連接關系,對查詢字段有特殊限制等。在編寫這樣復雜的SQL語句時,即使非常有經(jīng)驗的數(shù)據(jù)庫管理人員,也難免會發(fā)生錯誤,對于不太熟悉SQL語句的初級數(shù)據(jù)庫使用者來說,那更是一頭霧水了。因此,如何方便的生成復雜SQL語句,是訪問數(shù)據(jù)庫需要解決的重要問題。
發(fā)明內容
本發(fā)明正是基于上述問題,提出了一種新的技術方案,可以將SQL語句的生成過程,以圖形化的方式來構造,自動生成,代替手寫。不僅能避免手寫SQL語句發(fā)生的錯誤,同時也能提高SQL語句準確性,也使得非數(shù)據(jù)庫管理人員也能方便上手,執(zhí)行數(shù)據(jù)庫的查詢操作。有鑒于此,本發(fā)明提出了一種數(shù)據(jù)庫查詢建模系統(tǒng),包括:界面生成單元,用于生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項;信息獲取單元,用于根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名,以及根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息;語句拼接單元,用于將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。在該技術方案中,通過生成可視化圖形界面,從而用戶僅需要對查詢對象等信息,便可以自動生成標準的SQL語句,降低了用戶編寫SQL語句的難度,提高了編寫效率。在上述技術方案中,優(yōu)選地,所述信息獲取單元通過選擇數(shù)據(jù)庫中的物理表、選擇對表進行描述的元數(shù)據(jù)或選擇已創(chuàng)建的查詢模型來確定需要查詢的表。在上述技術方案中,優(yōu)選地,還包括:關系定義單元,用于在被選中的表的個數(shù)為多個的情況下,定義多個被選中的表的連接關系;其中,所述語句拼接單元按照所述連接關系,將所述表名和所述字段名拼接至所述SQL語句的FROM部分。在該技術方案中,根據(jù)多個被選中的表的連接關系,可以確定多個表的字段等之間的引用等關聯(lián)關系,從而用于SQL語句的生成。在上述技術方案中,優(yōu)選地,還包括:條件定義單元,用于根據(jù)用戶的條件定義操作,定義相應的限制條件;其中,所述語句拼接單元還將所述限制條件拼接至所述SQL語句的WHERE及之后的部分。在該技術方案中,還可以將限制條件添加至生成的SQL語句中。在上述技術方案中,優(yōu)選地,所述限制條件包括以下至少之一或其組合:排序方式、SQL函數(shù)、用于在查詢操作時由用戶輸入的自定義參數(shù)、用于在查詢操作時利用其中的值的宏變量。根據(jù)本發(fā)明的又一方面,還提出了一種數(shù)據(jù)庫查詢建模方法,包括:步驟201,生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項;步驟202,根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名;步驟204,根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息;步驟206,將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。在該技術方案中,通過生成可視化圖形界面,從而用戶僅需要對查詢對象等信息,便可以自動生成標準的SQL語句,降低了用戶編寫SQL語句的難度,提高了編寫效率。在上述技術方案中,優(yōu)選地,所述確定需要查詢的表的步驟包括:選擇數(shù)據(jù)庫中的物理表、選擇對表進行描述的元數(shù)據(jù)或選擇已創(chuàng)建的查詢模型。在上述技術方案中,優(yōu)選地,所述步驟204還包括:當被選中的表的個數(shù)為多個時,還定義多個被選中的表的連接關系;以及所述步驟206包括:按照所述連接關系,將所述表名和所述字段名拼接至所述SQL語句的FROM部分。在該技術方案中,根據(jù)多個被選中的表的連接關系,可以確定多個表的字段等之間的引用等關聯(lián)關系,從而用于SQL語句的生成。在上述技術方案中,優(yōu)選地,所述步驟204還包括:根據(jù)用戶的條件定義操作,定義相應的限制條件;以及所述步驟206還包括:將所述限制條件拼接至所述SQL語句的WHERE及之后的部分。在該技術方案中,還可以將限制條件添加至生成的SQL語句中。在上述技術方案中,優(yōu)選地,所述限制條件包括以下至少之一或其組合:排序方式、SQL函數(shù)、用于在查詢操作時由用戶輸入的自定義參數(shù)、用于在查詢操作時利用其中的值的宏變量。通過以上技術方案,可以將SQL語句的生成過程,以圖形化的方式來構造,自動生成,代替手寫。不僅能避免手寫SQL語句發(fā)生的錯誤,同時也能提高SQL語句準確性,也使得非數(shù)據(jù)庫管理人員也能方便上手,執(zhí)行數(shù)據(jù)庫的查詢操作。
圖1示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫查詢建模系統(tǒng)的框圖;圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫查詢建模方法的流程圖;圖3示出了根據(jù)本發(fā)明的實施例的生成標準SQL語句的流程圖;圖4示出了根據(jù)本發(fā)明的實施例的生成標準SQL語句的功能模塊的結構示意圖。
具體實施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點,下面結合附圖和具體實施方式
對本發(fā)明進行進一步的詳細描述。需要說明的是,在不沖突的情況下,本申請的實施例及實施例中的特征可以相互組合。
在下面的描述中闡述了很多具體細節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可以采用其他不同于在此描述的其他方式來實施,因此,本發(fā)明的保護范圍并不受下面公開的具體實施例的限制。圖1示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫查詢建模系統(tǒng)的框圖。如圖1所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫查詢建模系統(tǒng)100,包括:界面生成單元102,用于生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項;信息獲取單元104,用于根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名,以及根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息;語句拼接單元106,用于將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。在該技術方案中,通過生成可視化圖形界面,從而用戶僅需要對查詢對象等信息,便可以自動生成標準的SQL語句,降低了用戶編寫SQL語句的難度,提高了編寫效率。在上述技術方案中,優(yōu)選地,所述信息獲取單元104通過選擇數(shù)據(jù)庫中的物理表、選擇對表進行描述的元數(shù)據(jù)或選擇已創(chuàng)建的查詢模型來確定需要查詢的表。在上述技術方案中,優(yōu)選地,還包括:關系定義單元108,用于在被選中的表的個數(shù)為多個的情況下,定義多個被選中的表的連接關系;其中,所述語句拼接單元106按照所述連接關系,將所述表名和所述字段名拼接至所述SQL語句的FROM部分。在該技術方案中,根據(jù)多個被選中的表的連接關系,可以確定多個表的字段等之間的引用等關聯(lián)關系,從而用于SQL語句的生成。在上述技術方案中,優(yōu)選地,還包括:條件定義單元110,用于根據(jù)用戶的條件定義操作,定義相應的限制條件;其中,所述語句拼接單元106還將所述限制條件拼接至所述SQL語句的WHERE及之后的部分。在該技術方案中,還可以將限制條件添加至生成的SQL語句中。在上述技術方案中,優(yōu)選地,所述限制條件包括以下至少之一或其組合:排序方式、SQL函數(shù)、用于在查詢操作時由用戶輸入的自定義參數(shù)、用于在查詢操作時利用其中的值的宏變量。圖2示出了根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫查詢建模方法的流程圖。如圖2所示,根據(jù)本發(fā)明的實施例的數(shù)據(jù)庫查詢建模方法,包括:步驟201,生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項;步驟202,根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名;步驟204,根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息;步驟206,將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。在該技術方案中,通過生成可視化圖形界面,從而用戶僅需要對查詢對象等信息,便可以自動生成標準的SQL語句,降低了用戶編寫SQL語句的難度,提高了編寫效率。在上述技術方案中,優(yōu)選地,所述確定需要查詢的表的步驟包括:選擇數(shù)據(jù)庫中的物理表、選擇對表進行描述的元數(shù)據(jù)或選擇已創(chuàng)建的查詢模型。在上述技術方案中,優(yōu)選地,所述步驟204還包括:當被選中的表的個數(shù)為多個時,還定義多個被選中的表的連接關系;以及所述步驟206包括:按照所述連接關系,將所述表名和所述字段名拼接至所述SQL語句的FROM部分。在該技術方案中,根據(jù)多個被選中的表的連接關系,可以確定多個表的字段等之間的引用等關聯(lián)關系,從而用于SQL語句的生成。在上述技術方案中,優(yōu)選地,所述步驟204還包括:根據(jù)用戶的條件定義操作,定義相應的限制條件;以及所述步驟206還包括:將所述限制條件拼接至所述SQL語句的WHERE及之后的部分。在該技術方案中,還可以將限制條件添加至生成的SQL語句中。在上述技術方案中,優(yōu)選地,所述限制條件包括以下至少之一或其組合:排序方式、SQL函數(shù)、用于在查詢操作時由用戶輸入的自定義參數(shù)、用于在查詢操作時利用其中的值的宏變量。圖3示出了根據(jù)本發(fā)明的實施例的生成標準SQL語句的流程圖。如圖3所示,根據(jù)本發(fā)明的實施例的生成標準SQL語句的流程包括:第一步,選擇要查詢的表,相當于標準SQL語句中的FROM部分。表,可以是一張,也可以是多張。我們這里的定義的表,不限于數(shù)據(jù)庫的一張物理表,還可以是對表進行描述的元數(shù)據(jù),包括表名和字段名。還可以是已經(jīng)創(chuàng)建好的一個查詢模型,這樣就能方便的構建嵌套子查詢了。第二步,定義表的連接條件?;诘谝徊剑x擇的表信息,如果是多張表,需要定義各個表相互之間的連接關系,比如內連接,左連接,右連接,全連接等。我們會把這一步選擇的表的連接關系,結合第一步選擇的表的信息,拼接到標準SQL語句的FROM部分,按照標準SQL的語法規(guī)則,多個表用逗號隔開,為每一張表取一個別名,用空格隔開,當然別名是可選的。表名和字段名之間用逗號隔開,采用“表名.字段名”的格式。第三步,選擇要查詢的字段,相當于標準SQL語句中的SELECT部分?;诘谝徊揭呀?jīng)選擇的表信息,這一步,選擇表里面的字段信息。也就是我們需要查詢的字段信息,采用“表.字段”的格式來定義。類似的,多個字段之間以逗號隔開,可以為每個字段取別名,用空格隔開,可選。將該步操作結果拼接到標準SQL語句的SELECT部分。第四步,定義限制條件,相當于標準SQL語句的WHERE及之后的部分。例如可以定義排序方式,SQL函數(shù)等。這一步,還可以根據(jù)用戶的需要,定義一些參數(shù),在執(zhí)行查詢時,由用戶輸入;還可以定義一些宏變量,在執(zhí)行查詢時,取宏變量的值。第五步,生成符合SQL語法規(guī)則的標準SQL語句。 需要指出的是:以上的步驟中,第一步必須要選擇表。接下來,定義表的連接條件,選擇要查詢的字段,定義限制條件這幾步?jīng)]有一定的順序關系,誰先誰后都可以,最后,基于前面幾步的操作,生成標準的SQL語句。如果只有一張表,定義表的連接條件一步,可以省略,如果沒有限制條件,定義限制條件一步也可以省略,但是選擇查詢字段一步,必須得有,不可省略。對應于上述步驟,如圖4所示,是根據(jù)本發(fā)明的實施例的生成標準SQL語句的功能模塊的結構示意圖,包括:表選擇器:用于生成SQL語句中,對應的表信息部分,拼接在from后面。實現(xiàn)原理為:從圖形用戶界面,獲得表名和別名信息,中間用空格分開,多個表之間用逗號隔開,其中,別名可有可無。然后,將這些信息拼成字符串,形如:from表名I別名I,表名2別名2。表連接器:用于定義多個表之間的連接關系,如果只有一張表,則此步可以省略。實現(xiàn)原理:基于第一步選擇的表,這一步可以通過圖形界面選中表的連接關系,以及用于連接的字段。比如:表I左連接表2,on字段表1.字段I和表2.字段2。則拼出的SQL為表I left join表2 on表1.字段1=表2.字段2。字段選擇器:用于選擇要查詢的字段,拼接在select后面,這一步基于第一步選擇的表。實現(xiàn)原理為:從圖形用戶界面獲得選中的表中的字段名和別名,中間用空格分開,多個字段之間用逗號隔開,別名可省略。然后將字段信息拼成字符串,形如select表1.字段名I別名1,表2.字段名2別名2。限制條件定義器:用于定義限制條件,拼接在where后面。實現(xiàn)原理為:從圖形用戶界面獲取定義條件的左操作數(shù),操作符和右操作數(shù)。例如:表1.字段1=表2.字段2。SQL拼接:將前幾步的字符串,按照select, from, where的順序拼接起來,形成一條完整的SQL語句。結合以上幾步,可以生成一條標準SQL語句,如下:Select 表 1.字段 I 別名 1,表 2.字段 2 別名 2 from 表 I left join 表 2 on表1.字段1=表2.字段2where表1.字段1=表2.字段2。SQL校驗器:驗證拼接后的SQL語句是否符合SQL語法規(guī)范,比如表名,字段名是否合法等。SQL語句生成器:輸出拼接后的SQL字符串。以上結合附圖詳細說明了本發(fā)明的技術方案,實現(xiàn)了以下有益效果:1、通過圖形化的方式,準確、簡單方便的生成復雜SQL語句。2、SQL語句,支持參數(shù)和宏變量的設置,支持用戶在運行態(tài),對SQL語句進行控制。3、支持SQL語句的校驗,保證SQL語句執(zhí)行結果的準確性。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種數(shù)據(jù)庫查詢建模系統(tǒng),其特征在于,包括: 界面生成單元,用于生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項; 信息獲取單元,用于根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名,以及根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息; 語句拼接單元,用于將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。
2.根據(jù)權利要求1所述的數(shù)據(jù)庫查詢建模系統(tǒng),其特征在于,所述信息獲取單元通過選擇數(shù)據(jù)庫中的物理表、選擇對表進行描述的元數(shù)據(jù)或選擇已創(chuàng)建的查詢模型來確定需要查詢的表。
3.根據(jù)權利要求1或2所述的數(shù)據(jù)庫查詢建模系統(tǒng),其特征在于,還包括: 關系定義單元,用于在被選中的表的個數(shù)為多個的情況下,定義多個被選中的表的連接關系; 其中,所述語句拼接單元按照所述連接關系,將所述表名和所述字段名拼接至所述SQL語句的FROM部分。
4.根據(jù)權利要求1或2所述的數(shù)據(jù)庫查詢建模系統(tǒng),其特征在于,還包括: 條件定義單元,用于根據(jù)用戶 的條件定義操作,定義相應的限制條件; 其中,所述語句拼接單元還將所述限制條件拼接至所述SQL語句的WHERE及之后的部分。
5.根據(jù)權利要求4所述的數(shù)據(jù)庫查詢建模系統(tǒng),其特征在于,所述限制條件包括以下至少之一或其組合: 排序方式、SQL函數(shù)、用于在查詢操作時由用戶輸入的自定義參數(shù)、用于在查詢操作時利用其中的值的宏變量。
6.一種數(shù)據(jù)庫查詢建模方法,其特征在于,包括: 步驟201,生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項; 步驟202,根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名; 步驟204,根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息; 步驟206,將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。
7.根據(jù)權利要求6所述的數(shù)據(jù)庫查詢建模方法,其特征在于,所述確定需要查詢的表的步驟包括: 選擇數(shù)據(jù)庫中的物理表、選擇對表進行描述的元數(shù)據(jù)或選擇已創(chuàng)建的查詢模型。
8.根據(jù)權利要求6或7所述的數(shù)據(jù)庫查詢建模方法,其特征在于,所述步驟204還包括:當被選中的表的個數(shù)為多個時,還定義多個被選中的表的連接關系;以及 所述步驟206包括:按照所述連接關系,將所述表名和所述字段名拼接至所述SQL語句的FROM部分。
9.根據(jù)權利要求6或7所述的數(shù)據(jù)庫查詢建模方法,其特征在于,所述步驟204還包括:根據(jù)用戶的條件定義操作,定義相應的限制條件;以及 所述步驟206還包括:將所述限制條件拼接至所述SQL語句的WHERE及之后的部分。
10.根據(jù)權利要求9所述的數(shù)據(jù)庫查詢建模方法,其特征在于,所述限制條件包括以下至少之一或其組合: 排序方式、SQL函數(shù)、用于在查詢操作時由用戶輸入的自定義參數(shù)、用于在查詢操作時利用其中的值的 宏變量。
全文摘要
本發(fā)明提供了一種數(shù)據(jù)庫查詢建模系統(tǒng),包括界面生成單元,用于生成可視化圖形界面,所述可視化圖形界面上設置有可操作的功能菜單選項;信息獲取單元,用于根據(jù)用戶的第一選擇操作,在所述功能菜單選項中進行選擇,以確定需要查詢的表,并獲取該表的表名和字段名,以及根據(jù)用戶的第二選擇操作,在被選中的表中選擇需要查詢的字段信息;語句拼接單元,用于將所述表名和所述字段名作為SQL語句的FROM部分,將所述字段信息作為SQL語句的SELECT部分,拼接成對應的SQL語句。本發(fā)明還提出了一種數(shù)據(jù)庫查詢建模方法。通過本發(fā)明的技術方案,可以通過圖形化設置,自動生成標準SQL語句,降低了對SQL語句的編寫難度。
文檔編號G06F17/30GK103093000SQ201310059109
公開日2013年5月8日 申請日期2013年2月25日 優(yōu)先權日2013年2月25日
發(fā)明者張一桐 申請人:用友軟件股份有限公司