两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

結(jié)構(gòu)化查詢語言生成系統(tǒng)及方法

文檔序號:6612498閱讀:399來源:國知局

專利名稱::結(jié)構(gòu)化查詢語言生成系統(tǒng)及方法
技術(shù)領(lǐng)域
:本發(fā)明是有關(guān)于一種計(jì)算機(jī)語言生成系統(tǒng)及方法,特別涉及一種針對結(jié)構(gòu)化查詢語言的生成系統(tǒng)及其方法。
背景技術(shù)
:近年來,隨著網(wǎng)路技術(shù)的蓬勃發(fā)展,數(shù)據(jù)庫的相關(guān)應(yīng)用如雨后春筍般冒出,如電子商務(wù)及網(wǎng)絡(luò)論壇等,然而,當(dāng)數(shù)據(jù)庫隨著時(shí)間而逐步累積大量資料,以及數(shù)據(jù)關(guān)聯(lián)性日益復(fù)雜時(shí),想要查詢所需的數(shù)據(jù)也勢必使用到更為復(fù)雜的數(shù)據(jù)庫查詢語言。因此,如何更方便地生成復(fù)雜的數(shù)據(jù)庫查詢語言,以降低對SQL語句撰寫經(jīng)驗(yàn)的依賴程度,便成為各家廠商無不全力研究的議題。一般而言,數(shù)據(jù)庫查詢語言依不同的數(shù)據(jù)庫種類如階層式數(shù)據(jù)庫、網(wǎng)路式數(shù)據(jù)庫、關(guān)聯(lián)式數(shù)據(jù)庫及分散式數(shù)據(jù)庫...等而有所不同,上述的數(shù)據(jù)庫種類中又以關(guān)系型數(shù)據(jù)庫如DBASE、ACCESS、MSSQL及MYSQL最為廣泛,所述關(guān)系型數(shù)據(jù)庫是使用一種稱為結(jié)構(gòu)化查詢語言(StructuredQueryLanguage,SQL)的數(shù)據(jù)庫查詢語言來進(jìn)行查詢。然而,SQL語句是以命令方式而非以可視化界面產(chǎn)生,所以在撰寫上需依賴SQL語句撰寫經(jīng)驗(yàn)而有其不便性,且容易在不知內(nèi)建函數(shù)的情況下,因而無法使用效率較佳的函數(shù)來生成能夠達(dá)成相同查詢目的的SQL語句,產(chǎn)生依賴SQL語句撰寫經(jīng)驗(yàn)的限制,以及執(zhí)行效能不佳的問題。因此,目前有廠商發(fā)表通過圖形化界面來才喿作數(shù)據(jù)庫,并且能夠生成對應(yīng)操作的SQL語句的技術(shù),進(jìn)而達(dá)到輔助使用者生成SQL語句的目的。上述技術(shù)雖然可輔助使用者生成SQL語句,但卻無法針對不同的數(shù)據(jù)庫生成合適的SQL語句,且無法產(chǎn)生能夠達(dá)成相同查詢目的的多種SQL語句并進(jìn)行效能測試,用以提供使用者選擇效率較佳的SQL語句,因此,上4述技術(shù)同樣不足以解決依賴SQL語句撰寫經(jīng)驗(yàn)的限制,以及執(zhí)行效能不佳的問題。綜上所述,可知先前技術(shù)中長期以來一直存在依賴SQL語句撰寫經(jīng)驗(yàn)的限制,以及執(zhí)行效能不佳的問題,因此實(shí)有必要提出改進(jìn)的技術(shù)手段,來解決此一問題。
發(fā)明內(nèi)容有鑒于先前技術(shù)存在依賴SQL語句撰寫經(jīng)驗(yàn)的限制,以及執(zhí)行效能不佳的問題,本發(fā)明公開了一種結(jié)構(gòu)化查詢語言生成系統(tǒng)及方法。本發(fā)明所公開的結(jié)構(gòu)化查詢語言生成系統(tǒng),包含語句儲(chǔ)存模塊、函數(shù)儲(chǔ)存模塊、配置偵測模塊、輸入模塊及語句生成模塊。其中,語句儲(chǔ)存模塊,用以儲(chǔ)存等效語句;函數(shù)儲(chǔ)存;f莫塊,用以儲(chǔ)存數(shù)據(jù)庫所內(nèi)建的SQL函數(shù);配置偵測模塊,用以偵測所選擇的數(shù)據(jù)庫,并將偵測結(jié)果記錄于配置信息;輸入模塊,根據(jù)配置信息及SQL函數(shù)產(chǎn)生輸入窗口,用以提供輸入選擇條件;語句生成模塊,用以接收選擇條件,并依據(jù)等效語句生成SQL語句。另外,所述系統(tǒng)還包含效能測試模塊,用以通過效能函數(shù)計(jì)算并顯示SQL語句的執(zhí)行效能。至于本發(fā)明的結(jié)構(gòu)化查詢語言生成方法,包含下列步驟建立等效語句;記錄數(shù)據(jù)庫所內(nèi)建的SQL函數(shù);偵測所選擇的數(shù)據(jù)庫,并將偵測結(jié)果記錄于配置信息;根據(jù)配置信息及SQL函數(shù)產(chǎn)生輸入窗口,用以提供輸入選擇條件;接收選擇條件,并依據(jù)等效語句生成SQL語句。另外,所述方法還包含通過效能函數(shù)計(jì)算并顯示SQL語句的執(zhí)行效能的步驟。本發(fā)明所公開的系統(tǒng)與方法如上,與先前技術(shù)之間的差異在于本發(fā)明通過圖形化界面提供使用者生成SQL語句,并對所生成的SQL語句進(jìn)行效能測試,藉以輔助使用者選擇效能良好的SQL語句。通過上述技術(shù)手段,本發(fā)明可以達(dá)成提升SQL語句撰寫便利性及數(shù)據(jù)庫查詢效率的功效。圖1為本發(fā)明結(jié)構(gòu)化查詢語言生成系統(tǒng)的方塊圖。圖2為本發(fā)明結(jié)構(gòu)化查詢語言生成方法的流程圖。圖3為應(yīng)用本發(fā)明生成查詢指令的輸入窗口示意圖。具體實(shí)施例方式以下將配合附圖及實(shí)施例來詳細(xì)說明本發(fā)明的實(shí)施方式,藉此對本發(fā)明如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。首先,在說明本發(fā)明所提出的結(jié)構(gòu)化查詢語言生成系統(tǒng)及方法之前,先對自行定義的等效語句作說明,在本發(fā)明中所提及的等效語句是指能夠產(chǎn)生相同執(zhí)行結(jié)果的不同SQL語句,舉例來說若數(shù)據(jù)庫內(nèi)有一個(gè)名稱為table的數(shù)據(jù)表,該數(shù)據(jù)表內(nèi)有兩個(gè)字段分別為namel及name2,當(dāng)要顯示此數(shù)據(jù)表內(nèi)所有數(shù)據(jù)時(shí),可使用SQL語句為"selectnamel,name2fromtable"來達(dá)成,除此之外,亦可使用SQL語句為"select*fromtable"來達(dá)到同樣的目的,所述兩個(gè)SQL語句即為等效語句。請參閱圖l,圖1為本發(fā)明結(jié)構(gòu)化查詢語言生成系統(tǒng)的方塊圖,其中包含語句儲(chǔ)存模塊101、函數(shù)儲(chǔ)存模塊102、配置偵測模塊103、輸入模塊104、語句生成模塊105及效能測試模塊106。其中,語句儲(chǔ)存模塊101用以儲(chǔ)存等效語句,所述等效語句如同前面的說明,是指能夠產(chǎn)生相同執(zhí)行結(jié)果的不同SQL語句,在此不再贅述。函數(shù)儲(chǔ)存才莫塊102用以儲(chǔ)存數(shù)據(jù)庫所內(nèi)建的SQL函數(shù),所述SQL函數(shù)是指數(shù)據(jù)庫所內(nèi)建的SQL函數(shù),包含數(shù)學(xué)函數(shù)、字符串函數(shù)、格式化函數(shù)、時(shí)間函數(shù)、操作函數(shù)及系統(tǒng)函數(shù),由于不同的數(shù)據(jù)庫如MSSQL或MySQL所內(nèi)建的SQL函數(shù)亦有所差異,所以可儲(chǔ)存不同數(shù)據(jù)庫的SQL函數(shù)供使用者選擇。配置偵測模塊103用以偵測所選擇的數(shù)據(jù)庫,并將偵測結(jié)果記錄于配置信息,此配置信息所記錄的信息包含數(shù)據(jù)庫名稱、數(shù)據(jù)庫中的數(shù)據(jù)表名稱及數(shù)據(jù)表的字段名稱,所述偵測結(jié)果是指配置偵測模塊103通過已知的技術(shù)手段(即數(shù)據(jù)庫所內(nèi)建的函數(shù))偵測使用者所選擇的數(shù)據(jù)庫,并得到數(shù)據(jù)庫中的信息,舉例來說通過數(shù)據(jù)庫所內(nèi)建的函數(shù)如mysql—list—dbs來取得數(shù)據(jù)庫名稱,接著將得到的數(shù)據(jù)庫名稱以參數(shù)方式通過函數(shù)如mysql—list_tables及mysql—tablename來取得數(shù)據(jù)庫中的數(shù)據(jù)表名稱,并再以數(shù)據(jù)表名稱作為參數(shù)傳遞至內(nèi)建的函數(shù)如mysql—list_fields及mysql_field_name用以取得數(shù)據(jù)表的字段名稱,接著將所得到的數(shù)據(jù)庫名稱、數(shù)據(jù)庫中的數(shù)據(jù)表名稱及數(shù)據(jù)表的字段名稱記錄于配置信息中。經(jīng)由上述例子可得知,所述配置信息是通過配置偵測模塊103偵測所選擇的數(shù)據(jù)庫后所產(chǎn)生,而例子中所提函數(shù)的實(shí)際用法為已知技術(shù),故在此不再作贅述。上述舉例是以MySQL數(shù)據(jù)庫及其內(nèi)建的函數(shù)為例,然在實(shí)施上并不以此為限。輸入模塊104根據(jù)配置信息及函數(shù)儲(chǔ)存模塊102中的SQL函數(shù)產(chǎn)生輸入窗口,用以提供使用者輸入選擇條件,舉例來說SQL指令(例如select)、配置信息中的信息(例如數(shù)據(jù)表名稱)、SQL函數(shù)(例如"SUM()")及操作符(例如"=,,)皆稱為選擇條件。另外,此輸入窗口除了以程式的窗口界面顯示外,亦可通過網(wǎng)頁的方式呈現(xiàn)。語句生成模塊105用以接收使用者輸入的選擇條件,并依據(jù)等效語句生成SQL語句(稍后將配合圖3以實(shí)施例的方式進(jìn)行說明)。效能測試模塊106通過效能函數(shù)計(jì)算并顯示SQL語句的執(zhí)行效能,所述效能函數(shù)是數(shù)據(jù)庫所內(nèi)建用來測試效能的函數(shù)(例如MySQL數(shù)據(jù)庫的效能函數(shù)為"benchmark()")。如圖2所示,圖2為本發(fā)明結(jié)構(gòu)化查詢語言生成方法的流程圖,包含下列步驟建立等效語句(步驟201);記錄數(shù)據(jù)庫所內(nèi)建的SQL函數(shù)(步驟202);偵測所選擇的數(shù)據(jù)庫,并將偵測結(jié)果記錄于配置信息(步驟203);根據(jù)配置信息及SQL函數(shù)產(chǎn)生輸入窗口,用以提供輸入選擇條件(步驟204);接收選擇條件,并依據(jù)等效語句生成SQL語句(步驟205);通過效能函數(shù)計(jì)算并顯示SQL語句的執(zhí)行效能(步驟206)。通過上述的系統(tǒng)及方法即可對不同的數(shù)據(jù)庫生成合適的SQL語句,且7更以此合適的SQL語句為基礎(chǔ)來產(chǎn)生能夠達(dá)成相同查詢目的的多種SQL語句并進(jìn)行效能測試,提供使用者選擇效率較佳的SQL語句,達(dá)成解決依賴SQL語句撰寫經(jīng)驗(yàn)的限制,以及執(zhí)行效能不彰的問題。以下配合圖3以實(shí)施例方式進(jìn)行如下說明,請參閱圖3,圖3為應(yīng)用本發(fā)明生成查詢指令的輸入窗口示意圖,包含輸入窗口301、數(shù)據(jù)庫選擇組件310、函數(shù)選擇組件311、函數(shù)說明塊312、選擇塊一321、選擇塊二322、選擇塊三323、語句顯示塊330、確定組件341及清除組件342,所述輸入窗口301內(nèi)所含的組件并不以此為限。承上所述,當(dāng)使用者欲生成查詢數(shù)據(jù)庫的SQL語句時(shí),可通過一個(gè)數(shù)據(jù)庫登入界面(圖中未示)來登入數(shù)據(jù)庫,當(dāng)?shù)侨氤晒笸ㄟ^配置偵測模塊103偵測登入的數(shù)據(jù)庫,并將偵測結(jié)果(例如偵測到數(shù)據(jù)庫的名稱為"DB",且數(shù)據(jù)庫內(nèi)有兩個(gè)名稱為"user"及"user—a"的數(shù)據(jù)表,其中名稱為"user"的數(shù)據(jù)表內(nèi)有"id"及"name"兩個(gè)字段;而名稱為"user—a"的數(shù)據(jù)表內(nèi)則有"id"及"action"兩個(gè)字段)記錄于配置信息中,由于偵測數(shù)據(jù)庫的信息為已知技術(shù),故在此不多作贅述。接著,輸入模塊104根據(jù)已記錄的配置信息及儲(chǔ)存于函數(shù)儲(chǔ)存模塊102的SQL函數(shù)產(chǎn)生如圖3所示的輸入窗口301,由于不同數(shù)據(jù)庫內(nèi)建的SQL函數(shù)也不盡相同,因此輸入窗口301提供數(shù)據(jù)庫選擇組件310讓使用者選擇數(shù)據(jù)庫(例如MySQL),并于函數(shù)選擇組件311中列出對應(yīng)數(shù)據(jù)庫(例如MySQL)的SQL函數(shù)供使用者選擇,且在函數(shù)說明塊312中顯示函數(shù)的用法及說明。接下來,使用者可通過選擇塊一321來輸入欲查詢的字段(例如字段名稱為"id"、"name"及"action");通過選擇塊二322輸入欲查詢的數(shù)據(jù)表(例如數(shù)據(jù)表名稱為"user"及"user—a'1或全選);通過選捧塊三323輸入操作數(shù)及操作符(例如第一操作數(shù)為"user.id"、操作符為"="及第二操作數(shù)為"user_a.id"),雖然圖3中是以勾選組件或下拉式選單來進(jìn)行輸入,然在實(shí)現(xiàn)上并未作如此的限定,舉例來說亦可通過文字輸入塊(圖中未示)提供使用者進(jìn)行輸入。當(dāng)上述的選擇條件輸入完成,且使用者點(diǎn)選確定組件341后,語句生成模塊105接收所輸入的選擇條件,并依據(jù)等效語句生成SQL語句(例如"selectid,name,actionfromuser,user—awhereuser.id=user—a.id"及"select*fromuserLEFTJOINuser—aONuser.id=user—a.id"),所述依據(jù)等效語句生成SQL語句的過程如下根據(jù)所輸入的選擇條件產(chǎn)生對應(yīng)的SQL語句(例如"selectid,name,actionfromuser,user—awhereuser.id=user_a.id"),并以此SQL語句作為生成另一SQL語句的基準(zhǔn);從儲(chǔ)存于語句儲(chǔ)存模塊101中尋找匹配的等效語句,舉例來說,以作為基準(zhǔn)的SQL語句格式(例如"select[字段參數(shù)a,字段參數(shù)b,字段參數(shù)c]from[表名參數(shù)a,表名參數(shù)b]where[表名參數(shù)a].[字段參數(shù)11]=[表名參數(shù)b].[字段參數(shù)n]")來尋找匹配的等效語句格式(例如select[字段參數(shù)a,字段參數(shù)b,字段參數(shù)c]from[表名參數(shù)a]LEFTJOIN[表名參數(shù)b]ON[表名參數(shù)a].[字段參數(shù)n]-[表名參數(shù)b].[字段參數(shù)n]");將所有參數(shù)進(jìn)行替換處理后生成另一SQL語句(例如"selectid,name,actionfromuserLEFTJOINuser—aONuser.id=user_a.id");判斷選擇塊一321內(nèi)的字段是否全選,若是則以"*"取代前述所生成的另一SQL語句中的字段名稱(例如"id,name,action");最后,生成的另一SQL語句為"select*fromuserLEFTJOINuser—aONuser.id=user—a.id",并將所有生成的SQL語句顯示于語句顯示塊330中,若使用者不滿意所產(chǎn)生的SQL語句可通過點(diǎn)選清除組件342來清除語句顯示塊330中所顯示的SQL語句。效能測試模塊106通過效能函數(shù)(例如"benchmark()")計(jì)算并顯示所生成的SQL語句的執(zhí)行效能,其執(zhí)行效能的顯示方式是以SQL語句的執(zhí)行時(shí)間(例如4.00秒)顯示于相應(yīng)的SQL語句后,如圖3中的語句顯示塊330所示意。另外,所述效能函數(shù)的使用方法為已知技術(shù),故在此不多作贅述。綜上所述,可知本發(fā)明與先前技術(shù)之間的差異在于通過圖形化界面提供使用者生成SQL語句,并對所生成的SQL語句進(jìn)行效能測試的技術(shù)手段,藉由此一技術(shù)手段可以輔助使用者選擇效能良好的SQL語句從而解決先前技術(shù)中存在的問題,進(jìn)而達(dá)成提升SQL語句撰寫便利性及數(shù)據(jù)庫查詢效率的技術(shù)功效。雖然本發(fā)明以前述的實(shí)施例公開如上,然其并非用以限定本發(fā)明,任何本領(lǐng)域技術(shù)人員,在不脫離本發(fā)明之精神和范圍內(nèi),當(dāng)可作些許的更動(dòng)與潤9飾,因此本發(fā)明的專利保護(hù)范圍須視本說明書所附的權(quán)利要求所界定者為準(zhǔn)。權(quán)利要求1、一種結(jié)構(gòu)化查詢語言生成系統(tǒng),其特征在于,包含一語句儲(chǔ)存模塊,用以儲(chǔ)存至少一等效語句;一函數(shù)儲(chǔ)存模塊,用以儲(chǔ)存至少一數(shù)據(jù)庫所內(nèi)建的至少一SQL函數(shù);一配置偵測模塊,用以偵測所選擇的該數(shù)據(jù)庫,并將偵測結(jié)果記錄于一配置信息;一輸入模塊,根據(jù)該配置信息及所述SQL函數(shù)產(chǎn)生一輸入窗口,用以提供輸入至少一選擇條件;及一語句生成模塊,用以接收所述選擇條件,并依據(jù)所述等效語句生成至少一SQL語句。2、如權(quán)利要求1所述的結(jié)構(gòu)化查詢語言生成系統(tǒng),其特征在于,其中所述系統(tǒng)還包含一效能測試模塊,用以通過一效能函數(shù)計(jì)算并顯示所述SQL語句的執(zhí)行效能。3、如權(quán)利要求1所述的結(jié)構(gòu)化查詢語言生成系統(tǒng),其特征在于,其中所述等效語句是指能夠產(chǎn)生相同執(zhí)行結(jié)果的不同SQL語句。4、如權(quán)利要求1所述的結(jié)構(gòu)化查詢語言生成系統(tǒng),其特征在于,其中所述SQL函數(shù)包含數(shù)學(xué)函數(shù)、字符串函數(shù)、格式化函數(shù)、時(shí)間函數(shù)、操作函數(shù)及系統(tǒng)函數(shù)。5、如權(quán)利要求1所述的結(jié)構(gòu)化查詢語言生成系統(tǒng),其特征在于,其中該配置信息包含該數(shù)據(jù)庫名稱、該數(shù)據(jù)庫中至少一數(shù)據(jù)表名稱及所述數(shù)據(jù)表的字段名稱。6、如權(quán)利要求2所述的結(jié)構(gòu)化查詢語言生成系統(tǒng),其特征在于,其中該效能函數(shù)為各該數(shù)據(jù)庫所內(nèi)建用以測試效能的函數(shù)。7、一種結(jié)構(gòu)化查詢語言生成方法,其特征在于,其步驟包括建立至少一等效語句;記錄至少一數(shù)據(jù)庫所內(nèi)建的至少一SQL函數(shù);偵測所選擇的該數(shù)據(jù)庫,并將偵測結(jié)果記錄于一配置信息;根據(jù)該配置信息及所述SQL函數(shù)產(chǎn)生一輸入窗口,用以提供輸入至少一選擇條件;及接收所述選擇條件,并依據(jù)所述等效語句生成至少一SQL語句。8、如權(quán)利要求7所述的結(jié)構(gòu)化查詢語言生成方法,其特征在于,其中該方法還包含通過一效能函數(shù)計(jì)算并顯示所述SQL語句的執(zhí)行效能的步驟。9、如權(quán)利要求7所述的結(jié)構(gòu)化查詢語言生成方法,其特征在于,其中所述SQL函數(shù)包含數(shù)學(xué)函數(shù)、字符串函數(shù)、格式化函數(shù)、時(shí)間函數(shù)、操作函數(shù)及系統(tǒng)函數(shù)。10、如權(quán)利要求7所述的結(jié)構(gòu)化查詢語言生成方法,其特征在于,其中該配置信息包含該數(shù)據(jù)庫名稱、該數(shù)據(jù)庫中至少一數(shù)據(jù)表名稱及所述數(shù)據(jù)表的字段名稱。全文摘要本發(fā)明公開了一種結(jié)構(gòu)化查詢語言生成系統(tǒng)及方法,目的在于解決依賴SQL語句撰寫經(jīng)驗(yàn)的限制,以及執(zhí)行效能不佳的問題,通過圖形化界面供使用者生成SQL語句,藉以輔助使用者選擇效能良好的SQL語句,從而達(dá)到提升SQL語句撰寫便利性及數(shù)據(jù)庫查詢效率的技術(shù)功效。文檔編號G06F17/30GK101464862SQ20071016062公開日2009年6月24日申請日期2007年12月21日優(yōu)先權(quán)日2007年12月21日發(fā)明者許國華,邱全成申請人:英業(yè)達(dá)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
韶山市| 德惠市| 元阳县| 泗阳县| 二手房| 临夏市| 武城县| 苍梧县| 泗洪县| 亚东县| 莱西市| 柳河县| 炉霍县| 武隆县| 永川市| 大荔县| 松桃| 会宁县| 江陵县| 山阳县| 商洛市| 呼玛县| 黎平县| 五指山市| 深水埗区| 马鞍山市| 关岭| 鸡西市| 五峰| 南华县| 丰镇市| 滨州市| 平潭县| 府谷县| 海兴县| 天柱县| 始兴县| 米泉市| 体育| 张家川| 朝阳区|