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

directory search
前言 何為PostgreSQL? PostgreSQL簡(jiǎn)史 格式約定 更多信息 臭蟲匯報(bào)指導(dǎo) I. 教程 章1. 從頭開始 1.1. 安裝 1.2. 體系基本概念 1.3. 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) 1.4. 訪問(wèn)數(shù)據(jù)庫(kù) 章2. SQL語(yǔ)言 2.1. 介紹 2.2. 概念 2.3. 創(chuàng)建新表 2.4. 向表中添加行 2.5. 查詢一個(gè)表 2.6. 表間鏈接 2.7. 聚集函數(shù) 2.8. 更新 2.9. 刪除 章3. 高級(jí)特性 3.1. 介紹 3.2. 視圖 3.3. 外鍵 3.4. 事務(wù) 3.5. 窗口函數(shù) 3.6. 繼承 3.7. 結(jié)論 II. SQL語(yǔ)言 章4. SQL語(yǔ)法 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ù)庫(kù)對(duì)象 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. 日期/時(shí)間類型 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. 對(duì)象標(biāo)識(shí)符類型 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í)間/日期函數(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. 值存儲(chǔ) 10.5. UNION 章11. 索引 11.1. 介紹 11.2. 索引類型 11.3. 多字段索引 11.4. 索引和ORDER BY 11.5. 組合多個(gè)索引 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)計(jì)信息 14.3. 用明確的JOIN語(yǔ)句控制規(guī)劃器 14.4. 向數(shù)據(jù)庫(kù)中添加記錄 14.5. 非持久性設(shè)置 III. 服務(wù)器管理 章15. 安裝指導(dǎo) 15.1. 簡(jiǎn)版 15.2. 要求 15.3. 獲取源碼 15.4. 升級(jí) 15.5. 安裝過(guò)程 15.6. 安裝后的設(shè)置 15.7. 支持的平臺(tái) 15.8. 特殊平臺(tái)的要求 章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ù)庫(kù)集群 17.3. 啟動(dòng)數(shù)據(jù)庫(kù)服務(wù)器 17.4. 管理內(nèi)核資源 17.5. 關(guān)閉服務(wù) 17.6. 防止服務(wù)器欺騙 17.7. 加密選項(xiàng) 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. 錯(cuò)誤報(bào)告和日志 18.8. 運(yùn)行時(shí)統(tǒng)計(jì) 18.9. 自動(dòng)清理 18.10. 客戶端連接缺省 18.12. 版本和平臺(tái)兼容性 18.11. 鎖管理 18.13. 預(yù)置選項(xiàng) 18.14. 自定義的選項(xiàng) 18.15. 開發(fā)人員選項(xiàng) 18.16. 短選項(xiàng) 章19. 用戶認(rèn)證 19.1. pg_hba.conf 文件 19.2. 用戶名映射 19.3. 認(rèn)證方法 19.4. 用戶認(rèn)證 章20. 數(shù)據(jù)庫(kù)角色和權(quán)限 20.1. 數(shù)據(jù)庫(kù)角色 20.2. 角色屬性 20.3. 權(quán)限 20.4. 角色成員 20.5. 函數(shù)和觸發(fā)器 章21. 管理數(shù)據(jù)庫(kù) 21.1. 概述 21.2. 創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) 21.3. 臨時(shí)庫(kù) 21.4. 數(shù)據(jù)庫(kù)配置 21.5. 刪除數(shù)據(jù)庫(kù) 21.6. 表空間 章22. 本土化 22.1. 區(qū)域支持 22.2. 字符集支持 章23. 日常數(shù)據(jù)庫(kù)維護(hù)工作 23.1. Routine Vacuuming日常清理 23.2. 經(jīng)常重建索引 23.3. 日志文件維護(hù) 章24. 備份和恢復(fù) 24.1. SQL轉(zhuǎn)儲(chǔ) 24.2. 文件系統(tǒng)級(jí)別的備份 24.3. 在線備份以及即時(shí)恢復(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)控?cái)?shù)據(jù)庫(kù)的活動(dòng) 27.1. 標(biāo)準(zhǔn)Unix工具 27.2. 統(tǒng)計(jì)收集器 27.3. 查看鎖 27.4. 動(dòng)態(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庫(kù) 31.1. 數(shù)據(jù)庫(kù)聯(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. 大對(duì)象 32.1. 介紹 32.2. 實(shí)現(xiàn)特點(diǎ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)于這個(gè)模式 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. 擴(kuò)展SQL 35.1. 擴(kuò)展性是如何實(shí)現(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++擴(kuò)展 章36. 觸發(fā)器 36.1. 觸發(fā)器行為概述 36.3. 用 C 寫觸發(fā)器 36.2. 數(shù)據(jù)改變的可視性 36.4. 一個(gè)完整的例子 章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過(guò)程語(yǔ)言 39.1. 概述 39.2. PL/pgSQL的結(jié)構(gòu) 39.3. 聲明 39.4. 表達(dá)式 39.5. 基本語(yǔ)句 39.6. 控制結(jié)構(gòu) 39.7. 游標(biāo) 39.8. 錯(cuò)誤和消息 39.9. 觸發(fā)器過(guò)程 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. 參考手冊(cè) 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. 連接是如何建立起來(lái)的 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. 索引訪問(wèn)方法接口定義 51.1. 索引的系統(tǒng)表記錄 51.2. 索引訪問(wèn)方法函數(shù) 51.3. 索引掃描 51.4. 索引鎖的考量 51.5. 索引唯一性檢查 51.6. 索引開銷估計(jì)函數(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ù)庫(kù)物理存儲(chǔ) 54.1. 數(shù)據(jù)庫(kù)文件布局 54.2. TOAST 54.3. 自由空間映射 54.4. 可見映射 54.5. 數(shù)據(jù)庫(kù)分頁(yè)文件 章55. BKI后端接口 55.1. BKI 文件格式 55.2. BKI命令 55.3. 系統(tǒng)初始化的BKI文件的結(jié)構(gòu) 55.4. 例子 章56. 規(guī)劃器如何使用統(tǒng)計(jì)信息 56.1. 行預(yù)期的例子 VIII. 附錄 A. PostgreSQL錯(cuò)誤代碼 B. 日期/時(shí)間支持 B.1. 日期/時(shí)間輸入解析 B.2. 日期/時(shí)間關(guān)鍵字 B.3. 日期/時(shí)間配置文件 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. 外部項(xiàng)目 G.1. 客戶端接口 G.2. 過(guò)程語(yǔ)言 G.3. 擴(kuò)展 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
characters

ALTER TABLE

Name

ALTER TABLE?--?修改表的定義

Synopsis

ALTER TABLE [ ONLY ] name [ * ]
    action [, ... ]
ALTER TABLE [ ONLY ] name [ * ]
    RENAME [ COLUMN ] column TO new_column
ALTER TABLE name
    RENAME TO new_name
ALTER TABLE name
    SET SCHEMA new_schema

where action is one of:

    ADD [ COLUMN ] column type [ column_constraint [ ... ] ]
    DROP [ COLUMN ] [ IF EXISTS ] column [ RESTRICT | CASCADE ]
    ALTER [ COLUMN ] column [ SET DATA ] TYPE type [ USING expression ]
    ALTER [ COLUMN ] column SET DEFAULT expression
    ALTER [ COLUMN ] column DROP DEFAULT
    ALTER [ COLUMN ] column { SET | DROP } NOT NULL
    ALTER [ COLUMN ] column SET STATISTICS integer
    ALTER [ COLUMN ] column SET ( attribute_option = value [, ... ] )
    ALTER [ COLUMN ] column RESET ( attribute_option [, ... ] )
    ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
    ADD table_constraint
    DROP CONSTRAINT [ IF EXISTS ]  constraint_name [ RESTRICT | CASCADE ]
    DISABLE TRIGGER [ trigger_name | ALL | USER ]
    ENABLE TRIGGER [ trigger_name | ALL | USER ]
    ENABLE REPLICA TRIGGER trigger_name
    ENABLE ALWAYS TRIGGER trigger_name
    DISABLE RULE rewrite_rule_name
    ENABLE RULE rewrite_rule_name
    ENABLE REPLICA RULE rewrite_rule_name
    ENABLE ALWAYS RULE rewrite_rule_name
    CLUSTER ON index_name
    SET WITHOUT CLUSTER
    SET WITH OIDS
    SET WITHOUT OIDS
    SET ( storage_parameter = value [, ... ] )
    RESET ( storage_parameter [, ... ] )
    INHERIT parent_table
    NO INHERIT parent_table
    OWNER TO new_owner
    SET TABLESPACE new_tablespace

Description

ALTER TABLE變更一個(gè)現(xiàn)存表的定義。它有好幾種子形式:

ADD COLUMN

它使用和CREATE TABLE一樣的語(yǔ)法向表中增加一個(gè)新的字段。

DROP COLUMN [ IF EXISTS ]

它從表中刪除一個(gè)字段。和這個(gè)字段相關(guān)的索引和表約束也會(huì)被自動(dòng)刪除。 如果任何表之外的對(duì)象依賴于這個(gè)字段,必須說(shuō)CASCADE,比如外鍵參考、視圖等等。

SET DATA TYPE

它改變表中一個(gè)字段的類型。該字段涉及的索引和簡(jiǎn)單的表約束將被自動(dòng)地轉(zhuǎn)換為使用新的字段類型,方法是重新分析最初提供的表達(dá)式。可選的USING子句聲明如何從舊的字段值里計(jì)算新的字段值;如果省略,那么缺省的轉(zhuǎn)換就是從舊類型向新類型的賦值轉(zhuǎn)換。如果從舊數(shù)據(jù)類型到新類型沒(méi)有隱含或者賦值的轉(zhuǎn)換,那么必須提供一個(gè)USING

SET/DROP DEFAULT

這種形式為一個(gè)字段設(shè)置或者刪除缺省值。請(qǐng)注意缺省值只應(yīng)用于隨后的INSERT命令;它們不會(huì)修改表中已經(jīng)存在的行。也可以為視圖創(chuàng)建缺省,這個(gè)時(shí)候它們是在視圖的ON INSERT規(guī)則應(yīng)用之前插入INSERT語(yǔ)句中去的。

SET/DROP NOT NULL

它修改一個(gè)字段是否允許 NULL 值或者拒絕 NULL 值。如果表在字段中包含非 NULL ,那么你只可以SET NOT NULL

SET STATISTICS

SET ( attribute_option = value [, ... ] )
RESET ( attribute_option [, ... ] )

它設(shè)置或者重置每屬性選項(xiàng)。目前,唯一定義的每屬性選項(xiàng)是n_distinctn_distinct_inherited,這些重寫由隨后的ANALYZE操作 做的明確數(shù)值數(shù)量的估計(jì)。n_distinct影響表本身的統(tǒng)計(jì)值,而 n_distinct_inherited影響表及其繼承子表的統(tǒng)計(jì)。 當(dāng)設(shè)置為一個(gè)正值時(shí),ANALYZE將會(huì)假定列準(zhǔn)確包含明確的非空值的指定數(shù)目。 當(dāng)設(shè)置為大于或者等于-1的負(fù)值時(shí),ANALYZE將會(huì)假定在列中的不同的非空值的數(shù)目 在表的大小上是線性的;確切的統(tǒng)計(jì)將通過(guò)乘由給定的數(shù)字的絕對(duì)值估計(jì)的表大小來(lái)計(jì)。例如, 值-1意味著在此列中的所有值是不同的,值-0.5意味著每個(gè)值平均出現(xiàn)兩次。 當(dāng)表的大小隨時(shí)間變化時(shí)這是很有效的,盡管表中行數(shù)的乘法運(yùn)算在查詢規(guī)劃時(shí)間之前是不會(huì)執(zhí)行的, 聲明一個(gè)0值來(lái)正常地恢復(fù)到估計(jì)不同數(shù)值的數(shù)目。要獲取關(guān)于使用PostgreSQL 查詢優(yōu)化器做統(tǒng)計(jì)的信息,請(qǐng)參閱Section 14.2。

SET STORAGE

它為一個(gè)字段設(shè)置存儲(chǔ)模式。這個(gè)設(shè)置控制這個(gè)字段是內(nèi)聯(lián)保存還是保存在 一個(gè)附屬的表里,以及數(shù)據(jù)是否要壓縮。PLAIN必需用于定長(zhǎng) 的數(shù)值(比如integer)并且是內(nèi)聯(lián)的、不壓縮的。MAIN 用于內(nèi)聯(lián)、可壓縮的數(shù)據(jù)。EXTERNAL用于外部保存、不壓縮的數(shù)據(jù), EXTENDED用于外部的壓縮數(shù)據(jù)。EXTENDED 是大多數(shù)支持非PLAIN存儲(chǔ)的數(shù)據(jù)的缺省。使用 EXTERNAL將令在textbytea字段 上的子字符串操作更快,但付出的代價(jià)是增加了存儲(chǔ)空間。請(qǐng)注意SET STORAGE 本身并不改變表上的任何東西,只是設(shè)置將來(lái)的表操作時(shí),建議使用的策略。參閱節(jié) Section 54.2獲取更多信息。

ADD table_constraint

它給表增加一個(gè)新的約束,用的語(yǔ)法和CREATE TABLE一樣。

DROP CONSTRAINT [ IF EXISTS ]

它刪除一個(gè)表上的約束。如果IF EXISTS已被聲明 并且不存在約束,那么就不會(huì)拋出錯(cuò)誤。相反地,在這種情況下會(huì)發(fā)布一個(gè)公告。

DISABLE/ENABLE [ REPLICA | ALWAYS ] TRIGGER

它關(guān)閉或者打開屬于該表的觸發(fā)器。一個(gè)被關(guān)閉掉的觸發(fā)器是系統(tǒng)仍然知道的, 但是在觸發(fā)器事件發(fā)生的時(shí)候不會(huì)被執(zhí)行。對(duì)于一個(gè)推遲了的觸發(fā)器,在事件發(fā)生的 時(shí)候會(huì)檢查打開狀態(tài),而不是在函數(shù)實(shí)際執(zhí)行的時(shí)候。可以通過(guò)指定名字的方法打開 或者關(guān)閉任意一個(gè)觸發(fā)器,或者是該表上的所有觸發(fā)器,或者只是用戶觸發(fā)器(這個(gè) 選項(xiàng)排除了那些用于實(shí)現(xiàn)外鍵約束的觸發(fā)器)。打開或者關(guān)閉約束觸發(fā)器要求超級(jí)用 戶權(quán)限;這么做的時(shí)候應(yīng)該小心,因?yàn)槿绻|發(fā)器不執(zhí)行的話,約束保證的數(shù)據(jù)完整 性也就沒(méi)有辦法確保了。 觸發(fā)器啟動(dòng)原理也受配置變量session_replication_role影響。 簡(jiǎn)單啟動(dòng)的觸發(fā)器將會(huì)在復(fù)制任務(wù)為"初始"(默認(rèn)情況)或者"本地"時(shí) 啟動(dòng)。配置為 ENABLE REPLICA的觸發(fā)器將會(huì)僅在會(huì)話為"replica" 模式時(shí)啟動(dòng),并且配置為ENABLE ALWAYS的觸發(fā)器將會(huì)啟動(dòng),無(wú)論 是否為當(dāng)前復(fù)制模式。

DISABLE/ENABLE [ REPLICA | ALWAYS ] RULE

它配置屬于表的重寫規(guī)則制定。一個(gè)不健全的規(guī)則對(duì)系統(tǒng)來(lái)說(shuō)仍然是可知的, 但在查詢重寫期間是不被應(yīng)用的。語(yǔ)義為關(guān)閉/啟動(dòng)觸發(fā)器。這個(gè)配置對(duì)ON SELECT 規(guī)則來(lái)說(shuō)是可忽略的,常常用來(lái)保持視圖工作,即使當(dāng)前會(huì)話處于一個(gè)非默認(rèn)的復(fù)制角色中。

CLUSTER

它為將來(lái)的CLUSTER操作選擇默認(rèn)索引。 實(shí)際上并沒(méi)有重新聚集該表。

SET WITHOUT CLUSTER

它從表中刪除最常用的CLUSTER索引規(guī)范。 這影響將來(lái)不聲明索引的聚集操作。

SET WITH OIDS

它向表中添加一個(gè)oid系統(tǒng)列(參閱 Section 5.4)。 如果表已經(jīng)有OIDs則什么都不做。

請(qǐng)注意這并不等價(jià)于ADD COLUMN oid oid; 應(yīng)當(dāng)添加一個(gè)恰巧名為oid的正常列,而不是系統(tǒng)列。

SET WITHOUT OIDS

它從表中刪除 oid 系統(tǒng)字段。它和 DROP COLUMN oid RESTRICT 完全相同, 只不過(guò)是如果表上已經(jīng)沒(méi)有 oid 字段的時(shí)候不會(huì)報(bào)錯(cuò)。

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

它為表改變一個(gè)或者更多存儲(chǔ)參數(shù)。參閱 存儲(chǔ)參數(shù)獲取關(guān)于可用參數(shù)的詳細(xì)信息。請(qǐng)注意 表的內(nèi)容將將不會(huì)通過(guò)此命令被迅速調(diào)整;依靠此參數(shù)你可能需要重寫此表來(lái)得到希望的效果。 這可以通過(guò)CLUSTER或者愛那個(gè)值表重寫的ALTER TABLE形式中 的一種來(lái)做。

Note: 盡管CREATE TABLE允許OIDSWITH (storage_parameter)語(yǔ)義中聲明, ALTER TABLE但不作為OIDS一個(gè)存儲(chǔ)參數(shù)。相反地, 要使用SET WITH OIDSSET WITHOUT OIDS形式來(lái) 更改OID狀態(tài)。

RESET ( storage_parameter [, ... ] )

它重置表的一個(gè)或多個(gè)存儲(chǔ)參數(shù)。與SET一樣,根據(jù)參數(shù)的不 同可能需要重寫表才能獲得想要的效果。

INHERIT parent_table

它將目標(biāo)表添加為指定父表的新子表。之后在父表上的查詢將包含目標(biāo)表中的 記錄。要被添加為一個(gè)子表,目標(biāo)表必須已經(jīng)包含所有與父表相同的字段(除此之外 當(dāng)然也可以包含一些其它字段),這些字段的數(shù)據(jù)類型必須匹配,并且如果父表的字 段有NOT NULL約束的話子表的相應(yīng)字段也必須有NOT NULL 約束。

所有父表的CHECK約束必須同時(shí)與子表的約束匹配。當(dāng)前 UNIQUE,PRIMARY KEY,FOREIGN KEY 約束不被考慮在內(nèi),但是將來(lái)可能會(huì)有所改變。

NO INHERIT parent_table

這種形式從指定父表的子表列表中刪除目標(biāo)表。這樣,在父表上的查詢將不再目標(biāo)表中的記錄。

OWNER

這種形式將表、序列、視圖的屬主改變成指定的用戶。

SET TABLESPACE

。 它更改表的表空間來(lái)聲明表空間,并為新的表空間刪除與表相關(guān)的數(shù)據(jù)文件 表上的索引,若有,不必刪除;但可以通過(guò)附加的SET TABLESPACE 命令來(lái)將他們刪除。又見CREATE TABLESPACE。

RENAME

RENAME形式改變一個(gè)表(或者索引、序列、視圖)的名字, 或者是表中獨(dú)立字段的名字。它們對(duì)存儲(chǔ)的數(shù)據(jù)沒(méi)有影響。

SET SCHEMA

這種形式把表移動(dòng)到另外一個(gè)模式。相關(guān)的索引、約束、序列都跟著移動(dòng)。

除了RENAMESET SCHEMA之外所有動(dòng)作都可以 捆綁在一個(gè)多次修改列表中并行使用。比如,可以在一個(gè)命令里增加幾個(gè)字段和/或 修改幾個(gè)字段的類型。對(duì)于大表,這么做特別有用,因?yàn)橹恍枰獙?duì)該表做一次處理。

要使用ALTER TABLE,你必須擁有該表。要修改一個(gè)表的模式,你還必 須在新模式上擁有CREATE權(quán)限。要把該表添加為一個(gè)父表的新 子表,你必須同時(shí)擁有父表。要修改所有者,你還必須是新的所有角色的直接或間接 成員,并且該成員必須在此表的模式上有CREATE權(quán)限。這些限制 強(qiáng)制了修改該所有者不會(huì)做任何通過(guò)刪除和重建表不能做的事情。不過(guò),超級(jí)用戶可 以以任何方式修改任意表的所有權(quán)。

參數(shù)

name

要修改的已有表的名稱(可以有模式修飾)。若聲明了ONLY, 只有那個(gè)表被更改。若未聲明ONLY,該表及其所有子表都將會(huì)被更改。

column

現(xiàn)存或新的字段名稱

new_column

現(xiàn)存字段的新名稱

new_name

表的新名稱

type

新字段的類型,或者現(xiàn)存字段的新類型。

table_constraint

新的表約束定義

constraint_name

要?jiǎng)h除的現(xiàn)有約束的名字

CASCADE

級(jí)聯(lián)刪除依賴于被依賴字段或者約束的對(duì)象(比如引用該字段的視圖)

RESTRICT

如果字段或者約束還有任何依賴的對(duì)象,則拒絕刪除該字段。這是缺省行為。

trigger_name

要打開或者關(guān)閉的單個(gè)觸發(fā)器的名字

ALL

開啟或者關(guān)閉所有屬于該表的觸發(fā)器。(如果任何觸發(fā)器內(nèi)部產(chǎn)生約束觸發(fā)器, 這要求超級(jí)用戶權(quán)限,例如那些用于執(zhí)行外鍵約束或者可推遲的獨(dú)特性和排除 約束。)

USER

關(guān)閉或者啟動(dòng)所有屬于表的觸發(fā)器。(如果任何觸發(fā)器內(nèi)部產(chǎn)生約束觸發(fā)器, 這要求超級(jí)用戶權(quán)限,例如那些用于執(zhí)行外鍵約束或者可推遲的獨(dú)特性和排除 約束。)

index_name

要標(biāo)記為群集的表上面的索引名字

storage_parameter

表的存儲(chǔ)參數(shù)的名字

value

表的存儲(chǔ)參數(shù)的新值,根據(jù)參數(shù)的不同,可能是一個(gè)數(shù)字或單詞。

parent_table

將要與該表建立/取消關(guān)聯(lián)的父表

new_owner

該表的新所有者的用戶名

new_tablespace

這個(gè)表將要移動(dòng)到的表空間名字

new_schema

表將前往的新模式的名字

注意

COLUMN關(guān)鍵字是多余的,可以省略。

如果用ADD COLUMN增加一個(gè)字段,那么所有表中現(xiàn)有行 都初始化為該字段的缺省值(如果沒(méi)有聲明DEFAULT子句,那么就是 NULL)。

通過(guò)非空默認(rèn)值添加一個(gè)列或者改變一個(gè)原有列的類型需要整個(gè)要被重寫的表和索引。 這對(duì)于大型表可能需要大量時(shí)間;這將暫時(shí)需要兩倍的磁盤空間。添加或者刪除一個(gè)系統(tǒng) oid列同樣需要重寫整個(gè)表。

增加一個(gè)CHECKNOT NULL約束將會(huì)掃描該表以保證 現(xiàn)有的行符合約束要求。

提供在一個(gè)ALTER TABLE里面聲明多個(gè)修改的主要原因是原先需要的 對(duì)表的多次掃描和重寫可以組合成一個(gè)步驟。

DROP COLUMN命令并不是物理上把字段刪除,而只是簡(jiǎn)單地 把它標(biāo)記為對(duì) SQL 操作不可見。隨后對(duì)該表的插入和更新將在該字段存儲(chǔ)一個(gè) NULL 。 因此,刪除一個(gè)字段是很快的,但是它不會(huì)立即釋放表在磁盤上的空間,因?yàn)楸粍h除 了的字段占據(jù)的空間還沒(méi)有回收。這些空間將隨著現(xiàn)有的行的更新而得到回收。 (在刪除系統(tǒng)oid列時(shí),這些語(yǔ)句不會(huì)應(yīng)用;這是做了一個(gè)直接的重寫。)

SET DATA TYPE要求重寫整個(gè)表的特性有時(shí)候是一個(gè)優(yōu)點(diǎn),因?yàn)橹貙懙倪^(guò)程 消除了表中沒(méi)用的空間。比如,要想立刻回收被一個(gè)已經(jīng)刪除的字段占據(jù)的空間,最快的 方法是:

ALTER TABLE table ALTER COLUMN anycol TYPE anytype;

這里的anycol是任何在表中還存在的字段,而anytype是和該 字段的原類型一樣的類型。這樣的結(jié)果是在表上沒(méi)有任何可見的語(yǔ)意的變化,但是這個(gè)命 令強(qiáng)迫重寫,這樣就刪除了不再使用的數(shù)據(jù)。

SET DATA TYPEUSING選項(xiàng)實(shí)際上可以聲明涉及該行 舊值的任何表達(dá)式;也就是說(shuō),它可以引用除了正在被轉(zhuǎn)換的字段之外其它的字段。這樣, 就可以用SET DATA TYPE語(yǔ)法做非常普遍性的轉(zhuǎn)換。因?yàn)檫@個(gè)靈活性, USING表達(dá)式并沒(méi)有作用于該字段的缺省值(如果有的話);結(jié)果可能 不是缺省表達(dá)式要求的常量表達(dá)式。這就意味著如果從舊類型到新類型沒(méi)有隱含或者賦值 轉(zhuǎn)換的話,那么即使存在USING子句,SET DATA TYPE也 可能無(wú)法把缺省值轉(zhuǎn)換成新的類型。在這種情況下,應(yīng)該用DROP DEFAULT先 刪除缺省,執(zhí)行SET DATA TYPE,然后使用SET DEFAULT增加一個(gè) 合適的新缺省值。類似的考慮也適用于涉及該字段的索引和約束。

如果表有任何后代表,那么如果不在后代表上做同樣的修改的話,就不允許在父表上增加、 重命名、修改一個(gè)字段的類型,也就是說(shuō),ALTER TABLE ONLY將被拒絕。 這樣就保證了后代表總是有和父表匹配的字段。

一個(gè)遞歸DROP COLUMN操作將只有在后代表并不從任何其它父表中繼 承該字段并且從來(lái)沒(méi)有獨(dú)立定義該字段的時(shí)候才能刪除一個(gè)后代表的字段。一個(gè)非遞歸的 DROP COLUMN(也就是ALTER TABLE ONLY ... DROP COLUMN) 從來(lái)不會(huì)刪除任何后代字段,而是把他們標(biāo)記為獨(dú)立定義的(而不是繼承的)。

TRIGGER,CLUSTER,OWNER,TABLESPACE 行為絕不會(huì)遞歸到后代表;也就是說(shuō),它們的行為就像總是聲明了ONLY一樣。 添加一個(gè)約束只能在CHECK約束上遞歸。

不允許更改系統(tǒng)表結(jié)構(gòu)的任何部分。

請(qǐng)參考CREATE TABLE部分獲取更多有效參數(shù)的描述。章 Chapter 5里有更多有關(guān)繼承的信息。

Examples

向表中增加一個(gè)varchar列:

ALTER TABLE distributors ADD COLUMN address varchar(30);

從表中刪除一個(gè)字段:

ALTER TABLE distributors DROP COLUMN address RESTRICT;

在一個(gè)操作中修改兩個(gè)現(xiàn)有字段的類型:

ALTER TABLE distributors
    ALTER COLUMN address TYPE varchar(80),
    ALTER COLUMN name TYPE varchar(100);

使用一個(gè)USING子句,把一個(gè)包含 UNIX 時(shí)間戳的 integer 字段轉(zhuǎn)化成timestamp with time zone字段:

ALTER TABLE foo
    ALTER COLUMN foo_timestamp SET DATA TYPE timestamp with time zone
    USING
        timestamp with time zone 'epoch' + foo_timestamp * interval '1 second';

同樣地,當(dāng)字段有一個(gè)不會(huì)自動(dòng)轉(zhuǎn)換成新類型的缺省值表達(dá)式時(shí):

ALTER TABLE foo
    ALTER COLUMN foo_timestamp DROP DEFAULT,
    ALTER COLUMN foo_timestamp TYPE timestamp with time zone
    USING
        timestamp with time zone 'epoch' + foo_timestamp * interval '1 second',
    ALTER COLUMN foo_timestamp SET DEFAULT now();

對(duì)現(xiàn)存字段改名:

ALTER TABLE distributors RENAME COLUMN address TO city;

更改現(xiàn)存表的名字:

ALTER TABLE distributors RENAME TO suppliers;

給一個(gè)字段增加一個(gè)非空約束:

ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;

從一個(gè)字段里刪除一個(gè)非空約束:

ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;

給一個(gè)表增加一個(gè)檢查約束:

ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5);

刪除一個(gè)表及其所有子表的監(jiān)查約束

ALTER TABLE distributors DROP CONSTRAINT zipchk;

從表中刪除一個(gè)檢查約束只需要:

ALTER TABLE ONLY distributors DROP CONSTRAINT zipchk;

(此檢查約束僅存在于子表中。)

向表中增加一個(gè)外鍵約束:

ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses (address) MATCH FULL;

給表增加一個(gè)(多字段)唯一約束:

ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);

給一個(gè)表增加一個(gè)自動(dòng)命名的主鍵約束,要注意的是一個(gè)表只能有一個(gè)主鍵:

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

把表移動(dòng)到另外一個(gè)表空間:

ALTER TABLE distributors SET TABLESPACE fasttablespace;

把表移動(dòng)到另外一個(gè)模式:

ALTER TABLE myschema.distributors SET SCHEMA yourschema;

兼容性

ADD, DROP, SET DEFAULT形式與 SQL 標(biāo)準(zhǔn)兼容。其它形式是PostgreSQL對(duì) SQL 標(biāo)準(zhǔn) 的擴(kuò)展。還有,在一個(gè)ALTER TABLE命令里聲明多個(gè)操作也是擴(kuò)展。

ALTER TABLE DROP COLUMN可以用于刪除表中的唯一的一個(gè)字段,留下 一個(gè)零字段的表。這是對(duì) SQL 的擴(kuò)展,它不允許零字段表。

Previous article: Next article: