日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL的实践一:初识

發布時間:2025/4/16 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL的实践一:初识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

簡介和認知

發音

post-gres-q-l

服務(server)

一個操作系統中可以啟動多個postgres服務。
每個服務由多個進程組成,為首的進程名為postmaster。
每個服務要占用一個端口,多個服務不能共享端口。
每個服務都有一個data目錄用于存放數據,目錄不允許修改,否則會破壞數據庫,并且無法修復。
服務使用4字節長的內部事務標識符,即時發生重疊后仍然繼續使用,這會導致問題,所以需要定期進行VACUUM操作。

數據庫(database)

一個服務中可以擁有多個數據庫。
數據庫默認是任何用戶可連接的,創建好后需要修改相應的權限。
數據庫之間的數據是隔離的,不能進行聯表。
數據庫默認的數據塊大小為8192。

模式(schema)

一個數據庫中可以有多個模式,模式相當于表的命名空間,類似于mysql中的database,可以使用帶模式的完整名稱來訪問或者創建對象。
不同模式之間的表是可以聯表查詢的。
可以通過對用戶設置search_path參數來指定默認搜索的模式。

表(table)

一個模式中可以有多張表。
表是由多個關系元素組成的,大字段數據放在另一個名為TOAST的表中,每張表都有一個TOAST表和TOAST索引。
用雙引號括起來的表和沒用雙引號括起來的表是不一樣的,即使名字一樣。
雙引號括起來的表區分大小寫,沒用雙引號括起來的表不區分大小寫。

列(column)

每張表都由許多列組成,每一列有一個列名、類型、默認值等屬性,用來存儲每一條記錄中的各種值。
文本類型統一由一種數據類型存儲,支持長度從1B到1G,經過優化,存儲少的時候很高效,存儲多的時候會自動管理和壓縮。
自增類型serial本質上就是整數,通過創建并關聯到一個SEQUENCE類型的對象來記錄自增值。

表空間(tablespace)

默認情況下,所有的數據都會放在postgres指定的data目錄下,通過定義表空間,可以讓postgres將數據存放在不同的設備上。
表空間是通過軟鏈接來實現的。
建議為每個數據庫設立一個單獨的表空間,尤其是不同數據庫中有同名的模式或者表的時候。
postgres=# CREATE TABLESPACE tbs LOCATION '/usr/local/tbs';

視圖(view)

視圖本質上是預定義好的一個sql查詢,以一張表的形式給出,在每次調用時都會執行相應的sql查詢。
postgres=# CREATE VIEW view AS SELECT * FROM tb;

當視圖足夠簡單的時候,postgres是支持視圖更新的,相應的更新會傳遞到相應的表中。
還可以使用INSTEAD OF觸發器或者規則來實現視圖更新,請參考具體的操作手冊。
物化視圖可以預先將數據查詢出來,這樣調用的時候就不必反復查詢了,更新需要手動更新。
postgres=# CREATE MATERIALIZED VIEW view AS SELECT * FROM tb;
postgres=# REFRESH MATERIALIZED VIEW view;

行(row)

行即表中的一條數據。
postgres中每個行都有一個行版本,而且還有兩個系統列xmin和xmax,分別標示這個行被創建和刪除的事務。
刪除時,設置xmax為刪除事務號,不會實際執行刪除。
UPDATE操作被認為是緊跟INSERT操作后的DELETE操作。
索引(index)
索引可以用來給表添加約束或者提高查詢速度。
在涉及高比例插入刪除的表中,會造成索引膨脹,這時候可以重建索引。

reindexdb

創建CONCURRENTLY索引時不會持有全表鎖,這條指令分成兩個步驟,第一部分創建索引并標記為不可用,這時候INSERT、UPDATE、DELETE操作已經開始維護索引了,但是查詢不能使用索引。建立完畢后才會被標記為可用。
postgres=# CREATE CONCURRENTLY INDEX index ON tb(id);

可以手工設置索引的可用性。

UPDATE pg_index SET indisvalid = false WHERE indexrelid = index::regclass;

pgsql 中表空間/數據庫/模式 的關系

表空間是物理結構,同一表空間下可以有多個數據庫
數據庫是邏輯結構,是表/索引/視圖/存儲過程的集合,一個數據庫下可以有多個schema
模式是邏輯結構,是對數據庫的邏輯劃分

