如何在H2中使用名爲GROUP的列創建表?我剛纔看到一個使用類似[*]的例子,但我似乎無法找到它。H2數據庫列名稱「GROUP」是保留字
回答
你必須在引號包圍的保留字列名,像這樣
「GROUP」
源(直接鏈接):h2database.com
關鍵詞/保留字
有一個不能用作標識符的關鍵字列表(名稱,列名稱等的表 ),除非它們被引用(包圍 用雙引號)。這份名單是目前:
CROSS,CURRENT_DATE,CURRENT_TIME,CURRENT_TIMESTAMP,DISTINCT, EXCEPT,EXISTS,false,那麼,來自全,GROUP,HAVING,INNER, 相交,IS,JOIN,LIKE,LIMIT減去,自然,不,NULL,ON, 訂單,小學,ROWNUM,SELECT,SYSDATE,SYSTIME,SYSTIMESTAMP,今天, TRUE,UNION,UNIQUE,其中
這個列表中的某些字詞是關鍵字,因爲它們是功能 可用於不兼容的'()',例如 CURRENT_TIMESTAMP。
結尾下劃線
添加尾隨下劃線:GROUP_
SQL規範明確承諾†沒有關鍵字永遠不會有一個結尾下劃線。因此,您可以確保您使用前導或尾部下劃線創建的任何命名都不會與關鍵字或保留字發生衝突。
我用尾部下劃線命名數據庫中的所有列,約束等。起初似乎有點奇怪,但你習慣看到它。發現有一個很好的副作用:在所有編程以及筆記和電子郵件中,當我看到尾部下劃線時,我知道上下文是數據庫,而不是編程變量或業務術語。
另一個好處是安心。這樣的解決方案可以消除由於關鍵字衝突導致的整個類別的可能的錯誤和奇怪的問題。如果你在想,「沒什麼大不了的 - 要記住和避免幾個SQL關鍵字」,再想一想。有a zillion keywords and reserved words,億元超過一千。
由溼婆的答案是正確的,以及:添加各地名,"GROUP"
報價,確實解決問題。缺點是記住添加這些引用會很煩人和麻煩。
進一步提示:對於跨各種SQL數據庫的最大兼容性,做你的命名全部使用小寫。 SQL規範說,所有名字都應該以大寫字母存儲,而容忍小寫字母。但不幸的是一些(最?)數據庫無法遵循這方面的規範。經過幾個小時的各種數據庫的研究,我得出結論,全小寫爲您提供最大的便攜性。
所以其實我建議你命名你的專欄:group_
多字的名字是這樣的:given_name_
和date_of_first_contact_
†,因爲它是版權保護我無法引用SQL規範,不幸。在SQL:2011規範中,閱讀部分5.4 名稱和標識標題下的語法規則第3條注111.在SQL-92請參見第5.2節第11條。只需搜索字underscore
即可使用。
您可以引用受版權保護的作品;合理使用允許您引用非實質性的部分,只要您指明作品的來源,並且不要複製「實質性」金額...... – Ben
- 1. 從MySQL數據庫的名稱字段保留ID
- 2. 在列名稱中使用保留字
- 3. R data.table列名稱的保留字?
- 4. 在Rails中,「名稱」是保留字嗎?
- 5. 「html」不是保留名稱
- 6. 「login.ini」是保留名稱嗎?
- 7. 使用列名稱數組聚合Spark數據框,保留名稱
- 8. H2數據庫列大小
- 9. Grails域名 - 保留關鍵字名稱
- 10. C++是否也保留標準庫函數名稱?
- 11. foreach:保留名稱
- 12. 刪除數字刻度並保留列名稱
- 13. 數據準備在R:正長行堆疊列保留名稱
- 14. '別名'是保留字嗎?
- 15. 保留行序列數據庫
- 16. 在Spring Boot項目中設置H2數據庫名稱
- 17. 是否爲MovieClip名稱保留「_」前綴?
- 18. 選擇數據庫名稱,表名稱和列名稱。
- 19. 數據庫列的列表名稱
- 20. 爲什麼MySql在執行數據庫表創建DDL時對我說字段名稱是保留關鍵字?
- 21. H2數據庫 - CSVREAD/CSVWRITE - 現場機櫃的選項名稱是什麼?
- 22. 數據庫名稱
- 23. MySQL保留列名
- 24. 將列表轉換爲數據框,同時保留列表元素名稱
- 25. 如何查詢名稱類似於保留字的列?
- 26. 如何選擇名稱爲保留字的列?
- 27. 訪問列名稱爲保留關鍵字的表格
- 28. 保留字「group」的替代方案
- 29. H2數據庫默認值TIMESTAMP列
- 30. 在大數據庫H2 H2 compact失敗
我試着用一些數據庫(PostgreSQL,MySQL,SQLite,Apache Derby,HSQLDB)。 _它們都拒絕名爲'group'的列。 –