国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄 搜尋
前言 何為PostgreSQL? PostgreSQL簡史 格式約定 更多信息 臭蟲匯報指導(dǎo) I. 教程 章1. 從頭開始 1.1. 安裝 1.2. 體系基本概念 1.3. 創(chuàng)建一個數(shù)據(jù)庫 1.4. 訪問數(shù)據(jù)庫 章2. SQL語言 2.1. 介紹 2.2. 概念 2.3. 創(chuàng)建新表 2.4. 向表中添加行 2.5. 查詢一個表 2.6. 表間鏈接 2.7. 聚集函數(shù) 2.8. 更新 2.9. 刪除 章3. 高級特性 3.1. 介紹 3.2. 視圖 3.3. 外鍵 3.4. 事務(wù) 3.5. 窗口函數(shù) 3.6. 繼承 3.7. 結(jié)論 II. SQL語言 章4. SQL語法 4.1. 詞法結(jié)構(gòu) 4.2. 值表達(dá)式 4.3. 調(diào)用函數(shù) 章5. 數(shù)據(jù)定義 5.1. 表的基本概念 5.2. 缺省值 5.3. 約束 5.4. 系統(tǒng)字段 5.5. 修改表 5.6. 權(quán)限 5.7. 模式 5.8. 繼承 5.9. 分區(qū) 5.10. 其它數(shù)據(jù)庫對象 5.11. 依賴性跟蹤 章 6. 數(shù)據(jù)操作 6.1. 插入數(shù)據(jù) 6.2. 更新數(shù)據(jù) 6.3. 刪除數(shù)據(jù) 章7. 查詢 7.1. 概述 7.2. 表表達(dá)式 7.3. 選擇列表 7.4. 組合查詢 7.5. 行排序 7.6. LIMIT和OFFSET 7.7. VALUES列表 7.8. WITH的查詢(公用表表達(dá)式) 章8. 數(shù)據(jù)類型 8.1. 數(shù)值類型 8.2. 貨幣類型 8.3. 字符類型 8.4. 二進(jìn)制數(shù)據(jù)類型 8.5. 日期/時間類型 8.6. 布爾類型 8.7. 枚舉類型 8.8. 幾何類型 8.9. 網(wǎng)絡(luò)地址類型 8.10. 位串類型 8.11. 文本搜索類型 8.12. UUID類型 8.13. XML類型 8.14. 數(shù)組 8.15. 復(fù)合類型 8.16. 對象標(biāo)識符類型 8.17. 偽類型 章 9. 函數(shù)和操作符 9.1. 邏輯操作符 9.2. 比較操作符 9.3. 數(shù)學(xué)函數(shù)和操作符 9.4. 字符串函數(shù)和操作符 9.5. 二進(jìn)制字符串函數(shù)和操作符 9.6. 位串函數(shù)和操作符 9.7. 模式匹配 9.8. 數(shù)據(jù)類型格式化函數(shù) 9.9. 時間/日期函數(shù)和操作符 9.10. 支持枚舉函數(shù) 9.11. 幾何函數(shù)和操作符 9.12. 網(wǎng)絡(luò)地址函數(shù)和操作符 9.13. 文本檢索函數(shù)和操作符 9.14. XML函數(shù) 9.15. 序列操作函數(shù) 9.16. 條件表達(dá)式 9.17. 數(shù)組函數(shù)和操作符 9.18. 聚合函數(shù) 9.19. 窗口函數(shù) 9.20. 子查詢表達(dá)式 9.21. 行和數(shù)組比較 9.22. 返回集合的函數(shù) 9.23. 系統(tǒng)信息函數(shù) 9.24. 系統(tǒng)管理函數(shù) 9.25. 觸發(fā)器函數(shù) 章10. 類型轉(zhuǎn)換 10.3. 函數(shù) 10.2. 操作符 10.1. 概述 10.4. 值存儲 10.5. UNION 章11. 索引 11.1. 介紹 11.2. 索引類型 11.3. 多字段索引 11.4. 索引和ORDER BY 11.5. 組合多個索引 11.6. 唯一索引 11.7. 表達(dá)式上的索引 11.8. 部分索引 11.9. 操作類和操作簇 11.10. 檢查索引的使用 章12. Full Text Search 12.1. Introduction 12.2. Tables and Indexes 12.3. Controlling Text Search 12.4. Additional Features 12.5. Parsers 12.6. Dictionaries 12.7. Configuration Example 12.8. Testing and Debugging Text Search 12.9. GiST and GIN Index Types 12.10. psql Support 12.11. Limitations 12.12. Migration from Pre-8.3 Text Search 章13. 并發(fā)控制 13.1. 介紹 13.2. 事務(wù)隔離 13.3. 明確鎖定 13.4. 應(yīng)用層數(shù)據(jù)完整性檢查 13.5. 鎖和索引 章14. 性能提升技巧 14.1. 使用EXPLAIN 14.2. 規(guī)劃器使用的統(tǒng)計信息 14.3. 用明確的JOIN語句控制規(guī)劃器 14.4. 向數(shù)據(jù)庫中添加記錄 14.5. 非持久性設(shè)置 III. 服務(wù)器管理 章15. 安裝指導(dǎo) 15.1. 簡版 15.2. 要求 15.3. 獲取源碼 15.4. 升級 15.5. 安裝過程 15.6. 安裝后的設(shè)置 15.7. 支持的平臺 15.8. 特殊平臺的要求 章16. Installation from Source Code on Windows 16.1. Building with Visual C++ or the Platform SDK 16.2. Building libpq with Visual C++ or Borland C++ 章17. 服務(wù)器安裝和操作 17.1. PostgreSQL用戶帳戶 17.2. 創(chuàng)建數(shù)據(jù)庫集群 17.3. 啟動數(shù)據(jù)庫服務(wù)器 17.4. 管理內(nèi)核資源 17.5. 關(guān)閉服務(wù) 17.6. 防止服務(wù)器欺騙 17.7. 加密選項 17.8. 用SSL進(jìn)行安全的TCP/IP連接 17.9. Secure TCP/IP Connections with SSH Tunnels 章18. 服務(wù)器配置 18.1. 設(shè)置參數(shù) 18.2. 文件位置 18.3. 連接和認(rèn)證 18.4. 資源消耗 18.5. 預(yù)寫式日志 18.6. 查詢規(guī)劃 18.7. 錯誤報告和日志 18.8. 運行時統(tǒng)計 18.9. 自動清理 18.10. 客戶端連接缺省 18.12. 版本和平臺兼容性 18.11. 鎖管理 18.13. 預(yù)置選項 18.14. 自定義的選項 18.15. 開發(fā)人員選項 18.16. 短選項 章19. 用戶認(rèn)證 19.1. pg_hba.conf 文件 19.2. 用戶名映射 19.3. 認(rèn)證方法 19.4. 用戶認(rèn)證 章20. 數(shù)據(jù)庫角色和權(quán)限 20.1. 數(shù)據(jù)庫角色 20.2. 角色屬性 20.3. 權(quán)限 20.4. 角色成員 20.5. 函數(shù)和觸發(fā)器 章21. 管理數(shù)據(jù)庫 21.1. 概述 21.2. 創(chuàng)建一個數(shù)據(jù)庫 21.3. 臨時庫 21.4. 數(shù)據(jù)庫配置 21.5. 刪除數(shù)據(jù)庫 21.6. 表空間 章22. 本土化 22.1. 區(qū)域支持 22.2. 字符集支持 章23. 日常數(shù)據(jù)庫維護工作 23.1. Routine Vacuuming日常清理 23.2. 經(jīng)常重建索引 23.3. 日志文件維護 章24. 備份和恢復(fù) 24.1. SQL轉(zhuǎn)儲 24.2. 文件系統(tǒng)級別的備份 24.3. 在線備份以及即時恢復(fù)(PITR) 24.4. 版本間遷移 章25. 高可用性與負(fù)載均衡,復(fù)制 25.1. 不同解決方案的比較 25.2. 日志傳送備份服務(wù)器 25.3. 失效切換 25.4. 日志傳送的替代方法 25.5. 熱備 章26. 恢復(fù)配置 26.1. 歸檔恢復(fù)設(shè)置 26.2. 恢復(fù)目標(biāo)設(shè)置 26.3. 備服務(wù)器設(shè)置 章27. 監(jiān)控數(shù)據(jù)庫的活動 27.1. 標(biāo)準(zhǔn)Unix工具 27.2. 統(tǒng)計收集器 27.3. 查看鎖 27.4. 動態(tài)跟蹤 章28. 監(jiān)控磁盤使用情況 28.1. 判斷磁盤的使用量 28.2. 磁盤滿導(dǎo)致的失效 章29. 可靠性和預(yù)寫式日志 29.1. 可靠性 29.2. 預(yù)寫式日志(WAL) 29.3. 異步提交 29.4. WAL配置 29.5. WAL內(nèi)部 章30. Regression Tests 30.1. Running the Tests 30.2. Test Evaluation 30.3. Variant Comparison Files 30.4. Test Coverage Examination IV. 客戶端接口 章31. libpq-C庫 31.1. 數(shù)據(jù)庫聯(lián)接函數(shù) 31.2. 連接狀態(tài)函數(shù) 31.3. 命令執(zhí)行函數(shù) 31.4. 異步命令處理 31.5. 取消正在處理的查詢 31.6. 捷徑接口 31.7. 異步通知 31.8. 與COPY命令相關(guān)的函數(shù) 31.9. Control Functions 控制函數(shù) 31.10. 其他函數(shù) 31.11. 注意信息處理 31.12. 事件系統(tǒng) 31.13. 環(huán)境變量 31.14. 口令文件 31.15. 連接服務(wù)的文件 31.16. LDAP查找連接參數(shù) 31.17. SSL支持 31.18. 在多線程程序里的行為 31.19. 制作libpq程序 31.20. 例子程序 章32. 大對象 32.1. 介紹 32.2. 實現(xiàn)特點 32.3. 客戶端接口 32.4. 服務(wù)器端函數(shù) 32.5. 例子程序 章33. ECPG - Embedded SQL in C 33.1. The Concept 33.2. Connecting to the Database Server 33.3. Closing a Connection 33.4. Running SQL Commands 33.5. Choosing a Connection 33.6. Using Host Variables 33.7. Dynamic SQL 33.8. pgtypes library 33.9. Using Descriptor Areas 33.10. Informix compatibility mode 33.11. Error Handling 33.12. Preprocessor directives 33.13. Processing Embedded SQL Programs 33.14. Library Functions 33.15. Internals 章34. 信息模式 34.1. 關(guān)于這個模式 34.2. 數(shù)據(jù)類型 34.3. information_schema_catalog_name 34.4. administrable_role_authorizations 34.5. applicable_roles 34.6. attributes 34.7. check_constraint_routine_usage 34.8. check_constraints 34.9. column_domain_usage 34.10. column_privileges 34.11. column_udt_usage 34.12. 字段 34.13. constraint_column_usage 34.14. constraint_table_usage 34.15. data_type_privileges 34.16. domain_constraints 34.18. domains 34.17. domain_udt_usage 34.19. element_types 34.20. enabled_roles 34.21. foreign_data_wrapper_options 34.22. foreign_data_wrappers 34.23. foreign_server_options 34.24. foreign_servers 34.25. key_column_usage 34.26. parameters 34.27. referential_constraints 34.28. role_column_grants 34.29. role_routine_grants 34.30. role_table_grants 34.31. role_usage_grants 34.32. routine_privileges 34.33. routines 34.34. schemata 34.35. sequences 34.36. sql_features 34.37. sql_implementation_info 34.38. sql_languages 34.39. sql_packages 34.40. sql_parts 34.41. sql_sizing 34.42. sql_sizing_profiles 34.43. table_constraints 34.44. table_privileges 34.45. tables 34.46. triggered_update_columns 34.47. 觸發(fā)器 34.48. usage_privileges 34.49. user_mapping_options 34.50. user_mappings 34.51. view_column_usage 34.52. view_routine_usage 34.53. view_table_usage 34.54. 視圖 V. 服務(wù)器端編程 章35. 擴展SQL 35.1. 擴展性是如何實現(xiàn)的 35.2. PostgreSQL類型系統(tǒng) 35.3. User-Defined Functions 35.4. Query Language (SQL) Functions 35.5. Function Overloading 35.6. Function Volatility Categories 35.7. Procedural Language Functions 35.8. Internal Functions 35.9. C-Language Functions 35.10. User-Defined Aggregates 35.11. User-Defined Types 35.12. User-Defined Operators 35.13. Operator Optimization Information 35.14. Interfacing Extensions To Indexes 35.15. 用C++擴展 章36. 觸發(fā)器 36.1. 觸發(fā)器行為概述 36.3. 用 C 寫觸發(fā)器 36.2. 數(shù)據(jù)改變的可視性 36.4. 一個完整的例子 章37. 規(guī)則系統(tǒng) 37.1. The Query Tree 37.2. 視圖和規(guī)則系統(tǒng) 37.3. 在INSERT,UPDATE和DELETE上的規(guī)則 37.4. 規(guī)則和權(quán)限 37.5. 規(guī)則和命令狀態(tài) 37.6. 規(guī)則與觸發(fā)器得比較 章38. Procedural Languages 38.1. Installing Procedural Languages 章39. PL/pgSQL - SQL過程語言 39.1. 概述 39.2. PL/pgSQL的結(jié)構(gòu) 39.3. 聲明 39.4. 表達(dá)式 39.5. 基本語句 39.6. 控制結(jié)構(gòu) 39.7. 游標(biāo) 39.8. 錯誤和消息 39.9. 觸發(fā)器過程 39.10. PL/pgSQL Under the Hood 39.11. 開發(fā)PL/pgSQL的一些提示 39.12. 從OraclePL/SQL 進(jìn)行移植 章40. PL/Tcl - Tcl Procedural Language 40.1. Overview 40.2. PL/Tcl Functions and Arguments 40.3. Data Values in PL/Tcl 40.4. Global Data in PL/Tcl 40.5. Database Access from PL/Tcl 40.6. Trigger Procedures in PL/Tcl 40.7. Modules and the unknown command 40.8. Tcl Procedure Names 章41. PL/Perl - Perl Procedural Language 41.1. PL/Perl Functions and Arguments 41.2. Data Values in PL/Perl 41.3. Built-in Functions 41.4. Global Values in PL/Perl 41.6. PL/Perl Triggers 41.5. Trusted and Untrusted PL/Perl 41.7. PL/Perl Under the Hood 章42. PL/Python - Python Procedural Language 42.1. Python 2 vs. Python 3 42.2. PL/Python Functions 42.3. Data Values 42.4. Sharing Data 42.5. Anonymous Code Blocks 42.6. Trigger Functions 42.7. Database Access 42.8. Utility Functions 42.9. Environment Variables 章43. Server Programming Interface 43.1. Interface Functions Spi-spi-connect Spi-spi-finish Spi-spi-push Spi-spi-pop Spi-spi-execute Spi-spi-exec Spi-spi-execute-with-args Spi-spi-prepare Spi-spi-prepare-cursor Spi-spi-prepare-params Spi-spi-getargcount Spi-spi-getargtypeid Spi-spi-is-cursor-plan Spi-spi-execute-plan Spi-spi-execute-plan-with-paramlist Spi-spi-execp Spi-spi-cursor-open Spi-spi-cursor-open-with-args Spi-spi-cursor-open-with-paramlist Spi-spi-cursor-find Spi-spi-cursor-fetch Spi-spi-cursor-move Spi-spi-scroll-cursor-fetch Spi-spi-scroll-cursor-move Spi-spi-cursor-close Spi-spi-saveplan 43.2. Interface Support Functions Spi-spi-fname Spi-spi-fnumber Spi-spi-getvalue Spi-spi-getbinval Spi-spi-gettype Spi-spi-gettypeid Spi-spi-getrelname Spi-spi-getnspname 43.3. Memory Management Spi-spi-palloc Spi-realloc Spi-spi-pfree Spi-spi-copytuple Spi-spi-returntuple Spi-spi-modifytuple Spi-spi-freetuple Spi-spi-freetupletable Spi-spi-freeplan 43.4. Visibility of Data Changes 43.5. Examples VI. 參考手冊 I. SQL命令 Sql-abort Sql-alteraggregate Sql-alterconversion Sql-alterdatabase Sql-alterdefaultprivileges Sql-alterdomain Sql-alterforeigndatawrapper Sql-alterfunction Sql-altergroup Sql-alterindex Sql-alterlanguage Sql-alterlargeobject Sql-alteroperator Sql-alteropclass Sql-alteropfamily Sql-alterrole Sql-alterschema Sql-altersequence Sql-alterserver Sql-altertable Sql-altertablespace Sql-altertsconfig Sql-altertsdictionary Sql-altertsparser Sql-altertstemplate Sql-altertrigger Sql-altertype Sql-alteruser Sql-alterusermapping Sql-alterview Sql-analyze Sql-begin Sql-checkpoint Sql-close Sql-cluster Sql-comment Sql-commit Sql-commit-prepared Sql-copy Sql-createaggregate Sql-createcast Sql-createconstraint Sql-createconversion Sql-createdatabase Sql-createdomain Sql-createforeigndatawrapper Sql-createfunction Sql-creategroup Sql-createindex Sql-createlanguage Sql-createoperator Sql-createopclass Sql-createopfamily Sql-createrole Sql-createrule Sql-createschema Sql-createsequence Sql-createserver Sql-createtable Sql-createtableas Sql-createtablespace Sql-createtsconfig Sql-createtsdictionary Sql-createtsparser Sql-createtstemplate Sql-createtrigger Sql-createtype Sql-createuser Sql-createusermapping Sql-createview Sql-deallocate Sql-declare Sql-delete Sql-discard Sql-do Sql-dropaggregate Sql-dropcast Sql-dropconversion Sql-dropdatabase Sql-dropdomain Sql-dropforeigndatawrapper Sql-dropfunction Sql-dropgroup Sql-dropindex Sql-droplanguage Sql-dropoperator Sql-dropopclass Sql-dropopfamily Sql-drop-owned Sql-droprole Sql-droprule Sql-dropschema Sql-dropsequence Sql-dropserver Sql-droptable Sql-droptablespace Sql-droptsconfig Sql-droptsdictionary Sql-droptsparser Sql-droptstemplate Sql-droptrigger Sql-droptype Sql-dropuser Sql-dropusermapping Sql-dropview Sql-end Sql-execute Sql-explain Sql-fetch Sql-grant Sql-insert Sql-listen Sql-load Sql-lock Sql-move Sql-notify Sql-prepare Sql-prepare-transaction Sql-reassign-owned Sql-reindex Sql-release-savepoint Sql-reset Sql-revoke Sql-rollback Sql-rollback-prepared Sql-rollback-to Sql-savepoint Sql-select Sql-selectinto Sql-set Sql-set-constraints Sql-set-role Sql-set-session-authorization Sql-set-transaction Sql-show Sql-start-transaction Sql-truncate Sql-unlisten Sql-update Sql-vacuum Sql-values II. 客戶端應(yīng)用程序 App-clusterdb App-createdb App-createlang App-createuser App-dropdb App-droplang App-dropuser App-ecpg App-pgconfig App-pgdump App-pg-dumpall App-pgrestore App-psql App-reindexdb App-vacuumdb III. PostgreSQL服務(wù)器應(yīng)用程序 App-initdb App-pgcontroldata App-pg-ctl App-pgresetxlog App-postgres App-postmaster VII. 內(nèi)部 章44. PostgreSQL內(nèi)部概覽 44.1. 查詢路徑 44.2. 連接是如何建立起來的 44.3. 分析器階段 44.4. ThePostgreSQL規(guī)則系統(tǒng) 44.5. 規(guī)劃器/優(yōu)化器 44.6. 執(zhí)行器 章45. 系統(tǒng)表 45.1. 概述 45.2. pg_aggregate 45.3. pg_am 45.4. pg_amop 45.5. pg_amproc 45.6. pg_attrdef 45.7. pg_attribute 45.8. pg_authid 45.9. pg_auth_members 45.10. pg_cast 45.11. pg_class 45.12. pg_constraint 45.13. pg_conversion 45.14. pg_database 45.15. pg_db_role_setting 45.16. pg_default_acl 45.17. pg_depend 45.18. pg_description 45.19. pg_enum 45.20. pg_foreign_data_wrapper 45.21. pg_foreign_server 45.22. pg_index 45.23. pg_inherits 45.24. pg_language 45.25. pg_largeobject 45.26. pg_largeobject_metadata 45.27. pg_namespace 45.28. pg_opclass 45.29. pg_operator 45.30. pg_opfamily 45.31. pg_pltemplate 45.32. pg_proc 45.33. pg_rewrite 45.34. pg_shdepend 45.35. pg_shdescription 45.36. pg_statistic 45.37. pg_tablespace 45.38. pg_trigger 45.39. pg_ts_config 45.40. pg_ts_config_map 45.41. pg_ts_dict 45.42. pg_ts_parser 45.43. pg_ts_template 45.44. pg_type 45.45. pg_user_mapping 45.46. System Views 45.47. pg_cursors 45.48. pg_group 45.49. pg_indexes 45.50. pg_locks 45.51. pg_prepared_statements 45.52. pg_prepared_xacts 45.53. pg_roles 45.54. pg_rules 45.55. pg_settings 45.56. pg_shadow 45.57. pg_stats 45.58. pg_tables 45.59. pg_timezone_abbrevs 45.60. pg_timezone_names 45.61. pg_user 45.62. pg_user_mappings 45.63. pg_views 章46. Frontend/Backend Protocol 46.1. Overview 46.2. Message Flow 46.3. Streaming Replication Protocol 46.4. Message Data Types 46.5. Message Formats 46.6. Error and Notice Message Fields 46.7. Summary of Changes since Protocol 2.0 47. PostgreSQL Coding Conventions 47.1. Formatting 47.2. Reporting Errors Within the Server 47.3. Error Message Style Guide 章48. Native Language Support 48.1. For the Translator 48.2. For the Programmer 章49. Writing A Procedural Language Handler 章50. Genetic Query Optimizer 50.1. Query Handling as a Complex Optimization Problem 50.2. Genetic Algorithms 50.3. Genetic Query Optimization (GEQO) in PostgreSQL 50.4. Further Reading 章51. 索引訪問方法接口定義 51.1. 索引的系統(tǒng)表記錄 51.2. 索引訪問方法函數(shù) 51.3. 索引掃描 51.4. 索引鎖的考量 51.5. 索引唯一性檢查 51.6. 索引開銷估計函數(shù) 章52. GiST Indexes 52.1. Introduction 52.2. Extensibility 52.3. Implementation 52.4. Examples 52.5. Crash Recovery 章53. GIN Indexes 53.1. Introduction 53.2. Extensibility 53.3. Implementation 53.4. GIN tips and tricks 53.5. Limitations 53.6. Examples 章54. 數(shù)據(jù)庫物理存儲 54.1. 數(shù)據(jù)庫文件布局 54.2. TOAST 54.3. 自由空間映射 54.4. 可見映射 54.5. 數(shù)據(jù)庫分頁文件 章55. BKI后端接口 55.1. BKI 文件格式 55.2. BKI命令 55.3. 系統(tǒng)初始化的BKI文件的結(jié)構(gòu) 55.4. 例子 章56. 規(guī)劃器如何使用統(tǒng)計信息 56.1. 行預(yù)期的例子 VIII. 附錄 A. PostgreSQL錯誤代碼 B. 日期/時間支持 B.1. 日期/時間輸入解析 B.2. 日期/時間關(guān)鍵字 B.3. 日期/時間配置文件 B.4. 日期單位的歷史 C. SQL關(guān)鍵字 D. SQL Conformance D.1. Supported Features D.2. Unsupported Features E. Release Notes Release-0-01 Release-0-02 Release-0-03 Release-1-0 Release-1-01 Release-1-02 Release-1-09 Release-6-0 Release-6-1 Release-6-1-1 Release-6-2 Release-6-2-1 Release-6-3 Release-6-3-1 Release-6-3-2 Release-6-4 Release-6-4-1 Release-6-4-2 Release-6-5 Release-6-5-1 Release-6-5-2 Release-6-5-3 Release-7-0 Release-7-0-1 Release-7-0-2 Release-7-0-3 Release-7-1 Release-7-1-1 Release-7-1-2 Release-7-1-3 Release-7-2 Release-7-2-1 Release-7-2-2 Release-7-2-3 Release-7-2-4 Release-7-2-5 Release-7-2-6 Release-7-2-7 Release-7-2-8 Release-7-3 Release-7-3-1 Release-7-3-10 Release-7-3-11 Release-7-3-12 Release-7-3-13 Release-7-3-14 Release-7-3-15 Release-7-3-16 Release-7-3-17 Release-7-3-18 Release-7-3-19 Release-7-3-2 Release-7-3-20 Release-7-3-21 Release-7-3-3 Release-7-3-4 Release-7-3-5 Release-7-3-6 Release-7-3-7 Release-7-3-8 Release-7-3-9 Release-7-4 Release-7-4-1 Release-7-4-10 Release-7-4-11 Release-7-4-12 Release-7-4-13 Release-7-4-14 Release-7-4-15 Release-7-4-16 Release-7-4-17 Release-7-4-18 Release-7-4-19 Release-7-4-2 Release-7-4-20 Release-7-4-21 Release-7-4-22 Release-7-4-23 Release-7-4-24 Release-7-4-25 Release-7-4-26 Release-7-4-27 Release-7-4-28 Release-7-4-29 Release-7-4-3 Release-7-4-30 Release-7-4-4 Release-7-4-5 Release-7-4-6 Release-7-4-7 Release-7-4-8 Release-7-4-9 Release-8-0 Release-8-0-1 Release-8-0-10 Release-8-0-11 Release-8-0-12 Release-8-0-13 Release-8-0-14 Release-8-0-15 Release-8-0-16 Release-8-0-17 Release-8-0-18 Release-8-0-19 Release-8-0-2 Release-8-0-20 Release-8-0-21 Release-8-0-22 Release-8-0-23 Release-8-0-24 Release-8-0-25 Release-8-0-26 Release-8-0-3 Release-8-0-4 Release-8-0-5 Release-8-0-6 Release-8-0-7 Release-8-0-8 Release-8-0-9 Release-8-1 Release-8-1-1 Release-8-1-10 Release-8-1-11 Release-8-1-12 Release-8-1-13 Release-8-1-14 Release-8-1-15 Release-8-1-16 Release-8-1-17 Release-8-1-18 Release-8-1-19 Release-8-1-2 Release-8-1-20 Release-8-1-21 Release-8-1-22 Release-8-1-23 Release-8-1-3 Release-8-1-4 Release-8-1-5 Release-8-1-6 Release-8-1-7 Release-8-1-8 Release-8-1-9 Release-8-2 Release-8-2-1 Release-8-2-10 Release-8-2-11 Release-8-2-12 Release-8-2-13 Release-8-2-14 Release-8-2-15 Release-8-2-16 Release-8-2-17 Release-8-2-18 Release-8-2-19 Release-8-2-2 Release-8-2-20 Release-8-2-21 Release-8-2-3 Release-8-2-4 Release-8-2-5 Release-8-2-6 Release-8-2-7 Release-8-2-8 Release-8-2-9 Release-8-3 Release-8-3-1 Release-8-3-10 Release-8-3-11 Release-8-3-12 Release-8-3-13 Release-8-3-14 Release-8-3-15 Release-8-3-2 Release-8-3-3 Release-8-3-4 Release-8-3-5 Release-8-3-6 Release-8-3-7 Release-8-3-8 Release-8-3-9 Release-8-4 Release-8-4-1 Release-8-4-2 Release-8-4-3 Release-8-4-4 Release-8-4-5 Release-8-4-6 Release-8-4-7 Release-8-4-8 Release-9-0 Release-9-0-1 Release-9-0-2 Release-9-0-3 Release-9-0-4 F. 額外提供的模塊 F.1. adminpack F.2. auto_explain F.3. btree_gin F.4. btree_gist F.5. chkpass F.6. citext F.7. cube F.8. dblink Contrib-dblink-connect Contrib-dblink-connect-u Contrib-dblink-disconnect Contrib-dblink Contrib-dblink-exec Contrib-dblink-open Contrib-dblink-fetch Contrib-dblink-close Contrib-dblink-get-connections Contrib-dblink-error-message Contrib-dblink-send-query Contrib-dblink-is-busy Contrib-dblink-get-notify Contrib-dblink-get-result Contrib-dblink-cancel-query Contrib-dblink-get-pkey Contrib-dblink-build-sql-insert Contrib-dblink-build-sql-delete Contrib-dblink-build-sql-update F.9. dict_int F.10. dict_xsyn F.11. earthdistance F.12. fuzzystrmatch F.13. hstore F.14. intagg F.15. intarray F.16. isn F.17. lo F.18. ltree F.19. oid2name F.20. pageinspect F.21. passwordcheck F.22. pg_archivecleanup F.23. pgbench F.24. pg_buffercache F.25. pgcrypto F.26. pg_freespacemap F.27. pgrowlocks F.28. pg_standby F.29. pg_stat_statements F.30. pgstattuple F.31. pg_trgm F.32. pg_upgrade F.33. seg F.34. spi F.35. sslinfo F.36. tablefunc F.37. test_parser F.38. tsearch2 F.39. unaccent F.40. uuid-ossp F.41. vacuumlo F.42. xml2 G. 外部項目 G.1. 客戶端接口 G.2. 過程語言 G.3. 擴展 H. The Source Code Repository H.1. Getting The Source Via Git I. 文檔 I.1. DocBook I.2. 工具集 I.3. 制作文檔 I.4. 文檔寫作 I.5. 風(fēng)格指導(dǎo) J. 首字母縮略詞 參考書目 Bookindex Index
文字

