當(dāng)我們向數(shù)據(jù)庫(kù)請(qǐng)求信息時(shí),通常是以問(wèn)題的形式或者一個(gè)隱含問(wèn)題的語(yǔ)句形式。比如,我們可以這樣公式化語(yǔ)句:
"Which cities do our customers live in?"
"Show me a current list of our employees and their phone numbers."
"What kind of classes do we currently offer?"
"Give me the names of the folks on our staff and the dates they were hired." |
在我們明確了問(wèn)題之后,我們可以將我們的請(qǐng)求翻譯成更正式的語(yǔ)句。我們可以使用這種形式來(lái)組成語(yǔ)句:
Select <item> from the <source> |
首先查看請(qǐng)求及其替代其中諸如“list”、“show me”、“what”、“which”和“who”以及詞“Select”的單詞或短語(yǔ)。接著,確定請(qǐng)求中的所有名詞,并確定指定的名詞是否代表我們想要的一項(xiàng)信息、或者可能存儲(chǔ)該項(xiàng)信息的表的名稱(chēng)。如果它是一項(xiàng)信息,那么就用它替代翻譯的語(yǔ)句中的<item>。如果它是一個(gè)表名稱(chēng),那么就用它替代<source>。如果對(duì)前面列舉的第一個(gè)問(wèn)題進(jìn)行翻譯,那么語(yǔ)句看起來(lái)是這樣的:
Select city from the customers table |
在我們定義了翻譯語(yǔ)句之后,我們需要使用如圖4-4顯示的SQL句法將它轉(zhuǎn)換成一個(gè)完全的SELECT語(yǔ)句,然而,這一步就要清理之前翻譯的語(yǔ)句。我們可以刪除任何不是代表字段或者表的名稱(chēng)、或者不是特定用于SQL句法中的名詞。在清理過(guò)后,翻譯語(yǔ)句是這樣的:
Select city from customers |
刪除了之后,我們現(xiàn)在有了一個(gè)完整的SELECT語(yǔ)句。
SELECT City FROM Customers |

圖4-4 簡(jiǎn)單SELECT語(yǔ)句的語(yǔ)法
我們可以對(duì)發(fā)送到數(shù)據(jù)庫(kù)上的任何請(qǐng)求使用我們剛剛提出的三個(gè)步驟的技巧。事實(shí)上,我們會(huì)在這本書(shū)的大多地方都使用了這個(gè)技巧。并且,我們建議你在剛開(kāi)始學(xué)習(xí)如何創(chuàng)建立這些語(yǔ)句時(shí)使用它。然而,隨著對(duì)撰寫(xiě)SELECT語(yǔ)句越來(lái)越熟悉,你最后將會(huì)把這些步驟融會(huì)貫通。
在我們定義了翻譯語(yǔ)句之后,我們需要使用如圖4-4顯示的SQL句法將它轉(zhuǎn)換成一個(gè)完全的SELECT語(yǔ)句,然而,這一步就要清理之前翻譯的語(yǔ)句。我們可以刪除任何不是代表字段或者表的名稱(chēng)、或者不是特定用于SQL句法中的名詞。在清理過(guò)后,翻譯語(yǔ)句是這樣的:
Select city from customers |
刪除了之后,我們現(xiàn)在有了一個(gè)完整的SELECT語(yǔ)句。
SELECT City FROM Customers |
我們可以對(duì)發(fā)送到數(shù)據(jù)庫(kù)上的任何請(qǐng)求使用我們剛剛提出的三個(gè)步驟的技巧。事實(shí)上,我們會(huì)在這本書(shū)的大多地方都使用了這個(gè)技巧。并且,我們建議你在剛開(kāi)始學(xué)習(xí)如何創(chuàng)建立這些語(yǔ)句時(shí)使用它。然而,隨著對(duì)撰寫(xiě)SELECT語(yǔ)句越來(lái)越熟悉,你最后將會(huì)把這些步驟融會(huì)貫通。