select A."U_ID",A."U_UserName",A."U_UserPwd",A."U_UserType",A."U_UserTel",A."O_ID",
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站建設(shè)、西山網(wǎng)絡(luò)推廣、小程序定制開發(fā)、西山網(wǎng)絡(luò)營(yíng)銷、西山企業(yè)策劃、西山品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供西山建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
B."E_ID",B."E_Date",B."E_Remark"
from "tb_UserInfo" A,"tb_EngMainInfo" B
Where A."U_ID" = B,"U_ID"
先不考慮數(shù)據(jù)庫(kù)設(shè)計(jì)的是否合理
你是想新建表,之后把數(shù)據(jù)存進(jìn)去?還是建立一個(gè)臨時(shí)表把數(shù)據(jù)查出來(lái)?
首先你兩個(gè)表要有一定的關(guān)聯(lián)關(guān)系,兩個(gè)表的 SIP一樣?DIP一樣?還是User一樣?
根據(jù)一樣的作為兩個(gè)表的關(guān)聯(lián)條件
select * from 表1 t1 left join 表2 t2 on t1.SIP =t2.SIP
1、通過(guò)命令行查詢 \d 數(shù)據(jù)庫(kù) —— 得到所有表的名字 \d 表名 —— 得到表結(jié)構(gòu) 2、通過(guò)SQL語(yǔ)句查詢 "select * from pg_tables" —— 得到當(dāng)前db中所有表的信息(這里pg_tables是系統(tǒng)視圖) "select tablename from pg_tables where schemaname='public...
表分區(qū)是解決一些因單表過(guò)大引用的性能問(wèn)題的方式,比如某張表過(guò)大就會(huì)造成查詢變慢,可能分區(qū)是一種解決方案。一般建議當(dāng)單表大小超過(guò)內(nèi)存就可以考慮表分區(qū)了。PostgreSQL的表分區(qū)有三種方式:
本文通過(guò)示例講解如何進(jìn)行這三種方式的分區(qū)。
為方便,我們通過(guò)Docker的方式啟動(dòng)一個(gè)PostgreSQL,可參考:《Docker啟動(dòng)PostgreSQL并推薦幾款連接工具》。我們要選擇較高的版本,否則不支持Hash分區(qū),命令如下:
先創(chuàng)建一張表帶有年齡,然后我們根據(jù)年齡分段來(lái)進(jìn)行分區(qū),創(chuàng)建表語(yǔ)句如下:
這個(gè)語(yǔ)句已經(jīng)指定了按age字段來(lái)分區(qū)了,接著創(chuàng)建分區(qū)表:
這里創(chuàng)建了四張分區(qū)表,分別對(duì)應(yīng)年齡是0到10歲、11到20歲、21到30歲、30歲以上。
接著我們插入一些數(shù)據(jù):
可以看到這里的表名還是 pkslow_person_r ,而不是具體的分區(qū)表,說(shuō)明對(duì)于客戶端是無(wú)感知的。
我們查詢也一樣的:
但實(shí)際上是有分區(qū)表存在的:
而且分區(qū)表與主表的字段是一致的。
查詢分區(qū)表,就只能查到那個(gè)特定分區(qū)的數(shù)據(jù)了:
類似的,列表分區(qū)是按特定的值來(lái)分區(qū),比較某個(gè)城市的數(shù)據(jù)放在一個(gè)分區(qū)里。這里不再給出每一步的講解,代碼如下:
當(dāng)我們查詢第一個(gè)分區(qū)的時(shí)候,只有廣州的數(shù)據(jù):
哈希分區(qū)是指按字段取哈希值后再分區(qū)。具體的語(yǔ)句如下:
可以看到創(chuàng)建分區(qū)表的時(shí)候,我們用了取模的方式,所以如果要?jiǎng)?chuàng)建N個(gè)分區(qū)表,就要取N取模。
隨便查詢一張分區(qū)表如下:
可以看到同是SZ的哈希值是一樣的,肯定會(huì)分在同一個(gè)分區(qū),而BJ的哈希值取模后也屬于同一個(gè)分區(qū)。
本文講解了PostgreSQL分區(qū)的三種方式。
代碼請(qǐng)查看:
1. 查詢表名稱
在psql狀態(tài)下查詢表名稱:\dt
SQL方式查看表名稱:
SELECT?tablename?FROM?pg_tables;
SELECT ? viewname ? FROM ? pg_views ?
WHERE ? ? schemaname ='public'
PostgreSQL獲取數(shù)據(jù)庫(kù)中所有view名?視圖
SELECT ? viewname ? FROM ? pg_views
WHERE ? ? schemaname ='public'
2. 查詢表結(jié)構(gòu)
在psql狀態(tài)下查詢表結(jié)構(gòu) \d?tablename
SQL方式查看表結(jié)構(gòu)
SELECT a.attnum,
a.attname AS field,
t.typname AS type,
a.attlen AS length,
a.atttypmod AS lengthvar,
a.attnotnull AS notnull,
b.description AS comment
FROM pg_class c,
pg_attribute a
LEFT OUTER JOIN pg_description b ON a.attrelid=b.objoid AND a.attnum = b.objsubid,
pg_type t
WHERE c.relname = 'udoc_saldiscount'
and a.attnum 0
and a.attrelid = c.oid
and a.atttypid = t.oid
ORDER BY a.attnum;
擴(kuò)展資料:
PostgreSQL存儲(chǔ)系統(tǒng)是由以下幾個(gè)子模塊所構(gòu)成的:
1)頁(yè)面管理子模塊:對(duì)PostgreSQL緩沖區(qū)頁(yè)面的組織結(jié)構(gòu)進(jìn)行定義以及提供頁(yè)面操作的方法。
2)緩沖區(qū)管理子模塊:管理PostgreSQL的緩沖區(qū),包括本地緩沖區(qū)和共享緩沖區(qū)。
3)存儲(chǔ)設(shè)備管理子模塊:數(shù)據(jù)庫(kù)記錄是存儲(chǔ)在存儲(chǔ)介質(zhì)上的,存儲(chǔ)設(shè)備管理子模塊將屏蔽不同物理存儲(chǔ)設(shè)備(塊設(shè)備,流設(shè)備)接口函數(shù)的差異,向上層緩沖區(qū)管理子模塊提供統(tǒng)一的訪問(wèn)接口函數(shù)。
4)文件管理子模塊:一般的操作系統(tǒng)對(duì)一個(gè)進(jìn)程允許打開的文件數(shù)是有限制的,而PostgreSQL服務(wù)器有些時(shí)候需要打開的文件數(shù)是很多的,因此PostgreSQL文件管理子模塊自身為了突破這個(gè)瓶頸,封裝了文件的讀寫操作。