那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基本表會(huì)有哪些信息保存在系統(tǒng)表里

冬至子 ? 來源:苦寒行 ? 作者:苦寒行 ? 2022-11-15 16:29 ? 次閱讀

本文演示一下一張基本表會(huì)有哪些信息保存在系統(tǒng)表里,演示版本:PostgreSQL 15.1。

知識(shí)前提,熟悉文檔 System Catalogs 一章,了解系統(tǒng)表結(jié)構(gòu)。

1、初始化一個(gè)數(shù)據(jù)庫

用戶自定義對(duì)象的Oid是從16384開始的,因此用一個(gè)干凈庫會(huì)比較省事,也更容易看到自己的新數(shù)據(jù)。

使用舊庫也可以,但如果某些默認(rèn)值有過改動(dòng),而對(duì)PG又不夠了解,操作起來會(huì)麻煩些。本文目標(biāo)是新手,可能對(duì)PG本身的使用還不夠熟練,所以使用新庫更合適一些。

2、建表

創(chuàng)建一個(gè)非常普通,沒有更多元素的簡(jiǎn)單表:

CREATE TABLE t1 (
    c1 int,
    c2 float,
    c3 timestamp,
    c4 int[8]
) WITH (fillfactor=90);

特意選用4種常規(guī)的內(nèi)建類型,還有一個(gè)storage參數(shù)

3、表基本信息

postgres=# SELECT oid,relname,reloptions
postgres-#   FROM pg_class WHERE oid >=16384;
  oid  |       relname        |   reloptions
-------+----------------------+-----------------
 16388 | t1                   | {fillfactor=90}
 16406 | pg_toast_16388       |
 16407 | pg_toast_16388_index |
(3 rows)

表的oid是系統(tǒng)幫我們選的,名字和參數(shù)分別出現(xiàn)在另外兩個(gè)字段中,而其它未指定或者不能指定的屬性都會(huì)有自己的默認(rèn)值。

除了表本身,其它兩個(gè)是跟它有關(guān)的外儲(chǔ)表定義,網(wǎng)上有很多資料可以自行查看,暫不展開。

4、字段信息

需要用到在上一個(gè)步驟中查到的表oid

postgres=# SELECT attname,atttypid,attnum
postgres-#   FROM pg_attribute WHERE attrelid = 16388;
 attname  | atttypid | attnum
----------+----------+--------
 tableoid |       26 |     -6
 cmax     |       29 |     -5
 xmax     |       28 |     -4
 cmin     |       29 |     -3
 xmin     |       28 |     -2
 ctid     |       27 |     -1
 c1       |       23 |      1
 c2       |       25 |      2
 c3       |     1114 |      3
 c4       |     1007 |      4
(10 rows)

可以看到我們定義的四個(gè)字段,它們的順序 attnum 正好是我們的定義順序,對(duì)應(yīng)的類型oid正好是我們指定類型在pg_tpye中的定義,其它是系統(tǒng)字段,暫時(shí)略過。

4、表類型

這似乎是PG很特殊的地方,表本身也有兩個(gè)對(duì)應(yīng)的類型:

postgres=# SELECT oid,typname,typinput,typoutput,typrelid,typelem
postgres-#   FROM pg_type WHERE oid >= 16384;
  oid  | typname | typinput  | typoutput  | typrelid | typelem
-------+---------+-----------+------------+----------+---------
 16389 | _t1     | array_in  | array_out  |        0 |   16390
 16390 | t1      | record_in | record_out |    16388 |       0
(2 rows)

一個(gè)是表本身的類型,另一個(gè)是這個(gè)類型的數(shù)組類型,暫時(shí)知道也就可以了。

5、類型

沒有展開講,上個(gè)例子可以看到類型的輸入輸出函數(shù),這些函數(shù)跟其他函數(shù)一樣定義在 pg_proc 中。

以上邊用到的 timestamp 類型為例:

postgres=# SELECT oid,typname,typinput,typoutput
postgres-#   FROM pg_type WHERE oid = 1114;
 oid  |  typname  |   typinput   |   typoutput
