標籤:
由於不瞭解postgresql的psql工具,安裝完資料庫後就直接用pgadmin或navicat來串連操作,在確認初始化後的庫中預設有些什麼東西後竟然一直無處下手,在還沒有瞭解pg大致體系的情況下搞得一頭霧水,先不說資料庫角色(role)的那個既可以是使用者又可以是組的概念,總是苦於無法查詢當前操作的是哪個庫哪個表,哪個模式的狀態,甚至連表結構都不知道怎麼看。然後還是再花時間去學pg的基本要素,主要還是因為mysql的代入關係,兩者有相似的地方,但在管理體繫上是不一樣的。最終還是先迴歸到伺服器端上,直接用psql來操作先,瞭解一下psql定義好的元命令,方便操作學習瞭解。
建新角色和庫
postgres=# create role chen createdb createrole login password ‘111111‘;CREATE ROLE
postgres=# create database yun owner chen;
CREATE DATABASE
切換角色,切換後提示符也從#變成了>,因為不是superuser
postgres=# \c - chen;SSL串連 (加密:DHE-RSA-AES256-SHA,二進位位: 256)您現在已經連線到資料庫 "postgres",使用者 "chen".
postgres=>
切換庫
postgres=> \c yun;
SSL串連 (加密:DHE-RSA-AES256-SHA,二進位位: 256)
您現在已經連線到資料庫 "yun",使用者 "chen".
yun=>
建立模式
yun=> create schema yun;CREATE SCHEMA
這裡有一個建立表若不指定模式則預設放在哪一個模式的問題,不同模式下不同的表可以重名,\d 命令也是從這裡面的模式名來擷取有哪些表
yun=>show search_path;
search_path
----------------
"$user",public
yun=> set search_path to yun,"$user",public;SET
yun=> show search_path; search_path ---------------------- yun, "$user", public(1 行記錄)
set好後,新表就會自動歸在yun模式裡,建個新表
yun=> create table website(yun(> fid int primary key,yun(> name varchar(255) not null,yun(> url varchar(255) not null,yun(> style smallint not null)yun-> ;
再用已經提前從mysql匯出好的檔案匯入資料,copy命令需要superuser,但是psql提供了另外的方法來導資料
yun=> \copy website from ‘/var/lib/mysql/yun/src_data/allwebsite.dat‘ delimiter ‘,‘;
修改一下,新加一個欄位
yun=> alter table website add column tm_update timestamp(0) without time zone not null default now();ALTER TABLE
PostgreSQL-使用者、庫、模式、表