【連載】關係型數據庫是如何工作的?(10) - 查詢管理器之parser

解析器會檢查每條語句都會的關鍵字語法正確性,如果一條語句語法有誤,解析器會拒絕本次請求。例如:如果把”SELECT”寫成”SLECT”,就會遭到拒絕。

解析器還會進一步檢查關鍵字出現的順序,比如WHERE出現在SELECT之前就會被拒絕。

另外,查詢中的表明和字段名會被解析,解析器會使用數據庫的元數據來進行對比檢查:

  • 表是否存在。
  • 表中的字段是否存在。
  • 對於這種字段類型的操作是否合法,比如:不能將String和Integer進行對比、不能對一個Integer使用substring()函數。

還會檢查當前用戶是否具備讀或寫表的權限,這些權限同樣是由DBA來設置。在解析之後,SQL語句會被轉換爲一種數據庫內部表示,通常是轉換爲一種樹結構。如果解析器一切OK,那麼內部表示就會被轉發給重寫器繼續處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章