CREATE TABLE

Name

CREATE TABLE?--?定義一個新表

Synopsis

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name ( [
  { column_name data_type [ DEFAULT default_expr ] [ column_constraint [ ... ] ]
    | table_constraint
    | LIKE parent_table [ like_option ... ] }
    [, ... ]
] )
[ INHERITS ( parent_table [, ... ] ) ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace ]

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } ] TABLE table_name
    OF type_name [ (
  { column_name WITH OPTIONS [ DEFAULT default_expr ] [ column_constraint [ ... ] ]
    | table_constraint }
    [, ... ]
) ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace ]

這里的column_constraint是:

[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  CHECK ( expression ) |
  UNIQUE index_parameters |
  PRIMARY KEY index_parameters |
  REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
    [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

table_constraint是:

[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
  UNIQUE ( column_name [, ... ] ) index_parameters |
  PRIMARY KEY ( column_name [, ... ] ) index_parameters |
  EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
  FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] }
[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]

like_option是:

{ INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | ALL }

index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:

[ WITH ( storage_parameter [= value] [, ... ] ) ]
[ USING INDEX TABLESPACE tablespace ]

exclude_element in an EXCLUDE constraint is:

{ column | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]

描述

CREATE TABLE在當(dāng)前數(shù)據(jù)庫創(chuàng)建一個新的空白表。 該表將由發(fā)出此命令的用戶所擁有。

如果給出了模式名(比如CREATE TABLE myschema.mytable ...), 那么在指定的模式中創(chuàng)建表,否則在當(dāng)前模式中創(chuàng)建。臨時表存在于一個特殊的模式里, 因此創(chuàng)建臨時表的時候不能指定模式名。表名字必需在同一模式中的其它表、序列、索引、 視圖名字中唯一。

CREATE TABLE還自動創(chuàng)建一個與該表的行對應(yīng)的復(fù)合數(shù)據(jù)類型。因此, 表不能和同模式中的現(xiàn)有數(shù)據(jù)類型同名。

可選的約束子句聲明約束,新行或者更新的行必須滿足這些約束才能成功插入或更新。 約束是一個SQL對象,它以多種方式協(xié)助在表上定義有效數(shù)值的集合。

定義約束有兩種方法:表約束和列約束。列約束是作為一個列定義的一部分定義的。 而表約束并不和某個列綁在一起,它可以作用于多個列上。每個列約束也可以寫成表約束; 如果某個約束只影響一個列,那么列約束只是符號上的簡潔方式而已。

參數(shù)

TEMPORARY or TEMP

創(chuàng)建為臨時表。臨時表在會話結(jié)束或(可選)當(dāng)前事務(wù)的結(jié)尾(參閱下面的ON COMMIT)自動刪除。 除非用模式修飾的名字引用,否則現(xiàn)有的同名永久表在臨時表存在期間,在本會話過程中是不可見的。 任何在臨時表上創(chuàng)建的索引也都會被自動刪除。

autovacuum daemon不能訪問并且因此不能 清理或分析臨時表。為此,適當(dāng)?shù)那謇砗头治霾僮鲬?yīng)該通過會話SQL命令來執(zhí)行。 例如,若一個臨時表將要在復(fù)雜查詢中使用,那么添加后在臨時表中運行ANALYZE 是明智的。

可以選擇在TEMPORARYTEMP前面放上 GLOBALLOCAL。 不過這對PostgreSQL來說沒有任何區(qū)別,可以參閱 兼容性。

table_name

要創(chuàng)建的表的名字(可以用模式修飾)

OF type_name

Creates a typed table, which takes its structure from the specified composite type (name optionally schema-qualified). A typed table is tied to its type; for example the table will be dropped if the type is dropped (with DROP TYPE ... CASCADE). 創(chuàng)建一個typed table,可以從指定的復(fù)合類型 中獲取其結(jié)構(gòu)(名稱可以有模式修飾)。一個類型化的表與其類型相關(guān); 例如表會在類型刪除時被刪除(有DROP TYPE ... CASCADE0)。

When a typed table is created, then the data types of the columns are determined by the underlying composite type and are not specified by the CREATE TABLE command. But the CREATE TABLE command can add defaults and constraints to the table and can specify storage parameters. 當(dāng)一個typed表創(chuàng)建后,列的數(shù)據(jù)類型由根本的組成類型決定而且 不是由CREATE TABLE命令聲明的。但是 CREATE TABLE命令可以添加默認(rèn)值和約束到 表中,并能聲明存儲參數(shù)。

column_name

在新表中要創(chuàng)建的字段名字

data_type

該字段的數(shù)據(jù)類型。它可以包括數(shù)組說明符。 有關(guān)PostgreSQL支持的數(shù)據(jù)類型的更多信息, 請參考Chapter 8。

DEFAULT default_expr

DEFAULT子句給字段指定缺省值。該數(shù)值可以是任何不含 變量的表達(dá)式(不允許使用子查詢和對本表中的其它字段的交叉引用)。 缺省表達(dá)式的數(shù)據(jù)類型必須和字段類型匹配。

缺省表達(dá)式將被用于任何未聲明該字段數(shù)值的插入操作。如果沒有 指定缺省值則缺省值為NULL 。

INHERITS ( parent_table [, ... ] )

可選的INHERITS子句聲明一系列的表,這個新表自動從 這一系列表中繼承所有字段。

使用INHERITS將在子表和其父表之間創(chuàng)建一個永久的關(guān)系, 對父表結(jié)構(gòu)的修改通常也會傳播到子表。缺省時,掃描父表的時候也會 掃描子表。

如果在多個父表中存在同名字段,那么就會報告一個錯誤, 除非這些字段的數(shù)據(jù)類型在每個父表里都是匹配的。如果沒有沖突, 那么重復(fù)的字段在新表中融合成一個字段。如果列出的新表字段名和繼承字段同名, 那么它的數(shù)據(jù)類型也必須和繼承字段匹配,并且這些字段定義會融合成一個。 如果新表為該字段明確聲明了缺省值,那么此缺省值將覆蓋任何繼承字段的缺省值。 否則,該字段的所有父字段缺省值都必須相同,否則就會報錯。

