| 全部共 18則留言 |
| 04-30 15:53: | 1. 產生一個檢視表 (view) vw_p20 以找出 product 資料表 product中 p 為 20 的所有資料:
CREATE VIEW vw_p20 AS
SELECT *
FROM product
WHERE p = '20';
2. 產生一迴圈式檢視表 (view) nums_1_100 以產生 1 到 100
:
CREATE RECURSIVE VIEW nums_1_100 (n) AS
VALUES (1)
UNION ALL
SELECT n+1 FROM nums_1_100 WHERE n < 100;
|
| 04-30 15:53: | 1. 產生一個檢視表 (view) vw_p20 以找出 product 資料表 product中 p 為 20 的所有資料:
CREATE VIEW vw_p20 AS
SELECT *
FROM product
WHERE p = '20';
2. 產生一迴圈式檢視表 (view) nums_1_100 以產生 1 到 100
:
CREATE RECURSIVE VIEW nums_1_100 (n) AS
VALUES (1)
UNION ALL
SELECT n+1 FROM nums_1_100 WHERE n < 100;
|
| 04-30 16:02: | COPY DemoTable to ‘d:/demo1.csv’
將資料表匯出至D槽的demo1.csv檔案,當開啟後可以放現這樣的指令會把每一筆資料全部塞到一個儲存格中 |
| 04-30 16:04: | COPY DemoTable to ‘d:/demo2.csv’ DELIMITER ‘,’
通常我們會希望把資料隔開,所以範例一的結果通常不是我們想要的,要隔開資料也簡單,例用「DELIMITER ‘,’」就行了 |
| 04-30 16:04: | COPY DemoTable to ‘d:/demo3.csv’ DELIMITER ‘,’ CSV HEADER
雖然資料隔開了,但若也想把資料表的欄位名稱也順便匯出的話,再指令後面加一個「CSV HEADER」就可以搞定 |
| 04-30 16:05: | 匯入:COPY ScoreDemo(id, name, score, level) FROM ‘d:/demo3.csv’ WITH DELIMITER ‘,’ CSV HEADER
這是一個比較完整的指令,從剛剛範例三匯出資料的demo3.csv中(有含欄位名稱),全部依新的資料表名稱欄位順序來匯入,可以看到下圖的結果,是和原始資料表DemoTable一樣的 |
| 04-30 16:06: | 匯入:COPY ScoreDemo(id, name, score, level) FROM ‘d:/demo3.csv’ WITH DELIMITER ‘,’ CSV HEADER 這是一個比較完整的指令,從剛剛範例三匯出資料的demo3.csv中(有含欄位名稱),全部依新的資料表名稱欄位順序來匯入,可以看到下圖的結果,是和原始資料表DemoTable一樣的 |
| 04-30 16:07: | 參考網址http://www.jinnsblog.com/2014/03/postgresql-table-export-and-import-csv.html |
| 05-07 13:16: | 列出筆數
SELECT COUNT(*) FROM product; |
| 05-07 13:29: | 列出 供應商, 供應商之供應總金額加總(為P#之供應量*成本價Cost), 平均供應量
SELECT sp_s, SUM (sp_qty*cost), AVG (sp_qty) FROM sporder LEFT JOIN product ON sporder.sp_p = product.p GROUP BY sp_s;
|
| 05-07 13:33: | -- 列出 供應商, 最小供應量, 最大供應量;
SELECT sp_s, MIN(sp_qty), MAX(sp_qty) FROM sporder LEFT JOIN product ON sporder.sp_p = product.p GROUP BY sp_s; |
| 05-07 13:52: | -- 刪除檢視表 (view)
-- 建立檢視表
-- 列出 供應商, 供應商之供應總金額加總(為P#之供應量*成本價Cost)
DROP VIEW 供應總金額檢視表a;
CREATE VIEW "供應總金額檢視表D"
AS
SELECT sp_s, SUM (sp_qty*cost) FROM sporder LEFT JOIN product ON sporder.sp_p = product.p GROUP BY sp_s;
|
| 05-07 14:06: | -- 建立檢視表
-- 列出 供應商, 供應商之供應總金額加總(為P#之供應量*成本價Cost)
DROP VIEW "供應總金額檢視表A_B";
CREATE VIEW "供應總金額檢視表A_B"
AS
SELECT A.sp_s, C.address, A.sp_qty, B.cost, A.sp_qty*B.cost "供應總金額"
FROM sporder A, product B , supplier C
WHERE A.sp_p = B.p AND A.sp_s = C.s; |
| 05-07 14:41: | -- 建立 1-100 的遞迴檢視表數列
CREATE RECURSIVE VIEW nums_1_100 (n) AS
VALUES (1)
UNION ALL
SELECT n+1 FROM nums_1_100 WHERE n < 100;
SELECT nums_1_100.n
FROM nums_1_100; |
| 05-07 14:49: | -- 交易的撤回 (ROLLBACK) 與 (COMMIT)
|
| 05-14 14:06: | -- 資料表內容輸出到檔案
COPY (SELECT * FROM nums_1_100 WHERE n>5 AND n<100) TO 'c:/test/test10.txt' WITH CSV;
-- 檔案內容輸入到資料表內
COPY supplier(s) FROM 'c:/test/test10.txt' WITH DELIMITER ',' CSV HEADER;
|
| 05-14 14:07: | -- 建立資料表的索引擋
-- CREATE INDEX ON supplier(s);
|
| 05-14 14:09: | -- 建立資料表的索引擋
PostgreSQL 提供了好幾種索引類型︰ B-tree,R-tree,Hash 和 GiST。每種索引類型都比較適合某些特定的查詢類型, 因為它們用了不同的算法。 預設時,CREATE INDEX 命令將建立一個 B-tree 索引, 它適合大多數情況。
語法:CREATE INDEX name ON table USING hash (column);
CREATE INDEX test1_id_index ON test1 (id);
-- 刪除索引擋
DROP INDEX
|
|