PostgreSQL的SQL語句中的雙引號引發的問題

來源:互聯網
上載者:User

標籤:方法   區分   缺點   sql語句   對象   存在   create   支援   推薦   

最近開發一個WEB的ETL工具需要用到不同的資料來源。第一次用POSTGRESQL發現一個雙引號引發的問題:

標準的SQL是不區分大小寫。但是PostgreSQL對於資料庫中對象的名字允許使用支援大小寫區分的定義和引用方法。方式就是在DDL中用雙引號把希望支援大小的對象名括起來。
比如希望建立一個叫AAA的表。如果用CREATE TABLE AAA (...);的話,建立出來的表實際上是aaa。
如果希望建立大寫的AAA表的話,就需要用CREATE TABLE "AAA" (...);這種雙引號的方式定義對象名。
這樣寫的缺點是查詢語句必須也使用雙引號的方式引用對象名。比如SELECT * FROM "AAA";否則PostgreSQL預設會去找aaa這個對象,然後返回aaa不存在的錯誤。需要注意的是不僅僅是表可以這樣定義和引用,對PostgreSQL中的任意對象(比如列名,索引名等)都有效。


實際上傳統的SQL都是不區分大小寫,所以只要DDL和DLL按照傳統(不使用雙引號)的方式操作資料庫對象不會有任何問題。問題出在如果表是通過PostgreSQL的pgAdmin III 工具建立的話,預設是按照有雙引號的方式建立對象的,所以DLL裡面必須也要按照有雙引號的方式使用。但是這種寫法不是標準的,如果是通過一些通用庫函數訪問資料庫的話,會不被支援。


建議:
1.不推薦使用pgAdmin III這個工具建立資料庫物件。還是應該手工編寫DDL語句。
2.不推薦在DDL裡用雙引號的方式建立區分大小寫對象。
3.PostgreSQL給出的建議是SQL的key word用大寫,其他的名稱全部使用小寫。

PostgreSQL的SQL語句中的雙引號引發的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.