2016-02-14 65 views
0

我正在開發一個簡單的Java數據庫引擎(使用文本文件作爲表),我必須實現CRUD操作的代碼。我已經成功編寫了用於CREATE和INSERT命令的代碼。現在我想繼續更新這些應該是這樣的:如何實現數據庫引擎更新命令

UPDATE table-name SET attribute-name=literal {,attribute-name=literal} WHERE condition 

但我在這裏有一個問題,我堅持「條件」。我怎樣才能實現一個條件? (WHERE attr1 =某事AND attr2> =某事OR ...)我會非常感謝你的反饋。

此致敬禮。

+1

我想你應該澄清你的意思是「執行」。你的意思是如何將對象的狀況表示出來?如何解決給定「表格」數據的條件?如何解析條件? –

+0

我必須編寫代碼來解析(或解釋)UPDATE命令,並根據WHERE條件對相應表中的數據進行更改。我希望我解釋正確。 – JORGE

回答

0

這非常類似於有關表達式的語言場景。所以在你的情況下它將是:

... WHERE expression 

然後,你需要實現一種方法來處理表達式在你的解析。爲了做到這一點,您需要了解正則表達式以及如何正確解析表達式。

本文將幫助您使用正則表達式上創建一個表達式解析器: http://www.tutorialspoint.com/compiler_design/compiler_design_regular_expressions.htm

也瞭解有限自動機,實現算法: http://www.tutorialspoint.com/compiler_design/compiler_design_finite_automata.htm

0

WHERE部分永遠是最重要的組成部分任何數據庫系統。要找出滿足WHERE部分條件的所有記錄,應該爲條件中包含的任何列構建適當的索引。

例如,您會發現WHERE attr1 = something AND attr2 >= something OR... ,那麼列attr1, attr2必須已被索引,否則將需要很長的時間才能執行。索引技術可以是散列索引(用於K-V搜索),B +樹索引及其所有派生實現。