------+-----------+--------------+---------------
 1114 | timestamp | timestamp_in | timestamp_out
(1 row)

它的輸入輸出函數(shù)定義:

postgres=# SELECT oid,proname,prorettype,proargtypes
postgres-#   FROM pg_proc WHERE proname in ('timestamp_in','timestamp_out');
 oid  |    proname    | prorettype | proargtypes
------+---------------+------------+-------------
 1312 | timestamp_in  |       1114 | 2275 26 23
 1313 | timestamp_out |       2275 | 1114
(2 rows)

輸入函數(shù)的返回類型,輸出函數(shù)的輸入類型,正好是我們的類型本身,關(guān)于類型以后再說。

可以看出,這四個(gè)表是相互依賴的:pg_class 本身需要在 pg_attribute 中保存自己的字段定義,還要在 pg_type 中保存類型定義,這些類型又用到 pg_proc 中的函數(shù)定義;pg_proc本身又需要在 pg_class和pg_attribute 中保存表和字段定義,又會(huì)需要 pg_type,類型定義甚至再需要 pg_proc。…… 因此,這四個(gè)系統(tǒng)表是PG系統(tǒng)表的最基本部分,以后講初始化再講更多。

審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OID
    OID
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    2318
  • postgresql
    +關(guān)注

    關(guān)注

    0

    文章

    22

    瀏覽量

    237
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    音頻信息是怎么保存和播放的?

    常用的音頻格式有哪幾種,我所了解的有mp3,WAV等,這些音頻資料信息是怎么保存在電腦硬盤上的,我所說的保存是指怎么以二進(jìn)制信息存儲(chǔ)的? 在音頻信息
    發(fā)表于 02-08 16:06

    Multisim數(shù)字萬用表里電流接入電路沒有示數(shù)是為什么

    這個(gè)數(shù)字萬用表里的電流接入電路沒有示數(shù),但是感覺我的電路也沒有問題,究竟是為什么?
    發(fā)表于 05-15 19:02

    請(qǐng)問esp who人臉識(shí)別的臉部信息如何保存在sd卡中?

    esp who人臉識(shí)別的臉部信息如何保存在sd卡中?
    發(fā)表于 06-28 08:09

    四位半電壓設(shè)計(jì),程序加到列表里邊以后就會(huì)顯示錯(cuò)誤

    我們做的題目是四位半電壓設(shè)計(jì),程序單獨(dú)運(yùn)行沒問題,但是加到列表里邊以后就會(huì)顯示錯(cuò)誤。求大神幫助!
    發(fā)表于 08-06 10:25

    請(qǐng)問下如何把數(shù)據(jù)按不同的工段保存在一個(gè)中,但不是同一列

    各位大神 請(qǐng)問下如何把數(shù)據(jù)按不同的工段保存在同一表格的不同列,就是說比如一個(gè)產(chǎn)線,把每個(gè)工段的數(shù)據(jù)度保存在一個(gè)中,但不在同一列中,如圖中那樣
    發(fā)表于 09-12 19:48

    ZIGBEE 關(guān)聯(lián)溢出的表現(xiàn)在哪里?

    溢出了;還有我們使用NLME_LeaveReq( &req );函數(shù)來清除無效的節(jié)點(diǎn)信息保存在NV里面的信息也會(huì)清除嗎?
    發(fā)表于 03-22 13:53

    LabVIEW圖像處理中保存圖像時(shí)如何同時(shí)保存Overlay在圖像上的信息

    ` 具體一點(diǎn)就是處理圖像時(shí)通過Overlay在圖像上添加了一些有用的信息保存圖像時(shí)如何連同這些信息一起保存在圖像上,例如中讀出來的條碼信息
    發(fā)表于 04-06 18:07

    請(qǐng)問內(nèi)存大小與硬盤大小是保存在注冊(cè)的哪個(gè)位置,鍵值是什么呢?

    如題,各位大視野,請(qǐng)問電腦的內(nèi)存大小與硬盤大小是保存在注冊(cè)的哪個(gè)位置,鍵值是什么呢?謝謝。
    發(fā)表于 04-26 10:08

    LABVIEW數(shù)據(jù)保存在EXCEL無法打開

    數(shù)據(jù)保存在文本文檔里可以打開,保存在EXCEL卻不行,顯示發(fā)現(xiàn)不可讀取的內(nèi)容,怎么辦啊。程序圖是這樣的。最后保存到文本文檔是這樣的。如果能保存在EXCEL了,怎么才能在這些數(shù)據(jù)上邊添加
    發(fā)表于 11-17 14:23

    系統(tǒng)報(bào)錯(cuò)信息自動(dòng)保存

    系統(tǒng)發(fā)生錯(cuò)誤的時(shí)候怎樣把錯(cuò)誤提示消息寫入到文檔自動(dòng)保存???
    發(fā)表于 04-14 10:24

    用戶設(shè)置的參數(shù)動(dòng)態(tài)信息保存方法有哪些呢

    前言:很多的嵌入式設(shè)備使用過程中,當(dāng)系統(tǒng)掉電時(shí),往往需要把一些用戶設(shè)置的參數(shù)保存起來,或者是將掉電前的一些狀態(tài)信息保存,或者是統(tǒng)計(jì)系統(tǒng)重啟次
    發(fā)表于 02-10 07:44

    為什么會(huì)有INT引腳的存在

    目錄11.1 INT的存在的意義11.2 I2C地址11.3 協(xié)議版本與讀取報(bào)點(diǎn)信息11.4 I2C讀取報(bào)點(diǎn)信息。11.5 LA抓取10點(diǎn)觸控報(bào)點(diǎn)數(shù)據(jù)。11.1 INT的存在的意義 I
    發(fā)表于 03-02 06:10

    如何將詳細(xì)信息保存在文本文件而不是EEPROM?

    我目前正在研究 DNSServer 提供的 CaptivePortalAdvanced 示例。這提供了一個(gè)名為“憑據(jù)”的草圖,其中憑據(jù)保存在 EEPROM 中。但我想將詳細(xì)信息保存在文本文件中,所以
    發(fā)表于 05-04 07:48

    錄音電話的保存信息

    錄音電話的保存信息              保存信息即錄音電話所能錄音
    發(fā)表于 12-31 14:41 ?1700次閱讀

    嵌入式linux軟件是怎樣保存數(shù)據(jù)參數(shù)的

    大多數(shù)軟件開發(fā)都會(huì)涉及到數(shù)據(jù)參數(shù)的保存與讀取,小至運(yùn)行的單片機(jī)的軟件,大至操作系統(tǒng)級(jí)別的軟件(如linux,windows,mac),均會(huì)有專門的子程序或者模塊進(jìn)行參數(shù)的保存和讀取。不
    發(fā)表于 10-20 16:40 ?1次下載
    百家乐官网赌博器| 百家乐赌博赌博平台| 大发888 娱乐游戏| 百家乐官网赌场大赢家| 模拟百家乐的玩法技巧和规则| 株洲县| 大东方百家乐游戏| 大世界娱乐城| 菲律宾百家乐游戏| 皇朝娱乐城| 赌博百家乐作弊法| 宝格丽娱乐城| 百家乐投注很不错| 华人博彩网| 百家乐输了100万| 五大连池市| 澳门百家乐哪家信誉最好| 百家乐官网筛子游戏| 网上赌百家乐被抓应该怎么处理| 屏山县| 哈尔滨百家乐赌场| 三台县| 百家乐赌场赌场平台| 百家乐官网游戏排行榜| 澳门百家乐网上赌博| 百家乐官网西园二手房| 二八杠游戏| 迪士尼百家乐官网的玩法技巧和规则 | 百家乐庄闲预测| 百家乐官网视频游戏中心| 威尼斯人娱乐城送宝马| 百家乐官网电子发牌盒| 瑞丰国际开户| 免费百家乐追号| 百家乐官网平注法到6568| 抚远县| 爱拼百家乐的玩法技巧和规则| 番禺百家乐官网电器店| 赌场| 在线玩百家乐的玩法技巧和规则 | 百家乐官网翻天片尾曲|