安裝

# vist https://www.postgresql.org/download/ # Interactive installer by EnterpriseDB -> 選擇10.5版本的Windows x86-64下載 1. 一路的next安裝,當然你可以自己選擇安裝的目錄 2. 提示輸入postgres帳號的密碼,你可以根據自己的喜好,設置一個,比如這里我設置了:123456 2. 提示安裝插件擴展,取消即可,暫時不需要安裝

psql客戶端簡單實用

連接

# $MY_POSTGRES_PATH = D:\PostgreSQL; 這個環境參數代表我安裝的Postgresql服務器所在的目錄 # $MY_POSTGRES_PATH/bin/psql -U postgres $MY_POSTGRES_PATH/bin/scripts/runpsql # 依次默認回車,如果有需要調整參數,你可以自定義 # 輸入123456#output Server [localhost]: Database [postgres]: Port [5432]: Username [postgres]: 用戶 postgres 的口令: psql (10.5) 輸入 "help" 來獲取幫助信息. postgres=## 輸入help得到以下提示 postgres=# help 您正在使用psql, 這是一種用于訪問PostgreSQL的命令行界面 鍵入: \copyright 顯示發行條款\h 顯示 SQL 命令的說明\? 顯示 pgsql 命令的說明\g 或者以分號(;)結尾以執行查詢\q 退出 postgres=## \l 查看已存在的數據庫 postgres-# \l數據庫列表名稱 | 擁有者 | 字元編碼 | 校對規則 | Ctype | 存取權限 -----------+----------+----------+-----------------------------------------------------+-----------------------------------------------------+-----------------------postgres | postgres | UTF8 | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 |template0 | postgres | UTF8 | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 | =c/postgres +| | | | | postgres=CTc/postgrestemplate1 | postgres | UTF8 | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 | =c/postgres +| | | | | postgres=CTc/postgres (3 行記錄)# 我們可以發現默認存在postgres、template0和template1數據庫,template`X`是模板數據庫 # template1為可修改模版庫,template0為不可修改模版庫

創建數據庫

postgres=# create database testdb; # CREATE DATABASE# \c = \connect postgres=# \c testdb; # 您現在已經連接到數據庫 "testdb",用戶 "postgres".

創建表

# 查看表 testdb=# \d # Did not find any relations.# 創建表 testdb=# create table test1(id int primary key, name varchar(50)); # CREATE TABLEtestdb=# \d關聯列表架構模式 | 名稱 | 類型 | 擁有者 ----------+-------+--------+----------public | test1 | 數據表 | postgres (1 行記錄) # 架構模式(schema)我們后續會講,暫時你可以先理解為一個數據庫邏輯分類的概念,默認創建數據庫都會有一個public的schema

常規顯示設置

# 設置顯示查詢時間 \timing on # 設置border的邊框內外都有 \pset border 2 # 查看編碼 \encoding # 設置編碼 \encoding UTF8 # 開啟擴展顯示,縱向打印每列數據 \x # 例子: testdb=# select * from test1; +-[ RECORD 1 ]-+ | id | 1 | | name | qkl | +------+-----+# 設置命令執行的真正sql:on打開 off關閉 \set ECHO_HIDDEN on \set ECHO_HIDDEN off # 案例: testdb=# \set ECHO_HIDDEN on testdb=# \d ********* 查詢 ********** SELECT n.nspname as "Schema",c.relname as "Name",CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' T HEN 'foreign table' WHEN 'p' THEN 'table' END as "Type",pg_catalog.pg_get_userbyid(c.relowner) as "Owner" FROM pg_catalog.pg_class cLEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','p','v','m','S','f','')AND n.nspname <> 'pg_catalog'AND n.nspname <> 'information_schema'AND n.nspname !~ '^pg_toast'AND pg_catalog.pg_table_is_visible(c.oid) ORDER BY 1,2; **************************關聯列表 +-[ RECORD 1 ]--------+ | 架構模式 | public | | 名稱 | test1 | | 類型 | 數據表 | | 擁有者 | postgres | +----------+----------+

常用命令

testdb-# \? 一般性\copyright 顯示PostgreSQL的使用和發行許可條款\crosstabview [COLUMNS] 執行查詢并且以交叉表顯示結果\errverbose 以最冗長的形式顯示最近的錯誤消息\g [文件] or; 執行查詢 (并把結果寫入文件或 |管道)\gexec 執行策略,然后執行其結果中的每個值\gset [PREFIX] 執行查詢并把結果存到psql變量中\gx [FILE] as \g, but forces expanded output mode\q 退出 psql\watch [SEC] 每隔SEC秒執行一次查詢幫助\? [commands] 顯示反斜線命令的幫助\? options 顯示 psql 命令行選項的幫助\? variables 顯示特殊變量的幫助\h [名稱] SQL命令語法上的說明,用*顯示全部命令的語法說明查詢緩存區\e [FILE] [LINE] 使用外部編輯器編輯查詢緩存區(或文件)\ef [FUNCNAME [LINE]] 使用外部編輯器編輯函數定義\ev [VIEWNAME [LINE]] 用外部編輯器編輯視圖定義\p 顯示查詢緩存區的內容\r 重置(清除)查詢緩存區\w 文件 將查詢緩存區的內容寫入文件輸入/輸出\copy ... 執行 SQL COPY,將數據流發送到客戶端主機\echo [字符串] 將字符串寫到標準輸出\i 文件 從文件中執行命令\ir FILE 與 \i類似, 但是相對于當前腳本的位置\o [文件] 將全部查詢結果寫入文件或 |管道\qecho [字符串] 將字符串寫到查詢輸出串流(參考 \o)Conditional\if EXPR begin conditional block\elif EXPR alternative within current conditional block\else final alternative within current conditional block\endif end conditional block資訊性(選項: S = 顯示系統對象, + = 其余的詳細信息)\d[S+] 列出表,視圖和序列\d[S+] 名稱 描述表,視圖,序列,或索引\da[S] [模式] 列出聚合函數\dA[+] [PATTERN] list access methods\db[+] [模式] 列出表空間\dc[S+] [PATTERN] 列表轉換\dC[+] [PATTERN] 列出類型強制轉換\dd[S] [PATTERN] 顯示沒有在別處顯示的對象描述\dD[S+] [PATTERN] 列出共同值域\ddp [模式] 列出默認權限\dE[S+] [PATTERN] 列出引用表\det[+] [PATTERN] 列出引用表\des[+] [模式] 列出外部服務器\deu[+] [模式] 列出用戶映射\dew[+] [模式] 列出外部數據封裝器\df[antw][S+] [模式] 列出[只包括 聚合/常規/觸發器/窗口]函數\dF[+] [模式] 列出文本搜索配置\dFd[+] [模式] 列出文本搜索字典\dFp[+] [模式] 列出文本搜索解析器\dFt[+] [模式] 列出文本搜索模版\dg[S+] [PATTERN] 列出角色\di[S+] [模式] 列出索引\dl 列出大對象, 功能與\lo_list相同\dL[S+] [PATTERN] 列出所有過程語言\dm[S+] [PATTERN] 列出所有物化視圖\dn[S+] [PATTERN] 列出所有模式\do[S] [模式] 列出運算符\dO[S+] [PATTERN] 列出所有校對規則\dp [模式] 列出表,視圖和序列的訪問權限\drds [模式1 [模式2]] 列出每個數據庫的角色設置\dRp[+] [PATTERN] list replication publications\dRs[+] [PATTERN] list replication subscriptions\ds[S+] [模式] 列出序列\dt[S+] [模式] 列出表\dT[S+] [模式] 列出數據類型\du[S+] [PATTERN] 列出角色\dv[S+] [模式] 列出視圖\dx[+] [PATTERN] 列出擴展\dy [PATTERN] 列出所有事件觸發器\l[+] [PATTERN] 列出所有數據庫\sf[+] FUNCNAME 顯示一個函數的定義\sv[+] VIEWNAME 顯示一個視圖的定義\z [模式] 和\dp的功能相同格式化\a 在非對齊模式和對齊模式之間切換\C [字符串] 設置表的標題,或如果沒有的標題就取消\f [字符串] 顯示或設定非對齊模式查詢輸出的字段分隔符\H 切換HTML輸出模式 (目前是 關閉)\pset [NAME [VALUE]] set table output option(NAME := {border|columns|expanded|fieldsep|fieldsep_zero|footer|format|linestyle|null|numericlocale|pager|pager_min_lines|recordsep|recordsep_zero|tableattr|title|tuples_only|unicode_border_linestyle|unicode_column_linestyle|unicode_header_linestyle})\t [開|關] 只顯示記錄 (目前是 關閉)\T [字符串] 設置HTML <表格>標簽屬性, 或者如果沒有的話取消設置\x [on|off|auto] 切換擴展輸出模式(目前是 關閉)連接\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}連接到新數據庫(當前是"testdb")\conninfo 顯示當前連接的相關信息\encoding [編碼名稱] 顯示或設定客戶端編碼\password [USERNAME] 安全地為用戶更改口令操作系統\cd [目錄] 更改目前的工作目錄\setenv NAME [VALUE] 設置或清空環境變量\timing [開|關] 切換命令計時開關 (目前是 開啟)\! [命令] 在 shell中執行命令或啟動一個交互式shell變量\prompt [文本] 名稱 提示用戶設定內部變量\set [名稱 [值數]] 設定內部變量,若無參數則列出全部變量\unset 名稱 清空(刪除)內部變量大對象\lo_export LOBOID 文件\lo_import 文件 [注釋]\lo_list\lo_unlink LOBOID 大對象運算 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的PostgreSQL的实践一:初识的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色网址在线免费播放 | 性www| 91视频在线观看 | 日韩夫妻性生活 | 日韩色视频在线观看 | 浪荡奴双性跪着伺候 | 制服丝袜一区二区三区 | 亚洲国产成人在线观看 | 亚洲综合五月天 | 福利国产视频 | 日韩精品一区二区在线观看 | 免费毛片视频 | 青青草国产在线观看 | 欧美一区二区免费电影 | 国产女在线 | 素人女裸体| 国产三级三级在线观看 | 337p嫩模大胆色肉噜噜噜 | 丁香花在线影院观看在线播放 | av十大美巨乳 | 少妇高潮毛片 | 中文字幕一区二区久久人妻网站 | 欧美国产一级片 | 色噜噜网站 | 国产免费网址 | 午夜看看| 成人在线播放视频 | 狠狠躁日日躁夜夜躁 | 干成人网| 冲田杏梨在线 | 国产视频分类 | 国产一区二区三区成人 | 女人高潮娇喘1分47秒 | 噜噜噜久久久 | 国产精品5区 | 人体裸体bbbbb欣赏 | 日韩一级片在线 | 波多野结衣在线看 | 日本熟妇浓毛 | 激情播播网 | 春色伊人| 欧美在线视频网站 | 国产野外作爱视频播放 | 精品综合久久 | 国产成年人 | 成人免费看片视频 | 亚洲网址在线 | 在线观看污网站 | 成人黄色片网站 | 风韵多水的老熟妇 | 国产无套粉嫩白浆内谢 | 久久福利网| 国产做受高潮动漫 | 肉色丝袜小早川怜子av | av噜噜色 | 一级黄色录像免费观看 | 精品无码一区二区三区蜜臀 | 一级a毛片免费观看久久精品 | 日韩v | 久爱视频在线 | 美女一区二区三区视频 | 亚洲一区在线不卡 | 乌克兰做爰xxxⅹ性视频 | 欧美色图综合网 | 污视频软件在线观看 | 91亚洲天堂| 亚洲成人第一区 | 亚洲综合一区在线观看 | 99久久精品免费看国产免费软件 | 一区二区影院 | 91精品视频免费在线观看 | 国产伊人网 | 国产免费观看视频 | 狠狠搞视频| 激情亚洲视频 | 欧美精品一区三区 | 欧美高清日韩 | 干一干操一操 | 国产高清精品在线观看 | 日本精品成人 | 日韩欧美一区在线观看 | 亚洲人成在线免费观看 | 欧美乱码精品一区二区三区 | 亚洲高清视频一区二区 | 国语对白对话在线观看 | 久久97人妻无码一区二区三区 | 国产三级三级看三级 | av一级在线观看 | 手机看片一区二区三区 | 免费无码国产精品 | 国产激情视频在线 | 亚洲国产精品久久精品怡红院 | 九九九九九九精品 | 超碰91在线| 久色视频在线观看 | 久久久999视频 | 成人羞羞在线观看网站 | 在线一二区 | 久久人|