CHECK約束基本上以與列相同的方式合并。若多重父表和/或新表 定義包括同名的CHECK約束,那么這些約束必須都有相同的檢查 表達(dá)式,或者將要報告的錯誤。有相同名稱和表達(dá)式的約束將會合并到一個副 本中。注意:在新表中的一個未命名的CHECK約束將不會被合并, 因為一個唯一的名稱總會被為此選擇。

STORAGE設(shè)置也可以從父表中被復(fù)制。

LIKE parent_table [ like_option ... ]

LIKE子句聲明一個表, 新表自動從這個表里面繼承所有字段名及其數(shù)據(jù)類型和非空約束。

INHERITS不同,新表與原來的表之間在創(chuàng)建動作完畢之后是完全無關(guān)的。 在源表做的任何修改都不會傳播到新表中, 并且也不可能在掃描源表的時候包含新表的數(shù)據(jù)。

字段缺省表達(dá)式只有在聲明了INCLUDING DEFAULTS之后才會包含進(jìn)來。 缺省是不包含缺省表達(dá)式的,結(jié)果是新表中所有字段的缺省值都是NULL 。

非空約束將總是復(fù)制到新表中,CHECK約束則僅在指定了INCLUDING CONSTRAINTS的時候才復(fù)制, 而其他類型的約束則永遠(yuǎn)也不會被復(fù)制。此規(guī)則同時適用于表約束和列約束。

初始表上的任何索引都不能在新表上創(chuàng)建,除非INCLUDING INDEXES 子句被聲明了。

INCLUDING STORAGE被聲明,復(fù)制的列定義的 STORAGE設(shè)置將會被復(fù)制。默認(rèn)響應(yīng)是排除 STORAGE設(shè)置,導(dǎo)致新表中的復(fù)制列有特定類型的默認(rèn)設(shè)置。 要獲取更多關(guān)于STORAGE設(shè)置的細(xì)膩,請參閱 Section 54.2。

INCLUDING COMMENTS被聲明,復(fù)制列的注釋、 約束以及索引將會僅僅被復(fù)制。默認(rèn)響應(yīng)是排除注釋,導(dǎo)致新表中的 復(fù)制列和約束沒有注釋。

INCLUDING ALLINCLUDING DEFAULTS INCLUDING CONSTRAINTS INCLUDING NDEXES INCLUDING STORAGE INCLUDING COMMENTS的縮寫形式.

也要注意:不同于INHERITS,LIKE 復(fù)制的列和索引不會與相近命名的列和約束合并。若相同的名稱被明確 指定或者在另一個LIKE子句中,則會報錯。

INHERITS不同, 列和被LIKE復(fù)制的約束并不使用相同的名字進(jìn)行融合。 如果明確的指定了相同的名字或者在另外一個 LIKE子句中,那么將會報錯。

CONSTRAINT constraint_name

可選的列約束或表約束的名字。如果約束本身是非法的,那么其名字將會出現(xiàn)在錯誤信息中, 因此像col must be positive這樣的名字可以表達(dá)有用的約束信息。 如果約束名中含有空格則必須用雙引號界定。如果沒有指定約束名, 那么系統(tǒng)將會自動生成一個名字。

NOT NULL

字段不允許包含NULL值

NULL

字段允許包含NULL值,這是缺省。

這個子句的存在只是為和那些非標(biāo)準(zhǔn)SQL數(shù)據(jù)庫兼容。不建議在新應(yīng)用中使用它。

CHECK ( expression )

CHECK子句聲明一個產(chǎn)生布爾結(jié)果的表達(dá)式,新的或者更新的 行為了成功必須滿足插入或者更新操作。評估為TRUE或者UNKNOWN的表達(dá)式 成功。插入或者更新操作的任何行應(yīng)該產(chǎn)生一個錯誤異常提出的FALSE結(jié)果 并且插入和更新吧改變數(shù)據(jù)庫。一個聲明為列約束的檢查約束應(yīng)該參照 列值唯一,盡管出現(xiàn)在一個表約束中的表達(dá)式可以參照多重表。

當(dāng)前,CHECK表達(dá)式既不包括子查詢,也不涉及變量 而不是當(dāng)前行的列值。

UNIQUE (column constraint)
UNIQUE ( column_name [, ... ] ) (table constraint)

UNIQUE約束表示表里的一個或多個字段的組合必須在全表范圍內(nèi)唯一。 唯一約束的行為和列約束一樣,只不過多了跨多行的能力。

對于唯一約束而言,NULL被認(rèn)為是互不相等的。

每個唯一約束都必須給其使用的字段集合賦予一個與其它唯一約束 都不同的名字,并且也不能和主鍵約束的名字相同,否則就被認(rèn)為 是同樣的約束寫了兩次。

PRIMARY KEY (column constraint)
PRIMARY KEY ( column_name [, ... ] ) (table constraint)

主鍵約束表明表中的一個或者一些字段只能包含唯一(不重復(fù))的非NULL值。 從技術(shù)上講,PRIMARY KEY只是UNIQUENOT NULL的組合, 不過把一套字段標(biāo)識為主鍵同時也體現(xiàn)了模式設(shè)計的元數(shù)據(jù), 因為主鍵意味著可以拿這套字段用做行的唯一標(biāo)識。

一個表只能聲明一個主鍵,不管是作為字段約束還是表約束。

主鍵約束使用的字段集合應(yīng)該與其它唯一約束都不同。

EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ]

EXCLUDE子句定義一個排斥約束,這保證了若任意兩行在 指定列或者使用指定操作符的表達(dá)式比較時,并非全部比較都會返回 TRUE。若所有指定操作符都測試相等性,這就等價于 UNIQUE約束,盡管一個普通的唯一性約束會更快一些。 然而,排除約束可以聲明比簡單的相等更常規(guī)的約束。例如,您可以 通過&&操作符聲明一個約束使得表中的任意兩 行都沒有重疊的內(nèi)容(參閱Section 8.8)。

排除約束通過使用索引來執(zhí)行,因此每個聲明的操作符必須與恰當(dāng)?shù)? 操作符類聯(lián)系(參閱Section 11.9)獲取索引 訪問方法index_method。操作符必須是可交換的。 每個exclude_element 可以選擇制定一個操作符類和/或排序選項;這在 CREATE INDEX中有全面的描述。

訪問方法必須支持amgettuple(參閱Chapter 51); 目前這意味著GIN不能被使用。盡管是允許的,但使用有排斥約束 的B-tree或hash索引的幾乎沒有任何意義,因為這能做的一個普通唯一性約束就 可以做的很好了。所以訪問方法總會是GiST

predicate允許您在表的一個子集中聲明一個 排除約束;這在內(nèi)部創(chuàng)建了一個部分索引。請注意:為此必須用圓括號括起來。

REFERENCES reftable [ ( refcolumn ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ] (column constraint)
FOREIGN KEY ( column [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ] [ MATCH matchtype ] [ ON DELETE action ] [ ON UPDATE action ] (table constraint)

這些子句聲明一個外鍵約束,外鍵約束要求新表中一列或多列組成的組 應(yīng)該只包含/匹配被參考的表中對應(yīng)字段中的值。如果省略refcolumn,則使用 reftable的主鍵。 被參考字段必須是被參考表中的非延期唯一字段或者主鍵。 請注意,不能在臨時表和永久表之間定義外鍵約束。

向參考字段插入的數(shù)值將使用給出的匹配類型與被參考表中被參考列的 數(shù)值進(jìn)行匹配。有三種匹配類型:MATCH FULL,MATCH PARTIALMATCH SIMPLE(缺省)。MATCH FULL不允許一個多字段 外鍵的字段為NULL ,除非所有外鍵字段都為NULL。 MATCH SIMPLE允許某些外鍵字段為NULL而外鍵的其它部 分不是NULL。MATCH PARTIAL目前尚未實現(xiàn)。

另外,當(dāng)被參考字段中的數(shù)據(jù)改變的時候,那么將對本表的字段中的數(shù)據(jù)執(zhí)行某種操作。 ON DELETE子句聲明當(dāng)被參考表中的被參考行被刪除的時候要執(zhí)行的操作。類似的, ON UPDATE子句聲明被參考表中被參考字段更新為新值的時候要執(zhí)行的動作。 如果該行被更新,但被參考的字段實際上沒有變化,那么就不會有任何動作。 除了NO ACTION檢查之外的其他參考動作都不能推遲,即使該約束聲明為可推遲也是如此。 下面是每個子句的可能動作:

NO ACTION

生成一個錯誤,表明刪除或更新將產(chǎn)生一個違反外鍵約束的動作。 如果該約束是可推遲的,并且如果還存在任何引用行, 那么這個錯誤將在檢查約束的時候生成。這是缺省動作。

RESTRICT

生成一個表明刪除或更新將導(dǎo)致違反外鍵約束的錯誤。 和NO ACTION一樣,只是動作不可推遲。

CASCADE

刪除任何引用了被刪除行的行,或者分別把引用行的字段值更新 為被參考字段的新數(shù)值。

SET NULL

把引用行設(shè)置為NULL。

SET DEFAULT

把引用字段設(shè)置為它們的缺省值。

如果被參考字段經(jīng)常更新,那么給外鍵字段增加一個索引可能是合適的, 這樣與外鍵字段相關(guān)聯(lián)的引用動作可以更有效地執(zhí)行。

DEFERRABLE
NOT DEFERRABLE

這兩個關(guān)鍵字設(shè)置該約束是否可推遲。一個不可推遲的約束將在每條命令之后馬上檢查。 可推遲約束可以推遲到事務(wù)結(jié)尾使用SET CONSTRAINTS命令檢查。 缺省是NOT DEFERRABLE。 目前只有UNIQUE,PRIMARY KEY, EXCLUDEREFERENCES(外鍵)約束接受這個子句。 NOT NULLCHECK約束類型都是不可推遲的。

INITIALLY IMMEDIATE
INITIALLY DEFERRED

如果約束是可推遲的,那么這個子句聲明檢查約束的缺省時間。 如果約束是INITIALLY IMMEDIATE(缺省),那么每條語句之后就立即檢查它。 如果約束是INITIALLY DEFERRED,那么只有在事務(wù)結(jié)尾才檢查它。 約束檢查的時間可以用SET CONSTRAINTS 命令修改。

WITH ( storage_parameter [= value] [, ... ] )

這個子句為表或指定一個可選的存儲參數(shù),參見存儲參數(shù)獲取更多信息。 用于表的WITH子句還可以包含OIDS=TRUE或單獨的OIDS來指定給新表中的每一行都分配一個OID(對象標(biāo)識符), 或者OIDS=FALSE表示不分配OID 。 如果沒有指定OIDS默認(rèn)行為取決于default_with_oids配置參數(shù)。 如果新表是從有OID的表繼承而來, 那么即使明確指定OIDS=FALSE也將強制按照OIDS=TRUE 執(zhí)行。

如果明確或隱含的指定了OIDS=FALSE,新表將不會存儲OID,也不會為行分配OID。 這將減小OID的開銷并因此延緩了32-bit OID計數(shù)器的循環(huán)。 因為一旦計數(shù)器發(fā)生循環(huán)之后OID將不能被視為唯一,這將大大降低OID的實用性。 另外,排除了OID的表也為每條記錄減小了4字節(jié)的存儲空間,從而可以稍微提升 一些性能。

可以使用ALTER TABLE從已有的表中刪除OID列。

WITH OIDS
WITHOUT OIDS

這些是被廢棄的、分別等價于WITH (OIDS)WITH (OIDS=FALSE)的語法。 WITH ( ... ) syntax;見上文。

ON COMMIT

使用ON COMMIT控制臨時表在事務(wù)塊結(jié)尾的行為。 這三個選項是:

PRESERVE ROWS

在事務(wù)結(jié)尾不采取任何特別的動作,這是缺省。

DELETE ROWS

刪除臨時表中的所有行。本質(zhì)上是在每次提交事務(wù)后自動執(zhí)行一個TRUNCATE命令。

DROP

刪除臨時表

TABLESPACE tablespace

tablespace是要創(chuàng)建新表的 表空間的名稱,若未聲明,則按照default_tablespace, 或者若表是臨時的則按照temp_tablespaces。

指定新表將要在tablespace 表空間內(nèi)創(chuàng)建。如果沒有聲明, 將查詢default_tablespace ,如果表為空,那么將使用 temp_tablespaces。

USING INDEX TABLESPACE tablespace

該子句允許選擇表空間的,在表空間中索引與UNIQUE, PRIMARY KEY,或者即將創(chuàng)建的EXCLUDE約束相關(guān)。若不聲明, 則按照default_tablespace,或者若表是臨時的就按照 temp_tablespaces。

這個子句允許選擇與一個UNIQUE,PRIMARY KEY約束相關(guān)的索引創(chuàng)建時所在的表空間?;蛘?tt class="LITERAL">EXCLUDE限制將被創(chuàng)建。 如果沒有聲明,將查詢default_tablespace, 如果表為空,那么將使用temp_tablespaces。

存儲參數(shù)

WITH子句可以為表聲明storage parameters,并且為與 UNIQUE,PRIMARY KEY,或者EXCLUDE 相關(guān)的索引。索引的存儲參數(shù)記錄在CREATE INDEX中。表目前可 用的存儲參數(shù)在下面列出。對于每個擦安琥,除非指出,有一個有同名前綴 toast.的額外參數(shù),這可以用于控制表的二級TOAST 表的性能,若有(參閱Section 54.2獲取更多關(guān)于TOAST的信息)。 請注意:TOAST表繼承來自其父表的autovacuum_*值,若沒有設(shè)置 toast.autovacuum_*設(shè)置。

fillfactor (integer)

一個表的填充因子(fillfactor)是一個介于10和100之間的百分?jǐn)?shù)。100(完全填充)是默認(rèn)值。 如果指定了較小的填充因子,INSERT操作僅按照填充因子指定的百分率填充表頁。 每個頁上的剩余空間將用于在該頁上更新行, 這就使得UPDATE有機會在同一頁上放置同一條記錄的新版本, 這比把新版本放置在其它頁上更有效。對于一個從不更新的表將填充因子設(shè)為100是最佳選擇, 但是對于頻繁更新的表,較小的填充因子則更加有效。此參數(shù)不能為TOAST表。

autovacuum_enabled, toast.autovacuum_enabled (boolean)

開啟或者關(guān)閉在指定表上的autovacuum守護進(jìn)程。若為真,autovacuum守護進(jìn)程 將會開始一個在特定表上的VACUUM操作,當(dāng)更新或者刪除元組的數(shù)量 超過關(guān)系中現(xiàn)有元組的估計數(shù)目的autovacuum_vacuum_thresholdautovacuum_vacuum_scale_factor倍。類似的,當(dāng)插入、更新或者 刪除的元組超過關(guān)系中現(xiàn)有元組的估計數(shù)目autovacuum_analyze_thresholdautovacuum_analyze_scale_factor倍,則初始化一個 ANALYZE操作。若錯誤,該表將不會被自動清理,除了阻止 事務(wù)Id環(huán)繞式處理。參閱Section 23.1.4 獲取更多關(guān)于阻止環(huán)繞式處理的信息。觀察會發(fā)現(xiàn)該變量從autovacuum設(shè)置中繼承其值。

autovacuum_vacuum_threshold, toast.autovacuum_vacuum_threshold (integer)

初始換一個特定表上的VACUUM操作符之前, 更新或者刪除元組的最小值。

autovacuum_vacuum_scale_factor, toast.autovacuum_vacuum_scale_factor (float4)

添加到autovacuum_vacuum_thresholdreltuples乘法器。

autovacuum_analyze_threshold (integer)

ANALYZE operation on a particular table. 在特定表中初始化一個ANALYZE操作之前,插入、更新 或者刪除元組的最小值。

autovacuum_analyze_scale_factor (float4)

reltuples的乘法器要添加到 autovacuum_analyze_threshold。

autovacuum_vacuum_cost_delay, toast.autovacuum_vacuum_cost_delay (integer)

Custom autovacuum_vacuum_cost_delay parameter.

autovacuum_vacuum_cost_limit, toast.autovacuum_vacuum_cost_limit (integer)

Custom autovacuum_vacuum_cost_limit parameter.

autovacuum_freeze_min_age, toast.autovacuum_freeze_min_age (integer)

自定義vacuum_freeze_min_age參數(shù)。 請注意autovacuum將會忽略嘗試將一個每個表的 autovacuum_freeze_min_age設(shè)置的大于系統(tǒng)范圍的 autovacuum_freeze_max_age設(shè)置的一半。

autovacuum_freeze_max_age, toast.autovacuum_freeze_max_age (integer)

自定義autovacuum_freeze_max_age參數(shù), 請注意:autovacuum將會忽略企圖將每表 autovacuum_freeze_max_age設(shè)置得大于系統(tǒng)范圍的設(shè)置 (它只能設(shè)置的更?。U堊⒁猓寒?dāng)您能把autovacuum_freeze_max_age 設(shè)置的非常小時,或者甚至為0,這通常是不明智的,盡管這回強制頻繁的 自動清理。

autovacuum_freeze_table_age, toast.autovacuum_freeze_table_age (integer)

自定義vacuum_freeze_table_age參數(shù)。

注意

不建議在新應(yīng)用中使用OID,可能情況下, 更好的選擇是使用一個SERIAL或者其它序列發(fā)生器做表的主鍵。 如果一個應(yīng)用使用了OID標(biāo)識表中的特定行,那么建議在該表的oid字段上創(chuàng)建一個唯一約束, 以確保該表的OID即使在計數(shù)器循環(huán)之后也是唯一的。 如果你需要一個整個數(shù)據(jù)庫范圍的唯一標(biāo)識,那么就要避免假設(shè)OID是跨表唯一的, 你可以用tableoid和行OID的組合來實現(xiàn)這個目的。

Tip: 對那些沒有主鍵的表,不建議使用OIDS=FALSE,因為如果既沒有OID又沒有唯一數(shù)據(jù)字段, 那么就很難標(biāo)識特定的行。

PostgreSQL自動為每個唯一約束和主鍵約束創(chuàng)建一個索引以確保其唯一性。 因此,不必為主鍵字段明確的創(chuàng)建索引。 參閱 CREATE INDEX獲取更多信息。

唯一約束和主鍵在目前的實現(xiàn)里是不能繼承的。如果把繼承和唯一約束組合在一起會導(dǎo)致無法運轉(zhuǎn)。

一個表不能超過1600個字段。實際的限制比這個更低,因為還有元組長度限制。

例子

創(chuàng)建filmsdistributors表:

CREATE TABLE films (
    code        char(5) CONSTRAINT firstkey PRIMARY KEY,
    title       varchar(40) NOT NULL,
    did         integer NOT NULL,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute
);

CREATE TABLE distributors (
     did    integer PRIMARY KEY DEFAULT nextval('serial'),
     name   varchar(40) NOT NULL CHECK (name <> '')
);

創(chuàng)建一個帶有2維數(shù)組的表:

CREATE TABLE array_int (
    vector  int[][]
);

為表films定義一個唯一表約束。唯一表約束可以在表的一個或多個字段上定義:

CREATE TABLE films (
    code        char(5),
    title       varchar(40),
    did         integer,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute,
    CONSTRAINT production UNIQUE(date_prod)
);

定義一個檢查列約束:

CREATE TABLE distributors (
    did     integer CHECK (did > 100),
    name    varchar(40)
);

定義一個檢查表約束:

CREATE TABLE distributors (
    did     integer,
    name    varchar(40)
    CONSTRAINT con1 CHECK (did > 100 AND name <> '')
);

為表films定義一個主鍵表約束。

CREATE TABLE films (
    code        char(5),
    title       varchar(40),
    did         integer,
    date_prod   date,
    kind        varchar(10),
    len         interval hour to minute,
    CONSTRAINT code_title PRIMARY KEY(code,title)
);

為表distributors定義一個主鍵約束。 下面兩個例子是等效的,第一個例子使用了表約束語法,第二個使用了列約束語法。

CREATE TABLE distributors (
    did     integer,
    name    varchar(40),
    PRIMARY KEY(did)
);

CREATE TABLE distributors (
    did     integer PRIMARY KEY,
    name    varchar(40)
);

下面這個例子給字段name賦予了一個文本常量缺省值, 并且將字段did的缺省值安排為通過選擇序列對象的下一個值生成。 modtime的缺省值將是該行插入的時間戳。

CREATE TABLE distributors (
    name      varchar(40) DEFAULT 'Luso Films',
    did       integer DEFAULT nextval('distributors_serial'),
    modtime   timestamp DEFAULT current_timestamp
);

在表distributors上定義兩個NOT NULL列約束, 其中之一明確給出了名字:

CREATE TABLE distributors (
    did     integer CONSTRAINT no_null NOT NULL,
    name    varchar(40) NOT NULL
);

name字段定義一個唯一約束:

CREATE TABLE distributors (
    did     integer,
    name    varchar(40) UNIQUE
);

上面的和下面這樣作為一個表約束聲明是一樣的:

CREATE TABLE distributors (
    did     integer,
    name    varchar(40),
    UNIQUE(name)
);

創(chuàng)建同樣的表,并為表以及唯一索引指定70%率:

CREATE TABLE distributors (
    did     integer,
    name    varchar(40),
    UNIQUE(name) WITH (fillfactor=70)
)
WITH (fillfactor=70);

創(chuàng)建有排斥約束的表circles,排斥約束可以阻止 任意兩個范圍重合:

CREATE TABLE circles (
    c circle,
    EXCLUDE USING gist (c WITH &&)
);

在表空間diskvol1里創(chuàng)建cinemas表:

CREATE TABLE cinemas (
        id serial,
        name text,
        location text
) TABLESPACE diskvol1;

創(chuàng)建一個復(fù)合類型和一個類型化表:

CREATE TYPE employee_type AS (name text, salary numeric);

CREATE TABLE employees OF employee_type (
    PRIMARY KEY (name),
    salary WITH OPTIONS DEFAULT 1000
);

兼容性

CREATE TABLE遵循SQL標(biāo)準(zhǔn), 一些例外情況在下面列出。

臨時表

盡管CREATE TEMPORARY TABLE的語法和SQL標(biāo)準(zhǔn)的類似, 但是效果是不同的。在標(biāo)準(zhǔn)里,臨時表只是定義一次并且從空內(nèi)容開始自動存在于任何需要它們的會話中。 PostgreSQL要求每個會話為它們使用的每個臨時表發(fā)出它們自己的 CREATE TEMPORARY TABLE 命令。 這樣就允許不同的會話將相同的臨時表名字用于不同的目的, 而標(biāo)準(zhǔn)的實現(xiàn)方法則把一個臨時表名字約束為具有相同的表結(jié)構(gòu)。

標(biāo)準(zhǔn)定義的臨時表的行為被廣泛地忽略了。PostgreSQL在這方面上的行為類似于許多其它SQL數(shù)據(jù)庫系統(tǒng)。

標(biāo)準(zhǔn)中的全局和局部臨時表之間的區(qū)別在PostgreSQL里不存在, 因為這種區(qū)別取決于模塊的概念,而PostgreSQL沒有這個概念。 出于兼容考慮,PostgreSQL將接受臨時表聲明中的GLOBALLOCAL關(guān)鍵字, 但是他們沒有任何作用。

臨時表的ON COMMIT子句也類似于SQL標(biāo)準(zhǔn),但是有些區(qū)別。 如果忽略了ON COMMIT子句,SQL標(biāo)準(zhǔn)聲明缺省的行為是ON COMMIT DELETE ROWS。 但是PostgreSQL里的缺省行為是ON COMMIT PRESERVE ROWS。 在SQL標(biāo)準(zhǔn)里不存在ON COMMIT DROP選項。

非遞延惟一性約束

當(dāng)一個UNIQUE或者PRIMARY KEY約束未延期, PostgreSQL每當(dāng)已插入或者更改列時就會 檢查唯一性。SQL標(biāo)準(zhǔn)要求僅在語句末強制唯一性;但這有時會有變化,例如 一個單獨的命令更新多個關(guān)鍵值的情況。要獲得遵循標(biāo)準(zhǔn)的行為,須聲明 約束為DEFERRABLE但不延期(例如:INITIALLY IMMEDIATE)。請注意,這明顯慢于直接唯一性檢查。

列檢查約束

SQL標(biāo)準(zhǔn)說CHECK列約束只能引用他們作用的字段; 只有CHECK表約束才能引用多個字段。 PostgreSQL并不強制這個限制;它把字段和表約束看作相同的東西。

EXCLUDE Constraint

EXCLUDE約束類型是一個 PostgreSQL擴展。

NULL "約束"

NULL"約束"(實際上不是約束)是PostgreSQL對SQL標(biāo)準(zhǔn)的擴展, 包括它是為了和其它一些數(shù)據(jù)庫系統(tǒng)兼容以及為了和NOT NULL約束對稱。因為它是任何字段的缺省,所以它的出現(xiàn) 是沒有意義的。

繼承

通過INHERITS子句的多重繼承是PostgreSQL語言的擴展。 SQL:1999及以后的標(biāo)準(zhǔn)使用不同的語法和語義定義了單繼承。SQL:1999風(fēng)格的繼承還沒有在 PostgreSQL中實現(xiàn)。

零字段表

PostgreSQL允許創(chuàng)建沒有字段的表(比如CREATE TABLE foo();)。這是對SQL標(biāo)準(zhǔn)的擴展, 標(biāo)準(zhǔn)不允許存在零字段表。零字段表本身沒什么用, 但是禁止他們會給ALTER TABLE DROP COLUMN帶來很奇怪的情況,所以, 這個時候忽視標(biāo)準(zhǔn)的限制概念非常清楚。

WITH子句

WITH子句是PostgreSQL的擴展, 同樣,存儲參數(shù)和OID也是擴展。

表空間

PostgreSQL的表空間概念不是標(biāo)準(zhǔn)的東西。 因此TABLESPACEUSING INDEX TABLESPACE都是擴展。

Typed Tables

類型化表執(zhí)行SQL標(biāo)準(zhǔn)的一個子集。根據(jù)標(biāo)準(zhǔn),一個類型化表有與底層復(fù)合類型 以及另一個是"self-referencing column"的列相符合的列。 PostgreSQL明確不支持這些自參照列,但是在使用OID特性時會有相同的效果。

又見

ALTER TABLE, DROP TABLE, CREATE TABLESPACE, CREATE TYPE
上一篇: 下一篇: