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

directory search
前言 何為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
characters

psql

Name

psql?--? PostgreSQL交互終端

Synopsis

psql [option...] [dbname [username]]

描述

psql是一個以終端為基礎(chǔ)的PostgreSQL前端。它允許你交互地鍵入查詢,然后把它們發(fā)出給PostgreSQL, 再顯示查詢的結(jié)果。另外,輸入可以來自一個文件。還有,它提供了一些元命令和多種類似shell的特性來實現(xiàn)書寫腳本以及對大量任務(wù)的自動化。

選項

-a
--echo-all

在讀取行時向標(biāo)準(zhǔn)輸出打印所有內(nèi)容。這個選項在腳本處理時比交互模式時更有用。 這個選項等效于設(shè)置ECHO變量為all。

-A
--no-align

切換為非對齊輸出模式。缺省輸出模式是對齊的。

-c command
--command command

聲明psql將執(zhí)行一條查詢字符串command,然后退出。 Start-up files (psqlrc and ~/.psqlrc) are ignored with this option.

command必須是一條完全可以被服務(wù)器分析的字符串(也就是不包含psql特有的特性), 或者是一個反斜杠命令。這樣你就不會混合SQLpsql元命令。要想混合使用, 你可以把字符串重定向到psql里, 像這樣:echo '\x \\ SELECT * FROM foo;' | psql(\\用于隔開元命令)。

如果命令字符串包含多個SQL命令,那么他們將在一個事務(wù)里處理, 除非在字符串里包含了明確的BEGIN/COMMIT命令把他們分成多個事務(wù)。 這個和從psql的標(biāo)準(zhǔn)輸入里給它填充相同字符串不同。

-d dbname
--dbname dbname

指定要連接的數(shù)據(jù)庫的名稱。這等價于指定dbname 作為命令行中的第一個非選項參數(shù)。

若該參數(shù)包含一個=符號,它會被當(dāng)做conninfo字符串。 請參閱Section 31.1獲取詳細(xì)信息。

-e
--echo-queries

把所有發(fā)送給服務(wù)器的查詢同時也回顯到標(biāo)準(zhǔn)輸出。等效于把變量ECHO設(shè)置為 queries

-E
--echo-hidden

回顯由\d和其它反斜杠命令生成的實際查詢。你可以使用這個命令學(xué)習(xí) psql的內(nèi)部操作。 這等效于在psql里設(shè)置變量ECHO_HIDDEN。

-f filename
--file filename

使用filename作為命令的語句源而不是交互式讀入查詢。 psql將在處理完文件后結(jié)束。這個選項在很多方面等效于內(nèi)部命令 \i。

如果filename-(連字符),則從標(biāo)準(zhǔn)輸入讀取。

使用這個選項與使用filename 有微小的區(qū)別。 通常,兩者都回按照你預(yù)期那樣運行,但是使用-f打開了一些很好的特性, 比如帶行號的錯誤信息。而且,使用這個選項還可能減小啟動的開銷。 另一方面,如果你把所有內(nèi)容手工輸入,使用shell輸入定向的方式(理論上)能保證生成和你已經(jīng)得到的 完全一樣的輸出。

-F separator
--field-separator separator

使用separator作為未對齊輸出的域分隔符。 等效于\pset fieldsep\f

-h hostname
--host hostname

指定正在運行服務(wù)器的主機名。如果主機名以斜杠開頭,則它被用作到Unix域套接字的路徑。

-H
--html

打開HTML格式輸出。等效于\pset format html\H命令。

-l
--list

列出所有可用的數(shù)據(jù)庫,然后退出。其它非連接選項將被忽略。類似于內(nèi)部命令 \list。

-L filename
--log-file filename

除了正常的輸出源之外,把所有查詢輸出記錄到文件filename。

-n
--no-readline

不要使用readline來做行編輯并且不要使用history。這有助于在剪切和粘貼時關(guān)閉標(biāo)簽擴展。

-o filename
--output filename

將所有查詢輸出重定向到文件filename。這個選項等效于\o命令。

-p port
--port port

指定服務(wù)器偵聽的TCP端口或本地Unix域套接字文件的擴展。缺省使用環(huán)境變量PGPORT的值, 如果沒有設(shè)置的話則使用編譯時聲明的端口(通常是5432)。

-P assignment
--pset assignment

\pset的風(fēng)格設(shè)置打印選項。要注意的是你在這里必須用等號而不 是空格分割名稱和值。 例如,要把輸出格式設(shè)置為LaTeX,你可以敲入-P format=latex。

-q
--quiet

安靜地執(zhí)行處理任務(wù)。缺省時psql將打印歡迎和許多其它輸出信息。 如果使用了此選項,這些都不會出現(xiàn)。這在和-c選項一起使用時很有效。 在psql里可以通過設(shè)置QUIET變量實現(xiàn)同樣效果。

-R separator
--record-separator separator

使用separator做為非對齊輸出的記錄分隔符。 等效于\pset recordsep命令。

-s
--single-step

單步模式運行。意味著每個查詢在發(fā)往服務(wù)器之前都要提示用戶,用這個選項也可以取消執(zhí)行。 此選項主要用于調(diào)試腳本。

-S
--single-line

單行運行模式,這時每個命令都將由換行符結(jié)束,像分號那樣。

Note: 這個模式是給那些堅持要使用這個特性的人保留的, 不鼓勵你這么用。實際上,如果你在一行里混合使用SQL和元命令, 執(zhí)行的順序?qū)Σ皇炀毜挠脩舳圆⒉豢偸乔逦摹?

-t
--tuples-only

關(guān)閉打印列名稱和結(jié)果行計數(shù)腳注等信息。等效于\t命令。

-T table_options
--table-attr table_options

聲明放在HTML table標(biāo)簽里的選項。參閱\pset獲取細(xì)節(jié)。

-U username
--username username

以用戶username代替缺省用戶與數(shù)據(jù)庫連接。當(dāng)然,你必須有這么做的權(quán)限。

-v assignment
--set assignment
--variable assignment

像內(nèi)部命令\set那樣進(jìn)行一次變量分配。注意,如果有變量名和值的話, 你必須在命令行上用等號分隔它們。去掉等號則重置變量。 要設(shè)置一個沒有值的變量,可以保留等號但是不指定值。 這個分配是在啟動之初進(jìn)行的,所以為內(nèi)部使用而保留的變量可能被再次覆蓋。

-V
--version

打印psql版本信息然后退出。

-w
--no-password

從不提示密碼。如果服務(wù)器請求密碼身份認(rèn)證并且一個密碼不能通過其他方式(如.pgpass 文件)來獲得,該鏈接嘗試就會失敗。該選項在沒有用戶可以輸入密碼時對批量作業(yè)和腳本中是有效的。

請注意該選項將仍然為整個會話設(shè)置,所以會影響元命令 \connect的使用,以及初始連接嘗試的使用。

-W
--password

強制psql在與一個數(shù)據(jù)庫連接前提示輸入口令。

該選項從來不是至關(guān)重要的,因為若服務(wù)器請求密碼身份認(rèn)證psql 將會自動提示一個密碼。然而,psql將浪費一個連接嘗試發(fā)現(xiàn) 服務(wù)器需要一個密碼。在一些情況下,值得輸入-W來避免額外的連接嘗試。

請注意該選項將仍然為整個會話設(shè)置,所以會影響元命令 \connect,以及初始連接嘗試的使用。

-x
--expanded

打開擴展表格式模式。等效于\x 命令。

-X,
--no-psqlrc

不讀取啟動文件(系統(tǒng)范圍的psqlrc或者你自己的~/.psqlrc都不讀取)。

-1
--single-transaction

當(dāng)psql使用-f選項執(zhí)行腳本時,使用這個選項將導(dǎo)致在腳本的開頭和結(jié)尾分別加上BEGIN/COMMIT來把整個腳本當(dāng)作一個事務(wù)執(zhí)行。 這將保證該腳本要么完全執(zhí)行成功,要么不產(chǎn)生任何影響。

如果在腳本中已經(jīng)使用了BEGINCOMMIT,ROLLBACK, 那么該選項將不會得到期望的效果。同樣, 如果腳本中包含任何不能在事務(wù)塊內(nèi)部使用的命令, 使用這個選項將導(dǎo)致這樣的命令執(zhí)行失敗,當(dāng)然整個事務(wù)亦將失敗。

-?
--help

顯示關(guān)于psql命令行參數(shù)的幫助然后退出。

退出狀態(tài)

如果正常結(jié)束,那么psql向shell返回0,如果自身發(fā)生致命錯誤, 則返回1(例如,內(nèi)存用盡,未找到文件等),如果和數(shù)據(jù)庫的連接失效而且會話不再活躍則返回2, 如果腳本中發(fā)生錯誤并且設(shè)置了ON_ERROR_STOP則返回3。

用法

連接一個數(shù)據(jù)庫

psql是一個普通的PostgreSQL客戶端應(yīng)用。為了與一個數(shù)據(jù)庫連接, 你需要知道目標(biāo)數(shù)據(jù)庫、服務(wù)器的主機名和端口號、以及你希望以哪個用戶的身份進(jìn)行連接等信息。 可以通過命令行參數(shù)-d,-h,-p,-U告訴psql這些信息。如果某個參數(shù)不屬于任何選項, 那么它會被解釋成數(shù)據(jù)庫名或者是用戶名(如果數(shù)據(jù)庫名稱已經(jīng)給出了)。不是所有這些選項都是必須的, 有的缺省就存在。如果你省略主機名,psql將通過Unix域套接字與本地主機的服務(wù)器相聯(lián), 或者在沒有Unix域套接字的機器上,通過TCP/IP與localhost連接。缺省的端口號是編譯時確定的。 因為數(shù)據(jù)庫服務(wù)器使用同樣的缺省值,所以在大多數(shù)設(shè)置下,你可能不需要聲明端口號。缺省的用戶名是你的Unix用戶名, 與數(shù)據(jù)庫同名。要注意的是你不能用任意用戶名與任何數(shù)據(jù)庫相聯(lián)。你的數(shù)據(jù)庫管理員應(yīng)該告訴你有哪些訪問權(quán)限。

如果缺省不太正確,那么你可以通過設(shè)置幾個環(huán)境變量PGDATABASE,PGHOSTPGPORT和/或者PGUSER, 的方法節(jié)約幾次敲擊。其它環(huán)境變量的信息,參閱Section 31.13。另外, 用一個~/.pgpass文件來避免輸入密碼也是很方便的。參閱Section 31.14獲取更多信息。

聲明連接參數(shù)的另一種方法是在一個conninfo字符串中, 這是用來代替一個數(shù)據(jù)庫名稱。這一機制給您在連接上的非常廣泛的控制。例如:

$ psql "service=myservice sslmode=require"

像Section 31.16中描述的一樣,您也可以使用LDP來做連接參數(shù)查找。 請參閱Section 31.1獲取關(guān)于所有可獲得的連接選項的信息。

如果因為任何原因而無法與數(shù)據(jù)庫相聯(lián)(權(quán)限不夠、服務(wù)器沒有運行等), psql將返回一個錯誤并退出。

輸入SQL命令

通常狀況下,psql提供一個帶有正在與之連接的接數(shù)據(jù)庫名的, 后綴=>的提示符。例如:

$ psql testdb
psql (9.0.4)
Type "help" for help.

testdb=>

用戶可以在這個提示符下鍵入SQL命令。通常, 輸入的行將在命令終止分號出現(xiàn)時送到服務(wù)器。 一行的終止并不表示命令的結(jié)束。因此命令可以為了清晰起見跨越好幾行。 如果命令發(fā)送出去而且執(zhí)行沒有錯誤,命令結(jié)果會顯示在屏幕上。

當(dāng)命令正在進(jìn)行時,psql同樣還輪詢由 LISTEN和NOTIFY生成的異步通知信號。

元命令

你在psql里輸入的任何以不帶引號的反斜杠開頭的東西都是psql元命令, 這些命令是將由psql自己處理的。這些命令也是使得psql更便于管理或書寫腳本的原因。 元命令更常見的叫法是斜杠或反斜杠命令。

一個psql命令的格式是反斜杠后面緊跟一個命令動詞,然后是任意參數(shù)。參數(shù)與命令動詞和其它參數(shù)以任意個空白字符間隔。

要在參數(shù)里面包含空白,你必須用單引號把它包圍起來。要在這樣的參數(shù)里包含單引號, 可以在前面加一個反斜杠。任何包含在單引號里的東西都會被進(jìn)一步進(jìn) 行類C的替換:\n(新行)、\t(制表符)、 \digits(八進(jìn)制表示的字符)、\xdigits(十六進(jìn)制表示的字符)。

如果一個不帶引號的參數(shù)以冒號(:)開頭, 它會被當(dāng)作一個psql變量,并且該變量的值會最終成為真正的參數(shù)值。 如果變量名使用單引號引起來的(例如::'var'),它將轉(zhuǎn)義成一個 SQL文本并且結(jié)果將被用作這個參數(shù)。如果變量名用雙引號引,它將會被轉(zhuǎn)義成一個SQL標(biāo)示符 并且結(jié)果將會用作參數(shù)。

用反勾號(`)包圍的內(nèi)容被當(dāng)作一個命令行傳入shell。該命令的輸出(刪除了結(jié)尾的新行)被當(dāng)作參數(shù)值。 上面描述的逃逸(字符)序列在反勾號里也生效。

有些命令以一個SQL標(biāo)識的名稱(比如一個表名)為參數(shù)。 這些參數(shù)遵循SQL語法關(guān)于雙引號的規(guī)則:不帶雙引號的標(biāo)識強制成小寫, 而雙引號保護字母不進(jìn)行大小寫轉(zhuǎn)換,并且允許在標(biāo)識符中使用空白。 在雙引號中,成對的雙引號在結(jié)果名字中分析成一個雙引號。 比如,FOO"BAR"BAZ解析成fooBARbaz ; 而"A weird"" name"解析成A weird" name。

、 對參數(shù)的分析在line的最后或者碰到另一個不帶引號的反斜杠時停止。 不帶引號的反斜杠會認(rèn)為是一個新的元命令的開始。 特殊的雙反斜杠序列(\\)標(biāo)識參數(shù)的結(jié)尾并將繼續(xù)分析后面的SQL命令(如果存在的話)。 這樣SQLpsql命令可以自由的在一行里面混合。 但是在任何情況下,一條元命令的參數(shù)不能延續(xù)超過行尾。

下面是已定義的元命令:

\a

如果目前的表輸出格式是不對齊的,則切換成對齊的。如果是對齊的,則切換成不對齊。這條命令是為了向后兼容。 參閱\pset獲取一個更通用的解決方法。

\cd [ directory ]

把當(dāng)前工作目錄改變到directory。沒有參數(shù)則是改變到當(dāng)前用戶的家目錄。

Tip: 使用\! pwd打印出當(dāng)前工作目錄。

\C [ title ]

把正在打印的表的標(biāo)題設(shè)置為一個查詢的結(jié)果或者取消這樣的設(shè)置。 這條命令等效于\pset title title。這條命令的名稱源于"caption", 因為以前只是用于在一個HTML表格里面設(shè)置標(biāo)題。

\connect (或\c) [ dbname [ username ] [ host ] [ port ] ]

與一個新的數(shù)據(jù)庫建立一個連接,使用/不用一個用戶名。 前面的連接將關(guān)閉。如果dbname,username,host,port被省略或是-, 那么就使用上次連接里面的值。 如果之前沒有鏈接則使用libpq的缺省值。

如果連接失敗(用戶名錯、訪問被拒絕等), 那么當(dāng)psql處于交互模式時將保留前面的連接。 如果運行的是非交互的腳本,處理會馬上停止并返回一個錯誤。 設(shè)置這樣的區(qū)別一方面是為用戶使用方便考慮, 另一方面也為了保證腳本不會碰巧操作了錯誤的數(shù)據(jù)庫的安全機制考慮。

\copy { table [ ( column_list ) ] | ( query ) } { from | to } { filename | stdin | stdout | pstdin | pstdout } [ with ] [ binary ] [ oids ] [ delimiter [ as ] 'character' ] [ null [ as ] 'string' ] [ csv [ header ] [ quote [ as ] 'character' ] [ escape [ as ] 'character' ] [ force quote column_list | * ] [ force not null column_list ] ]

執(zhí)行前端(客戶端)拷貝。這是一個運行SQL COPY命令的操作,不同的是服務(wù)器在讀寫指明的文件, 而psql讀寫文件并作為本地的文件系統(tǒng)和服務(wù)器之間的跳板取出或?qū)懭霐?shù)據(jù)。 這意味著文件訪問性和權(quán)限都是本地用戶的,而不是服務(wù)器的, 因此不需要SQL超級用戶權(quán)限。

這條命令的語法是模擬SQL COPY命令的。 要注意的是因此帶來一些應(yīng)用于\copy命令的特殊分 析規(guī)則(尤其是變量替換規(guī)則和反斜杠代換規(guī)則)將不起作用。

\copy ... from stdin | to stdout分別基于命令輸入和輸出進(jìn)行讀/寫。 所有行都從發(fā)出命令的同一個源讀取,直到讀到了\.或者流達(dá)到EOF。 輸出發(fā)送到和命令輸出相同的位置。要從psql的標(biāo)準(zhǔn)輸入或者輸出讀/寫, 可以使用pstdinpstdout。這個選項用于把和SQL腳本嵌 在一起的文件填充表很有用。

Tip: 此操作不像SQL COPY命令這樣高效,因為所有數(shù)據(jù)必須通過客戶端/服務(wù)器連接。 對于大數(shù)據(jù)量的操作,SQL命令的方法更可行。

\copyright

顯示PostgreSQL的版權(quán)和版本信息。

\d[S+] [ pattern ]

對于每個匹配pattern的關(guān)系(表、視圖、索引、序列), 顯示所有列、它們的類型、表空間(如果不是缺省的)和任何特 殊屬性(諸如NOT NULL或缺省等,只要存在)。 唯一約束相關(guān)的索引、規(guī)則、約束、觸發(fā)器也同樣顯示出來。 如果關(guān)系是一個視圖,還顯示視圖的定義。 "匹配模式"在下面定義Patterns。

\d+來的命令也是一樣的,只不過顯示更多信息: 任何與表的列關(guān)聯(lián)的注釋也都會顯示, 還有就是表中出現(xiàn)的 OID,and the view definition if the relation is a view.

缺省時,僅顯示用戶創(chuàng)建的對象;提供一個模式或者S修飾符 來包括系統(tǒng)對象。

Note: 如果如果不帶任何pattern 調(diào)用\d,那么等效于\dtvs, 將顯示一個所有表,視圖和序列的列表。這完全是出于方便的考慮。

\da[S] [ pattern ]

列出聚合函數(shù),連同其返回類型機及其操作的數(shù)據(jù)類型。如果pattern已聲明,只有名稱匹配模式的聚集 會顯示。缺省時,僅顯示用戶創(chuàng)建的對象;提供一個模式或者S 修飾符來包括對象。

\db[+] [ pattern ]

列出所有可用的表空間。如果聲明了pattern, 那么只顯示那些匹配模式的表空間。如果在命令名上附加了+, 那么每個對象都和與之相關(guān)的權(quán)限一起列出。

\dc[S] [ pattern ]

列出所有字符集之間的可用轉(zhuǎn)換。 如果聲明了pattern, 則只列出那些匹配模式的轉(zhuǎn)換。 缺省時,僅顯示用戶創(chuàng)建的對象;提供一個模式或者S 修飾符來包括對象。

\dC [ pattern ]

如果指定pattern, 只有資源或者目標(biāo)類型匹配模式的投射會列出。

\dd[S] [ pattern ]

顯示所有匹配pattern的描述,如果沒有給出參數(shù),顯示所有可視對象。 但是不管怎樣,只有那些有描述內(nèi)容的對象才顯示出來。 By default, only user-created objects are shown; supply a pattern or the S modifier to include system objects. "對象"包括:聚集,函數(shù),操作符, 類型,關(guān)系(表,視圖,索引,序列,大對象), 規(guī)則,觸發(fā)器。例如:

=> \dd version
                     Object descriptions
   Schema   |  Name   |  Object  |        Description
------------+---------+----------+---------------------------
 pg_catalog | version | function | PostgreSQL version string
(1 row)

可以用COMMENTSQL命令生成對象的描述。

\ddp [ pattern ]

列出默認(rèn)訪問權(quán)限設(shè)置。一個條目顯示每個角色(以及模式,若適用),多這些角色來說 默認(rèn)權(quán)限設(shè)置已經(jīng)從內(nèi)置缺省情況發(fā)生了改變。如果指定了 pattern,只有角色名或者模式名匹配 模式的條目被列出。

ALTER DEFAULT PRIVILEGES命令是用于設(shè)置默認(rèn)訪問權(quán)限的。 權(quán)限顯示的意義在GRANT下有解釋。

\dD[S] [ pattern ]

它列出域名。若聲明pattern, 只有名稱匹配模式的域名會顯示。缺省時,僅顯示用戶創(chuàng)建的對象; 提供一個模式或者S修飾符來包括系統(tǒng)對象。

\des[+] [ pattern ]

它列出外服務(wù)器(助記符:"external servers")。 若指定pattern,只有名稱匹配 模式的服務(wù)器會列出。如果使用\des+形式,會顯示每個服務(wù)器的 一個完整描述,包括服務(wù)器的ACL、類型、版本和選項。

\deu[+] [ pattern ]

它列出用戶映射(助記符:"external users")。 若指定pattern,只有名稱匹配 模式的映射會列出。如果使用\deu+形式,會顯示關(guān)于映射的 額外信息。

Caution

\deu+也會顯示用戶名和遠(yuǎn)程用戶密碼,所以應(yīng)該小心以免披露了這些信息。

\dew[+] [ pattern ]

它列出外部數(shù)據(jù)封裝器(助記符:"external wrappers")。 若指定pattern,只有名稱匹配 模式的外部數(shù)據(jù)封裝器會列出。如果使用\dew+形式,會顯示 外部數(shù)據(jù)封裝器的ACL和選項。

\df[antwS+] [ pattern ]

列出函數(shù)及其參數(shù)、返回類型和函數(shù)類型,它們被分為"agg" (聚集), "normal", "trigger",或者"window"。僅顯示特定類型的 函數(shù),添加相應(yīng)字母到a,n, t或者w 到命令。若指定pattern,僅顯示名稱匹 配模式的函數(shù)。若使用\df+格式,關(guān)于每個函數(shù)的額外信息,包括 包括易變性、語言、源碼和描述,都會顯示。缺省時,僅顯示用戶創(chuàng)建的對象; 提供一個模式或者S來包括系統(tǒng)對象。

Tip: 為了查找有特定類型的參數(shù)或者返回值的函數(shù),使用您的頁面調(diào)度程序的搜索能力來 滾動\df輸出。

\dF[+] [ pattern ]

它列出文本搜索配置。若指定pattern,只有名稱匹配 模式的配置會顯示。如果使用\dF+形式,會顯示每個配置的完整描述, 包括底層的文本搜索解析器和每個解析器token類型的字典列表。

\dFd[+] [ pattern ]

它列出文本搜索字典。若指定pattern,只有名稱匹配 模式的字典會顯示。如果使用\dFd+形式,會顯示每個被選中的字典的額外信息, 包括包括底層文本搜索模板和選項值。

\dFp[+] [ pattern ]

它列出文本搜索解析器。若指定pattern,只有名稱匹配 模式的解析器會顯示。如果使用\dFp+形式,會顯示每個解析器的完整描述, 包括包括底層函數(shù)和公認(rèn)的token類型。

\dFt[+] [ pattern ]

它列出文本搜索模板。若指定pattern,只有名稱匹配 模式的模板會顯示。如果使用\dFt+形式,會顯示關(guān)于每個模板的附加信息, 包括包括底層函數(shù)名稱。

\dg[+] [ pattern ]

列出數(shù)據(jù)庫角色。 如果聲明了pattern, 那么只顯示那些匹配模式的名字。這條命令實際上等于\du。 如果格式\dg+被使用,會顯示關(guān)于每個角色的附加信息, 包括每個角色的注釋。

\di[S+] [ pattern ]
\ds[S+] [ pattern ]
\dt[S+] [ pattern ]
\dv[S+] [ pattern ]

在這組命令中,字母 i, s, tv分別代表索引、序列、表和視圖。 您可以按任意順序聲明任何或全部的這些字母,來獲得一個這些類型的對象的清單。 例如,\dit列出索引和表。如果+附加到命令名, 若存在,每個對象會按它在磁盤上的實際大小以及其相關(guān)描述來描述。 如果聲明了pattern,那么只列出匹配模式的對象。 缺省時,僅顯示用戶創(chuàng)建的對象;提供一個模式或者S修飾符來包括系統(tǒng)對象。

\dl

\lo_list的別名,顯示一個大對象的列表。

\dn[+] [ pattern ]

列出所有可用模式(名字空間)。如果聲明了pattern, 那么只列出匹配模式的模式名。不顯示非本地的臨時模式。 如果在命令名上附加了+,那 么每個對象都和與之相關(guān)的權(quán)限和注釋一起列出(如果有的話)。

\do[S] [ pattern ]

列出所有可用操作符,以及它們的操作數(shù)和返回的數(shù)據(jù)類型。 如果聲明了pattern, 那么只顯示匹配模式的操作符。 缺省時僅顯示用戶創(chuàng)建的對象;提供一個模式或者S修飾符來包含系統(tǒng) 對象。

\dp [ pattern ]

一列表,視圖,序列和它們相關(guān)的權(quán)限。 如果聲明了pattern, 那么只列出名字匹配模式的表。

GRANT和REVOKE命令用于設(shè)置訪問權(quán)限。 權(quán)限顯示的意義在GRANT下有解釋。

\drds [ role-pattern [ database-pattern ] ]

列出定義的配置設(shè)置。這些設(shè)置可以是特定角色、特定數(shù)據(jù)庫或者兩者都是。 role-patterndatabase-pattern 通常用于選擇特定角色和數(shù)據(jù)庫分別列出來。如果省略,或者如果指定*, 所有的設(shè)置都會列出來,分別包括那些不是特定角色或者特定數(shù)據(jù)庫的。

ALTER ROLE和ALTER DATABASE命令式用來定義 每角色和每數(shù)據(jù)庫配置設(shè)置。

\dT[S+] [ pattern ]

列出數(shù)據(jù)類型。如果聲明了pattern, 那么只顯示匹配模式的類型。如果+被添加到命令名稱上,每個類型 按其內(nèi)部名稱和大小列出,以及其允許的數(shù)值(若是enum類型)。 缺省時僅顯示用戶創(chuàng)建的對象;提供一個模式或者S修飾符來包含系統(tǒng) 對象。

\du[+] [ pattern ]

列出數(shù)據(jù)角色。如果聲明了pattern, 那么只名稱顯示匹配模式的角色名。如果使用\du+格式, 會顯示關(guān)于每個角色的附加信息,包括對每個角色的注釋。

\edit (或\e) [ filename ]

如果聲明了filename, 則編輯此文件并且在編輯器退出后將其內(nèi)容拷貝回查詢緩沖區(qū)。 如果沒有給出此參數(shù), 則把當(dāng)前查詢緩沖區(qū)內(nèi)容拷貝到一個臨時文件然后以相同方式編輯。

然后根據(jù)一般的psql規(guī)則重新分析查詢緩沖區(qū), 這時整個緩沖區(qū)當(dāng)作一個單行, 因此你無法用這個方法制作腳本(用\i)。 這還意味著如果該查詢以分號結(jié)尾(或者包含分號), 它就會馬上被執(zhí)行。否則它只是在查詢緩沖區(qū)里等待。

Tip: psqlPSQL_EDITOR,EDITORVISUAL順序搜索環(huán)境變量查找要用到哪個編輯器。 如果上面的都沒有設(shè)置,那么在Unix系統(tǒng)上使用vi, 而在Windows系統(tǒng)上用notepad.exe。

\ef [ function_description ]

該命令提取并編輯命名的函數(shù)的定義,以一個CREATE OR REPLACE FUNCTION 命令的形式。以對\e相同的方式編輯。退出編輯器后,更新命令會在 查詢緩沖區(qū)等待;類型分號或者要發(fā)送它的\g ,或者用來取消的\r。

目標(biāo)函數(shù)可以僅通過名稱來聲明,或者通過名稱和參數(shù)來聲明,例如foo(integer, text)。 必須給定參數(shù)類型,如果有超過一個同名的函數(shù)。

如果沒有指定函數(shù),一個空的CREATE FUNCTION模板那是用來編輯的。

\echo text [ ... ]

向標(biāo)準(zhǔn)輸出打印參數(shù),用一個空格分隔并且最后跟著一個新行。 這個特性在顯示腳本的輸出時會有用。例如:

=> \echo `date`
Tue Oct 26 21:40:57 CEST 1999

如果第一個參數(shù)是一個無引號的-n,那么不會寫出結(jié)尾的新行。

Tip: 如果使用\o命令重定向查詢的輸出, 你可能會用\qecho取代這條命令。

\encoding [ encoding ]

設(shè)置客戶端字符編碼方式。不帶參數(shù)時,這條命令顯示當(dāng)前的編碼方式。

\f [ string ]

為不對齊的查詢輸出設(shè)置域分隔符。 缺省時是豎條(|)。 參閱\pset獲取設(shè)置輸出選項的通用方法。

\g [ { filename | |command } ]

把當(dāng)前的查詢輸入緩沖區(qū)的內(nèi)容發(fā)送給服務(wù)器并且把查詢的輸出存儲到可選的filename或 者把輸出重定向到一個獨立的執(zhí)行command的Unix shell。 單獨一個\g實際上等效于一個分號。 一個帶有參數(shù)的\g"一次 性"\o命令的代用品。

\help (or \h) [ command ]

給出指定SQL命令的語法幫助。 如果沒有給出command, 那么psql將列出可獲得語法幫助的所有命令。 如果command是一個星號(*) , 則顯示所有SQL命令的語法幫助。

Note: 為簡化擊鍵,包含多個單字的命令不需要引起。因此鍵入\help alter table是正確的。

\H

打開HTML查詢輸出格式。如果HTML格式已經(jīng)打開, 則切換回缺省的對齊的文本格式。 這個命令是為了兼容和方便,參閱\pset獲取設(shè)置其它輸出選項的內(nèi)容。

\i filename

從文件filename中讀取并把其內(nèi)容當(dāng)作從鍵盤輸入的那樣執(zhí)行查詢。

Note: 如果你想在屏幕上看到讀入的行,就必須對所有行將變量ECHO 設(shè)置為all。

\l (or \list)
\l+ (or \list+)

列出服務(wù)器中所有數(shù)據(jù)庫的名稱、所有者、字符集編碼以及訪問權(quán)限。 如果添加+到命令名稱、數(shù)據(jù)庫大小、默認(rèn)表空間,并且也會顯示描述。 (大小信息僅對當(dāng)前用戶可連接的數(shù)據(jù)庫是有效的。)

\lo_export loid filename

從數(shù)據(jù)庫里讀取OIDloid的大對象并把它寫到filename里。 注意這個功能與服務(wù)器函數(shù)lo_export有些微小的區(qū)別, 后者運行時帶著運行數(shù)據(jù)庫服務(wù)器的用戶權(quán)限,而且是在服務(wù)器的文件系統(tǒng)上。

Tip: 使用\lo_list 查看大對象的 OID

\lo_import filename [ comment ]

把文件存儲為一個PostgreSQL大對象。可以帶著一個該對象的注解選項。例如:

foo=> \lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'
lo_import 152801

表明大型對象收到對象ID152801的響應(yīng),可以用來訪問將來新創(chuàng)建的大對象。 為了可讀性,建議總是把一個人類可讀的評論與每一個對象聯(lián)系。OIDs和注釋 可以通過\lo_list來查看。

注意這條命令與服務(wù)器端的lo_import有一些區(qū)別,因為這條命令 是本地用戶在本地文件系統(tǒng)上操作, 而不是以服務(wù)器用戶在服務(wù)器文件系統(tǒng)上操作。

\lo_list

顯示一個目前存儲在該數(shù)據(jù)庫里的所有PostgreSQL大對象和 它們的所有者的列表。

\lo_unlink loid

從數(shù)據(jù)庫里刪除OIDloid 的大對象。

Tip: 使用\lo_list查找大對象的OID

\o [ {filename | |command} ]

把后面的查詢結(jié)果保存到文件filename里或者把后面的查詢結(jié)果重定向到一個獨立執(zhí)行command的Unix shell。如果沒有聲明參數(shù),查詢輸出 將被重置為標(biāo)準(zhǔn)輸出。

"查詢結(jié)果"包括所有表,命令響應(yīng)和從數(shù)據(jù)庫服務(wù)器來的提示, 同樣還有各種各樣查詢數(shù)據(jù)庫的反斜杠命令的輸出(如\d),但是沒有錯誤信息。

Tip: 要用文本分散查詢結(jié)果之間的輸出,用\qecho。

\p

打印當(dāng)前查詢緩沖區(qū)到標(biāo)準(zhǔn)輸出。

\password [ username ]

更改指定用戶的口令,缺省為當(dāng)前用戶。該命令將提示口令輸入, 然后將加密過的口令使用ALTER ROLE之類的命令發(fā)送給服務(wù)器。 這可以保證新口令不會以明文形式出現(xiàn)在命令歷史、服務(wù)器日志、或其他什么地方。

\prompt [ text ] name

提示用戶設(shè)置變量name。一個可選提示, text,是可以指定的。(對于多字提示, 用單引號。)

缺省時,\prompt使用終端輸入和輸出。然而,如果-f命令行 開關(guān)被使用,\prompt使用標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出。

\pset option [ value ]

這個命令的輸出設(shè)置選項影響查詢結(jié)果表。option 表明那個選項應(yīng)該被設(shè)置。value的語義根據(jù)選定的 選項發(fā)生變化。對于一些選項,省略value會導(dǎo)致 選項toggled或者復(fù)原,正如特定選項中描述的一樣。如果沒有提及此類表現(xiàn),那么省略 value僅會使得當(dāng)前設(shè)置顯示出來。

可調(diào)節(jié)的打印選項有:

format

設(shè)置輸出格式為unaligned, aligned,wrappedhtml, latex,或者troff-ms之一。 允許使用唯一縮寫,這也意味著一個字母就夠了。

Unaligned(不對齊)模式把一條記錄的所有字段都輸出到一行, 用當(dāng)前有效的域分隔符分隔。 這主要用于生成那些要被其它程序讀取的輸出(比如,制表符分隔或者逗號分隔)。

Aligned(對齊)模式是標(biāo)準(zhǔn)的,人類可讀的,格式化好了的文本輸出;這是缺省。

wrapped格式就像aligned,但是跨線包裝寬的數(shù)據(jù)值 使得輸出匹配目標(biāo)列寬。目標(biāo)寬會按columns選項描述的來決定。 請注意psql不會試圖包裝列標(biāo)題;因此,wrappedaligned表現(xiàn)的相同,如果列標(biāo)題所需的總寬度超過目標(biāo)。

The html, latex,和troff-ms HTMLLaTeX模式把表輸 出為可用于文檔里的對應(yīng)標(biāo)記語言。它們還不是完整 的文檔!可能對于HTML變化還不是太大, 但是在LaTeX里,你必須有一個完整的文檔包裝器。

columns

wrapped格式設(shè)置目標(biāo)寬度,以及寬讀限制來決定輸出的寬度是否足夠請求 頁面調(diào)動程序。0(缺省值)會導(dǎo)致目標(biāo)寬度被環(huán)境變量COLUMNS控制, 若未設(shè)置COLUMNS或者回事檢測到的屏幕寬度。另外,如果 columns為0,那么wrapped格式僅影響屏幕輸出。如果 columns是非零的那么文件和管輸出也會包裝為那個寬度。

border

value必須是一個數(shù)字。 通常,數(shù)字越大,表就有越寬的邊界和越多的線,但是這個參數(shù)取決于實際的格式。 在HTML模式里,這個參數(shù)會直接翻譯成border=...屬性, 在其它的模式里,只有值0(無邊界)、1(內(nèi)部分隔線)、2(表框架)有意義。

linestyle

設(shè)置邊界線條格式為ascii, old-ascii 或者unicode中的一種。允許唯一縮略詞。 (那意味著一個字母就足夠了。)缺省設(shè)置為ascii。 該選項僅影響alignedwrapped的輸出格式。

ascii格式使用純ASCII字符。數(shù)據(jù)中的 換行符通過使用右側(cè)空白中的一個+來顯示。當(dāng) wrapped格式從一行中封裝數(shù)據(jù)到下一行而沒有換行符, 一個點(.) 會顯示在首行的右側(cè)空白中,并且會再次出現(xiàn)在接下來一行 的事務(wù)左側(cè)空白處。

old-ascii格式使用純ASCII字符,通過使用 在PostgreSQL8.4以及更早期版本中使用的格式風(fēng)格。 數(shù)據(jù)中的換行符通過使用一個:符號來顯示而不是左邊欄的分隔符。 當(dāng)數(shù)據(jù)從一行被封裝到下一行而沒有一個換行符,一個;符號 是用來代替左邊的列分隔符。

unicode格式使用Unicode盒繪圖字符。在數(shù)據(jù)中的換行符通過使用 左側(cè)空白中的回車符號來顯示。當(dāng)數(shù)據(jù)被從一個行封裝到下一個而沒有一個換行符, 一個省略符會顯示在首行的左側(cè)空白中,并且會再次在以下行的左側(cè)空白中。

當(dāng)border設(shè)置比0大時,該選項也決定用來畫邊界線的字符。 純ASCII字符到處適用,但是Unicode字符在能識別它 們的顯示中看起來更好。

expanded (or x)

如果value已被指定, 那它必須是on或者off, 這將啟用或者禁用擴展模式。如果value 被略去了常規(guī)和擴展模式之間的切換命令。當(dāng)啟用擴展模式,查詢結(jié)果會在兩列中顯示, 列名稱會在左邊列顯示而數(shù)據(jù)會在右邊一列顯示。若數(shù)據(jù)不匹配常規(guī)"horizontal" 模式下的屏幕,該模式是有效的。

null

設(shè)置字符串在一個空值的地方打印。默認(rèn)是什么都不打印,這很容易被誤認(rèn)為是一個空 字符串。例如:有人可能會更喜歡\pset null '(null)'。

fieldsep

聲明在非對齊模式時的域分隔符。這樣就可以創(chuàng)建其它程序希望的制表符或逗號 分隔的輸出。要設(shè)置制表符域分隔符, 鍵入\pset fieldsep'\t'。缺省域分隔符是'|'(豎條符)。

footer

如果指定value,那么必須是 on或者off,這將啟用或者關(guān)閉表腳碼 的顯示((n rows)也算)。如果 value省略切換頁腳顯示打開或關(guān)閉 的命令。

numericlocale

如果指定value,那么必須是 on或者off,這將啟用或者關(guān)閉表腳碼 的顯示((n rows)也算)。如果 value省略定期和特定于地區(qū) 的數(shù)字輸出之間的命令切換。

recordsep

聲明在非對齊模式時的記錄分隔符。缺省是換行符。

tuples_only (or t)

如果指定value,那么必須是 on或者off,這將啟用或禁用只有元組的模式。 如果value省略定期和僅元組輸出之間的命令。 常規(guī)的輸出包括額外的信息,如列標(biāo)題、標(biāo)題和各種頁腳。在僅元組模式中,僅顯示實際表數(shù)據(jù)。

title

為任何隨后打印的表設(shè)置標(biāo)題。這個參數(shù)可以用于給你的輸出一個描述性標(biāo)記。 如果不帶value,重置標(biāo)題。

tableattr (or T)

聲明放在HTML table標(biāo)簽里的任何屬性 (例如cellpaddingbgcolor)。注意, 你可能不需要在這里聲明border, 因為已經(jīng)在\pset border里用過了。 如果沒有給定value,表屬性會被復(fù)原。

pager

控制查詢和psql幫助輸出的分頁器。 如果設(shè)置了環(huán)境變量PAGER, 那么輸出被定向到指定程序,否則使用系統(tǒng)缺省(比如more)。

當(dāng)pager選項是off,分頁器不會被使用。 當(dāng)pager選項是on,分頁器在適當(dāng)?shù)臅r候使用,如: 當(dāng)輸出是一個終端并且不適合屏幕時。pager選項也可以被設(shè)置為 always,這會使得分頁器用于所有的終端而不管是否是適合屏幕的。 沒有一個value\pset pager 切換分頁器啟動和關(guān)閉。

可以在例子例子小節(jié)看到這些不同格式輸出的示例。

Tip: 有很多用于\pset的快速命令。參閱\a, \C\H, \t,\T\x。

Note: 無參數(shù)運行\pset是錯誤的。以后這樣調(diào)用將顯示當(dāng)前打印選項狀態(tài)。

\q

退出psql程序。

\qecho text [ ... ]

這條命令等效于\echo, 區(qū)別是所有輸出將寫入由\o設(shè)置的輸出通道。

\r

重置(清空)查詢緩沖區(qū)。

\s [ filename ]

將命令行歷史打印出或是存放到filename。 如果省略則輸出到標(biāo)準(zhǔn)輸出。這個選項只有在psql 配置成使用GNU Readline庫后才生效。

\set [ name [ value [ ... ] ] ]

設(shè)置內(nèi)部變量namevalue或者如果給出了多于一個值, 設(shè)置為所有這些值的連接結(jié)果。如果沒有給出第二個參數(shù), 那么只設(shè)變量不設(shè)值。要重置一個變量,使用\unset命令。

有效的變量名可以包含字符,數(shù)字和下劃線。參閱下面的變量變量 獲取細(xì)節(jié)。

盡管你可以設(shè)置任何變量為任意值,psql對一些變量特殊對待。 它們在關(guān)于變量的小節(jié)里面有文檔。

Note: 這條命令和SQL命令SET是完全不一樣的。

\t

切換輸出的字段名的信息頭和行記數(shù)腳注。 這條命令等效于\pset tuples_only,提供它主要為了方便。

\T table_options

在使用HTML輸出 模式時聲明放在table標(biāo)記里的屬性。 這條命令等效于\pset tableattr table_options。

\timing [ on | off ]

沒有參數(shù),切換每個SQL語句需要時間的顯示,以毫秒為單位。通過參數(shù)設(shè)置名稱。

\w filename
\w |command

將當(dāng)前查詢緩沖區(qū)輸出到文件filename或者重定向到Unix 命令command。

\x

切換擴展行格式。等效于\pset expanded。

\z [ pattern ]

通過相關(guān)訪問權(quán)限列出表、視圖和序列。如果指定 pattern, 則僅列出名稱匹配模式的表、視圖和序列。

這是\dp("顯示權(quán)限")的別名。

\! [ command ]

返回到一個單獨的Unix shell或者 執(zhí)行Unix命令command。 參數(shù)不會被進(jìn)一步解釋;shell將看到全部參數(shù)。

\?

獲得關(guān)于反斜杠命令的幫助信息。

Patterns

各種\d命令都接受一個pattern參數(shù), 聲明要顯示的對象名字。最簡單的情況下pattern正好等于對象的名字。 pattern中的字符通常會被自動轉(zhuǎn)換成小寫,就像SQL名字一樣。 例如\dt FOO將顯示名為foo的表。 與在SQL名字中相同的是雙 引號界定的pattern將保持原樣(不做大小寫轉(zhuǎn)換)。 如果需要在雙引號界定的pattern中使用雙引號字符, 你可以寫兩個并列的雙引號,這與 SQL 的引號規(guī)則相同。 例如,\dt "FOO""BAR"將會顯示名為FOO"BAR的表, 但是不會顯示foo"bar。與一般的SQL名字規(guī)則不同的是, 你可以僅用雙引號界定名字的一部分,例如\dt FOO"FOO"BAR將顯示 名為fooFOObar的表。

每當(dāng)pattern完全省略時,\d命令 顯示所有在當(dāng)前模式搜索路徑下可見的對象;這相當(dāng)于使用*作為模式。(一個對象會 認(rèn)為是visible,如果其包含模式在搜索路徑下并且沒有相同的類型和名稱的對象會 在搜索路徑中出現(xiàn)地更早。這等效于聲明這個對象可以通過名稱引用而沒有顯式的模式的條件。) 為了看數(shù)據(jù)庫中的所有對象而不關(guān)閉可見性,使用*.*作為模式。

Pattern中的*表示任何字符序列, 包括沒有字符,而?表示"任何單個字符"。 這個表示法和Unix的shell文件名模式兼容。 比如\dt int*顯示所有名字以int開頭的表。 但是在雙引號內(nèi)部的*?不具有匹配的功能, 它們只代表自身。

包含點(.)的pattern將被解釋成模式名pattern后面跟一 個對象名 pattern 。例如,\dt foo*.*bar*顯 示所有名字包括foo 的模式中的所有名字以bar開頭的表。如果沒有出現(xiàn)句點, 那么這個模式只匹配在當(dāng)前模式搜索路徑中可見的對象。 同樣,在雙引號內(nèi)的點沒有這個含義,它只代表其自身。

還可以使用正則表達(dá)式語法,比如字符類等等。例如用[0-9]匹配所有數(shù)字。 除.之外的所有正則表達(dá)式中的特殊字符都按照Section 9.7.3里面描述的規(guī)則進(jìn)行解析, 此外,*將被理解成.*,同時?將被理解成.,and $ which is matched literally。這樣一來, 你就可以用?代替.、用(R+|)代替 R*、 用(R|) 代替R?。 $不需要作為一個正則表達(dá)式,因為模式必須匹配整個名稱,與正則表達(dá)式的常規(guī)解釋不通 (換句話說,$會自動加到您的模式中)。在開頭和/或末尾寫*,如果您 不希望該模式被固定。 需要注意的是在雙引號內(nèi)部的所有正則表達(dá)式特殊字符都將失去其特殊含義。 同樣,在對操作符(也就是作為\do參數(shù)的時候)進(jìn)行匹配時正則表達(dá)式特殊字符也將失去其特殊 含義。

高級特性

變量

psql提供類似通常Unix命令shell那樣的變量替換特性。 變量只是簡單的名稱/值對,這里的值可以是任何長度的任何值。 可以使用psql元命令\set設(shè)置一個變量:

testdb=> \set foo bar

把變量foo的值設(shè)置為bar。要檢索變量的內(nèi)容, 在變量名前面放上冒號然后把它用在任意斜杠命令里:

testdb=> \echo :foo
bar

Note: \set的參數(shù)服從和其它命令一樣的替換規(guī)則。因此你可以構(gòu)造有趣的引用, 像\set :foo 'something'這樣,獲得分別像PerlPHP那樣 有名的"軟連接""變量變量"。不幸(或者萬幸?)的是, 用這些構(gòu)造不能做任何有用的事情。 另一方面,\set bar :foo是一個非常有效的拷貝變量的方法。

如果你不帶第二個參數(shù)調(diào)用\set, 那么只是設(shè)置這個變量而沒有值。 要重置(或刪除)一個變量,使用\unset命令。

psql的內(nèi)部變量可以 包括任意順序和數(shù)量的字母、數(shù)字、下劃線。 有一些常用變量被psql特殊相待。它們是一些選項設(shè)置, 這些選項在運行時可以通過改變變量的值或者改變一些應(yīng)用的表現(xiàn)狀態(tài)而改變。 盡管你可以把這些變量用于其它用途,但是不鼓勵這么做, 因為程序的特性可能會變得非常奇怪。通常, 所有特殊對待的變量都是由大寫字母組成(可能還有數(shù)字和下劃線)。 為了保證和未來的最大限度的兼容性,請避免使用這樣的變量。 下面是一個所有特殊對待的變量列表。

AUTOCOMMIT

如果是on(缺省),那么每個SQL命令都在成功完成后自動提交。 要推遲這種模式下的提交,你必須輸入一個BEGINSTART TRANSACTION命令。 如果是off或者未設(shè)置,SQL命令不會提交, 直到你明確地發(fā)出COMMITEND。 關(guān)閉自動提交的模式是通過為你明確發(fā)出一個BEGIN實現(xiàn)的, 它是放在任何尚未在一個事務(wù)塊中并且自己不是 BEGIN或其它事務(wù)控制命令 也不是那些不能在事務(wù)塊里執(zhí)行的命令(比如VACUUM)的前面。

Note: 在關(guān)閉自動提交的模式下,你必須明確放棄任何失敗的事務(wù), 方法是執(zhí)行ABORTROLLBACK。還要注意, 如果你不提交就退出會話,所做的工作會丟失。

Note: 打開自動提交是PostgreSQL的傳統(tǒng)行為, 但是關(guān)閉自動提交更接近SQL規(guī)范。 你可以在系統(tǒng)范圍的psqlrc~/.psqlrc文件中關(guān)閉自動提交。

DBNAME

正在連接著的數(shù)據(jù)庫名稱。每次與一個數(shù) 據(jù)庫聯(lián)結(jié)都會設(shè)置這個值(包括程序啟動), 但是可以刪除。

ECHO

如果設(shè)為all,那么來自鍵盤或腳本的所有輸入行在分 析或執(zhí)行前都回顯到標(biāo)準(zhǔn)輸出。使用-a選項聲明 在程序啟動時就默認(rèn)這樣做。如果設(shè)置為queries, 那么psql只是在查詢發(fā)送給服務(wù)器之前打印出來。 實現(xiàn)這個功能的命令行選項是-e。

ECHO_HIDDEN

當(dāng)設(shè)置了這個變量并且一個反斜杠命令查詢數(shù)據(jù)庫時, 首先顯示查詢。這樣你可以學(xué)習(xí) PostgreSQL 內(nèi)部的 東西并且在你自己的程序里提供類似功能。 要在程序一起動的時候就啟用這個行為, 可以使用-E選項。如果你設(shè)置該 變量的值為noexec, 那么查詢只是顯示出來但是實際上不發(fā)送到服務(wù)器去執(zhí)行。

ENCODING

當(dāng)前的客戶端字符集編碼。

FETCH_COUNT

如果該變量的值大于零, SELECT查詢的結(jié)果將按此值分批返回和顯示, 而不是缺省的一次取出和顯示所有結(jié)果。 這樣就可以無論結(jié)果集有多大都只使用很少量的內(nèi)存。 一般來說,設(shè)為100到1000之間的值比較合理。 需要注意的是,使用此特性后,一個查詢可能在顯示了一部分結(jié)果之后遭遇失敗。

Tip: 雖然該特性可以用于所有輸出格式。 但是并不適合在缺省的aligned格式上使用這個特性, 因為每一批結(jié)果會被單獨的分開格式化,這樣一來每一批輸出結(jié)果的列寬就可能各不相等。 不過對于其他格式這個特性工作的很好。

HISTCONTROL

如果將這個變量設(shè)為ignorespace, 那么以空格開始的行將不會進(jìn)入歷史列表。如果設(shè)置為ignoredups, 那么與以前歷史記錄里匹配的行也不會進(jìn)入歷史記錄。 值ignoredups是上面 兩個的結(jié)合。如果刪除此變量或者其值為任何與上面的值不同的東西, 所有交互模式讀入的行都被保存入歷史列表。

Note: 這個特性是從Bash偷學(xué)來的。

HISTFILE

此文件將用于存儲歷史列表。缺省值是~/.psql_history。 比如,在 ~/.psqlrc里使用:

\set HISTFILE ~/.psql_history- :DBNAME

將使得psql為每個數(shù)據(jù)庫維護一個獨立的歷史。

Note: 這個特性是從Bash偷學(xué)來的。

HISTSIZE

保存在命令歷史里的命令的個數(shù)。缺省值是500。

Note: 這個特性是從 Bash 偷學(xué)來的。

HOST

當(dāng)前你正連接的數(shù)據(jù)庫服務(wù)器主機。 這是在每次你與數(shù)據(jù)庫連接時(包括程序啟動)設(shè)置的,但是可以刪除。

IGNOREEOF

如果刪除此變量,向一個交互的psql會話發(fā)送 一個EOF(通常是 Control+D)將終止應(yīng)用。 如果設(shè)置為一個數(shù)字值,那么在應(yīng)用終止前該 數(shù)值的EOF字符將被忽略。如果設(shè)置了此變量但是沒有數(shù)字值,缺省是10。

Note: 這個特性是從 Bash 偷學(xué)來的。

LASTOID

最后影響的OID值,即為從一條INSERT\lo_import命令返回的值。 此變量只保證在下一條SQL命令的結(jié)果顯示之前有效。

ON_ERROR_ROLLBACK

如果是on,那么當(dāng)一個事務(wù)塊里的語句產(chǎn)生錯誤的時候, 這個錯誤將被忽略而事務(wù)將繼續(xù)。如果是interactive, 那么這樣的錯誤只是在交互的會話里忽略,而不是在從讀取腳本文件的時候。 如果是off(缺省),事務(wù)塊里一個語句生 成的錯誤將會回滾整個事務(wù)。 on_error_rollback-on的模式是通過 在一個事務(wù)塊的每個命令前為你隱含地發(fā)出一個SAVEPOINT的方 式工作的,在發(fā)生錯誤的時候回滾到該事務(wù)塊。

ON_ERROR_STOP

缺省時,如果非交互的腳本碰到一個錯誤 (比如一條錯誤的SQL命令或者內(nèi)部元命令), 處理會繼續(xù)進(jìn)行。這是psql的傳統(tǒng)特性,但 是有時候不太希望這樣。如果設(shè)置了這個變量,腳本處理將馬上停止。 如果該腳本是從另外一個腳本調(diào)用的,那個腳本也會按同樣的方式停止。 如果最外層的腳本不是從一次交互的psql會話 中調(diào)用的而是用-f選項調(diào)用的, psql將返回錯誤代碼3,以示這個 情況與致命錯誤條件的區(qū)別(錯誤代碼為1)。

PORT

當(dāng)前你正在連接的數(shù)據(jù)庫服務(wù)器的端口。 這是在每次你與數(shù)據(jù)庫連接時(包括程序啟動)設(shè)置的, 但是可以刪除。

PROMPT1
PROMPT2
PROMPT3

這些指明psql顯示的提示符看上去像什么。參閱下面的提示符提示符。

QUIET

這個變量等效于命令行選項-q??赡茉诮换ツJ较聸]有什么用。

SINGLELINE

這個變量等效于命令行選項 -S。

SINGLESTEP

這個變量等效于命令行選項 -s。

USER

當(dāng)前你正用于連接的數(shù)據(jù)庫用戶。 這是在每次你與數(shù)據(jù)庫連接時(包括程序啟動)設(shè)置的, 但是可以被刪除。

VERBOSITY

這個選項可以設(shè)置為值default, verbose,terse之一以控制錯誤報告的冗余行。 of error reports.

SQL代換

psql變量的一個額外的有用的特性是你可以替代 ("interpolate")它們?yōu)槌R?guī)的SQL語句。 psql提供特殊設(shè)施確保值用作SQL文本并且標(biāo)識符是正確轉(zhuǎn)義的。 插入一個沒有任何特殊轉(zhuǎn)義的值的語法會再次來預(yù)先考慮有冒號(:)的變量名:

testdb=> \set foo 'my_table'
testdb=> SELECT * FROM :foo;

那么會查詢表my_table。請注意這是不安全的:該變量的值是隨便復(fù)制的, 所以它甚至可以包含不平衡報價或反斜杠命令。您必須確保您設(shè)置的位置是由意義的。

當(dāng)一個值將用作一個SQL文本或標(biāo)識符,安排其轉(zhuǎn)義是最安全的。為了轉(zhuǎn)義一個變量的值為SQL文本, 寫一個冒號后跟單引號引起的變量名稱。為了將值轉(zhuǎn)義數(shù)值為一個SQL標(biāo)示符,寫一個冒號后跟 雙引號引起的變量名。前面的例子以這種方式編寫會更安全:

testdb=> \set foo 'my_table'
testdb=> SELECT * FROM :"foo";

變量插入將不會執(zhí)行到引證的SQL字符實體。

該原理的一個可能的應(yīng)用是將一個文件的內(nèi)容復(fù)制到一個表列中。首先加載文件到一個變量 人后按照以上執(zhí)行:

testdb=> \set content `cat my_file.txt`
testdb=> INSERT INTO my_table VALUES (:'content');

(請注意這仍將無法工作,若my_file.txt包含NUL字節(jié)。 psql不支持在變量值中內(nèi)嵌NUL字節(jié)。)

盡管冒號可以合法地出現(xiàn)在SQL命令中,插入時的一個明顯意圖(如:name, :'name', or :"name") 是不能更改的除非命名的變量 是當(dāng)前設(shè)置的。在任何情況下,您都可以通過加上一個反斜杠來轉(zhuǎn)義一個冒號來阻止其替換。 (變量的冒號語法是面向嵌入式查詢語言的標(biāo)準(zhǔn)SQL,如ECPG。) 面向數(shù)組切片和類型映射的冒號語法是PostgreSQL擴展, 因此沖突。轉(zhuǎn)義一個變量的值為SQL文本或者標(biāo)示符的冒號語法是一個psql 擴展。)

提示符

psql使用的提示符可以根據(jù)你的喜好自定義。 三個變量PROMPT1PROMPT2, PROMPT3包含描述提示符 的外觀的字符串和特殊逃逸序列。PROMPT1psql請求一 個新命令時使用的正常提示符。PROMPT2是在一個命令輸入期待 更多輸入時(因為查詢沒有用一個分號結(jié)束或者引號沒有關(guān)閉)顯示的提 示符。PROMPT3在你運行一個SQL COPY 命令和等待你在終端上鍵入記錄時使用。

相應(yīng)的提示符變量的值是按字面打印的, 除非碰到一個百分號(%)。 這時某些其它的文本被替換, 替換為何物取決于下一個字符。已定義的替換是:

%M

數(shù)據(jù)庫服務(wù)器全程主機名(帶著域名),如果連接是通過Unix域套接字 進(jìn)行的就是[local], 或者如果Unix域套接字不是編譯的缺省位置, 就是[local:/dir/name]

%m

數(shù)據(jù)庫服務(wù)器的主機名刪去第一個點后面的部分剩下的東西。 或者如果是通過Unix域套接字連接,就是[local]。

%>

數(shù)據(jù)庫服務(wù)器正在偵聽的端口號。

%n

數(shù)據(jù)庫會話的用戶名。這個值的擴展可能在一個數(shù) 據(jù)庫會話過程中因為SET SESSION AUTHORIZATION命令而改變。

%/

當(dāng)前數(shù)據(jù)庫名稱。

%~

類似%/,但如果數(shù)據(jù)庫是你的缺省數(shù)據(jù)庫輸出是波浪線~。

%#

如果會話用戶是數(shù)據(jù)庫超級用戶, 使用#,否則用>。這個值的擴展可能在一個數(shù)據(jù)庫會 話過程中因為SET SESSION AUTHORIZATION命令而改變。

%R

對于PROMPT1通常是=,但是如果是單行模式則是^, 而如果會話與數(shù)據(jù)庫斷開(如果\connect失敗可能發(fā)生)則是!。 對于PROMPT2該序列被-,*,一個單引號/雙引號/美 元符(取決于psql是否等待更多的輸入:查詢沒有終止、 正在一個/* ... */注 釋里、正在引號或者美元符擴展里)代替。 對于PROMPT3該序列不解釋成任何東西。

%x

事務(wù)狀態(tài):如果不在事務(wù)塊里則是一個空字符串, 如果在事務(wù)塊里則是*, 如果在一個失敗的事務(wù)塊里則是!,或者無 法判斷事務(wù)狀態(tài)時為?(比如沒有連接)。

%digits

指定字節(jié)值的字符將被替換到該位置。

%:name:

psql變量name的值。參閱變量變量小節(jié)獲取細(xì)節(jié)。

%`command`

command的輸出類似于通常的 "back-tick"替換。

%[ ... %]

提示可以包含終端控制字符,這些字符可以改變顏色、背景、提示文本 的風(fēng)格、終端窗口的標(biāo)題。為了讓Readline的行編輯特性正確運行, 這些不可打印的控制字符必須設(shè)計成不可見的,方法是用%[%]包 圍它們。在提示符里可能出現(xiàn)這些東西的多個配對。例如:

testdb=> \set PROMPT1 '%[%033[1;33;40m%]%n@%/%R%[%033[0m%]%# '

的結(jié)果是在VT100兼容的可顯示彩色的終端上的一個寬體(1;)黑 底黃字(33;40)。

鍵入%%可以在提示符里插入百分號。缺省提 示符為'%/%R%# '用于第一二個提 示符,'>> '用于第三個提示符。

Note: 這個特性是從tcsh偷學(xué)來的。

命令行編輯

psql為了編輯和檢索命令行的方便 支持Readline和歷史庫。 命令歷史在psql退出的時候自動保存, 在psql啟動的時候加載。還支持Tab補齊,盡管該補齊 邏輯并不是一個SQL分析器必備的。如果因某些 原因你不喜歡tab補齊,可以把下面幾行放在你的家目錄 下的.inputrc文件里關(guān)閉這個特性:

$if psql
set disable-completion on
$endif

(這不是psql而是 Readline的特性,參考它的文檔獲取更多細(xì)節(jié)。)

環(huán)境變量

COLUMNS

如果\pset columns為0,為wrapped格式控制寬度并且若廣泛的 說不出需要分頁器時為決定控制寬度。

PAGER

如果查詢結(jié)果不能一屏顯示出來,那么將通過該命令管道傳遞這些結(jié)果。 典型值更大或者更小的。默認(rèn)是基于 平臺的。分頁器的使用可以通過使用\pset命令來關(guān)閉。

PGDATABASE
PGHOST
PGPORT
PGUSER

缺省的連接參數(shù)(請參閱Section 31.13)。

PSQL_EDITOR
EDITOR
VISUAL

\e命令使用的編輯器。這些變量是按照上面的順序檢查的;設(shè)置最早的最先使用。

SHELL

\!命令執(zhí)行的命令。

TMPDIR

存儲臨時文件的目錄。缺省是 /tmp.

該實用程序,跟大部分PostgreSQL實用程序一樣,也使用libpq 所支持的環(huán)境變量(請參閱Section 31.13)。

文件

  • 除非已通過一個-X或者-c選項通過, psql試圖在開機之前從整個系統(tǒng)的psqlrc文件和用戶的 ~/.psqlrc文件讀和執(zhí)行命令。(在Windows中,用戶的啟動文件被命名為 %APPDATA%\postgresql\psqlrc.conf。)參閱 PREFIX/share/psqlrc.sample獲取關(guān)于設(shè)置全系統(tǒng)文件的信息。 它可以用來按需要建立客戶端或服務(wù)器端(使用 \setSET 命令)。

  • 系統(tǒng)范圍的psqlrc和用戶自己的~/.psqlrc都可以通過在 后面附著一個劃線和PostgreSQL版本號的方法變得與版本相關(guān), 比如~/.psqlrc-9.0.4。匹配版本相關(guān)的文件比無版本的文件優(yōu)先讀取。

  • 命令行歷史存儲在~/.psql_history文件中,或者在Windows里 是%APPDATA%\postgresql\psql_history文件。

注意

  • In an earlier life psql allowed the first argument of a single-letter backslash command to start directly after the command, without intervening whitespace. As of PostgreSQL 8.4 this is no longer allowed.

  • psql僅保證與相同版本的服務(wù)器運行良好。 這并不意味著其他組合將直接失敗,但是可能會出現(xiàn)微妙的和直觀的問題。 反斜杠命令尤其可能失敗,如果服務(wù)器是一個比psql本身更新的版本。 然而,\d系列的反斜杠命令應(yīng)該對退回到7.4版本的服務(wù)器起作用, 雖然未必與比psql本身更新版本的起作用。

Windows用戶需要注意的地方

psql是以一種"控制臺應(yīng)用"的方式制作的。 因為Windows控制臺窗口和系統(tǒng)其它部分使用不同 的編碼,所以在psql里使用8位字符的時候 必須采取特殊的注意措施。如果psql檢測到一個有 問題的控制臺代碼頁,那么它在啟動的時候會警告你。 要修改控制臺代碼頁,有兩件事是必須做的:

  • 通過輸入cmd.exe /c chcp 1252設(shè)置代碼頁。 1252是適用于德語的代碼頁;請換成合適你的數(shù)值, 比如中文GB2312的代碼頁是936。如果你使用Cygwin, 你可以在/etc/profile里面輸入這條命令。

  • 控制臺字體設(shè)置為Lucida Console,因為光柵字體(點陣字體)不能在ANSI代碼頁下工作。

例子

第一個例子演示了如何把一個查詢分成多個行進(jìn)行輸入。注意提示符的變化:

testdb=> CREATE TABLE my_table (
testdb(>  first integer not null default 0,
testdb(>  second text)
testdb-> ;
CREATE TABLE

現(xiàn)在再看看表定義:

testdb=> \d my_table
             Table "my_table"
 Attribute |  Type   |      Modifier
-----------+---------+--------------------
 first     | integer | not null default 0
 second    | text    |

把提示符變成更有趣的東西:

testdb=> \set PROMPT1 '%n@%m %~%R%# '
peter@localhost testdb=>

假設(shè)你用數(shù)據(jù)填充了表并且想看一眼:

peter@localhost testdb=> SELECT * FROM my_table;
 first | second
-------+--------
     1 | one
     2 | two
     3 | three
     4 | four
(4 rows)

你可以用\pset命令以不同的方法顯示表:

peter@localhost testdb=> \pset border 2
Border style is 2.
peter@localhost testdb=> SELECT * FROM my_table;
+-------+--------+
| first | second |
+-------+--------+
|     1 | one    |
|     2 | two    |
|     3 | three  |
|     4 | four   |
+-------+--------+
(4 rows)

peter@localhost testdb=> \pset border 0
Border style is 0.
peter@localhost testdb=> SELECT * FROM my_table;
first second
----- ------
    1 one
    2 two
    3 three
    4 four
(4 rows)

peter@localhost testdb=> \pset border 1
Border style is 1.
peter@localhost testdb=> \pset format unaligned
Output format is unaligned.
peter@localhost testdb=> \pset fieldsep ","
Field separator is ",".
peter@localhost testdb=> \pset tuples_only
Showing only tuples.
peter@localhost testdb=> SELECT second, first FROM my_table;
one,1
two,2
three,3
four,4

還可以用短(縮寫)命令:

peter@localhost testdb=> \a \t \x
Output format is aligned.
Tuples only is off.
Expanded display is on.
peter@localhost testdb=> SELECT * FROM my_table;
-[ RECORD 1 ]-
first  | 1
second | one
-[ RECORD 2 ]-
first  | 2
second | two
-[ RECORD 3 ]-
first  | 3
second | three
-[ RECORD 4 ]-
first  | 4
second | four

Previous article: Next article: