خوب بریم سراغ کار با psql. اگر postgres را در ویندوز نصب کردید و مسیر صب آن را تغییر نداده اید معمولا در مسیر C:\Program Files (x86)\PostgreSQL\9.6 قرار دارد . در لینوکس اگر با استفاده از فایل بانری نصب کرده اید در مسیر /opt/Postgresql/9.6 ، اگر با دستور yum نصب شده هر کدام ارز فایل ها با توجه به ماهیتشان در مسیر های مختلف قرار می گیرد مثلا دستورات و فایل های اجرایی postgres در مسیر bin خود سیستم عامل قرار گرفته، اگر از روی سورس نصب شده باشد در مسیر /usr/local/pgsql/bin/psql است. حالا وارد یکی از مسیر های بالا شده و دستور زیر را برای ورود به psql زده: cd "c:\Program Files (x86)\PostgreSQL\9.6\bin"
psql.exe -h localhost -p 5432 -U postgre
Password for user postgres:
psql (9.6.1, server 9.3.3)
WARNING: Console code page (437) differs from Windows code page (1252)
8-bit characters might not work correctly. See psql reference
page "Notes for Windows users" for details.
Type "help" for help.
postgres=#
دستور psql چندین option دارد که ما در اینجا 3 تای آن استفاده کرده ایم –h مشخص کننده سیستمی است که قرار است ما به postgres آن متصل شویم و چون در همین سیستم است آدرس را localhost زدیم البته وقتی آدرس localhost است نیازی به نوشتن –h نیست پیشفرض localhost است، -p مشخص کننده پورت postgres است که معمولا اگر یک postgres در سیستم باشد همان 5432 است که نوشته آن الزامی نیست، -U مخفف user است و با آن مشخص میکنیم که به چه کاربری در postgres متصل می خواهیم بشویم، اگر این option نوشته نشود کاربر پیش فرض را همان کاربری در نظر می گیرد که دستور psql را اجرا کرده مثلا در ویندوز کاربر administrator و در لینوکس کاربر root .
اپس از وراد شدن به psql ان خط Type "help" for help. می گوید که با نوشتن help تمام دستوراتی که می توانید در این محیط استفاده کنید را ببینید.
بعد از اجرای دستور اگر کاربر رمز داشته باشد از ما رمز می خواهد وگرنه مستقیم وارد psql می شود.
دستور بالا در لینوکس به این شکل است:#cd /opt/Postgresql/9.6/bin
#./psql -h localhost -p 5432 -U postgres
بعد از ورود خط فرمان به صورت زیر دیده می شود دستورات psql در هر سیستم عاملی یکی است به جز جاهایی که نیاز به آدرس دهی است.
postgres-#
در خط فرمان postgres به معنی این است که به دیتابیس postgres متصل هستید برای اینکه کل دیتابیس ها را ببنیم از \l استقاده می کنیم.
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(3 rows)
ستون name نشان میدهد که 3 دیتابیس وجود دارد این 3 تا دیتابیس پیش فرض postgres است که بعد درباره آن ها صحبت می کنیم.
حالا ما یک db جدید اضافه کرده مجدد \l میگیریم
postgres=# create database test encoding=utf8;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
(4 rows)
حالا با \c به دیتابیس test متصل شده
postgres=# \c test
You are now connected to database "test" as user "postgres".
خط قرمز می گوید که شما به دیتابیس test با کاربر postgres متصل شده اید
یک table ساخته
test=# create table tbl1 (name text , code int);
CREATE TABLE
در این مرحله یک رکورد به جدول اضافه می کنیم
test=# insert into tbl1(name,code) values('ali',110);
INSERT 0 1
محتویات جدول ساخته شده را می بینیم
test=# select * from tbl1;
name | code
------+------
ali | 110
(1 row)
با \dt میتوانیم تمام جداول یک دیتابیس را ببینیم
test=# \dt
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | tbl1 | table | postgres
(1 row)
خط قرمز نشان می دهد که فقط یک جدول وجود دارد.اگر تعدا جداول زیاد باشد پیدا کردن مشخصات یک جدول سخت است میتوان بعد از \dt نام جدول مورد نظر را وارد کرد و فقط اطلاعات آن جدول را دید. اگر به جای \dt از \dt+ استفاده کنیم اطلاعات بیشتری از جداول به ما داده می شود.
test=# \dt tbl1;
List of relations
Schema | Name | Type | Owner
--------+------+-------+----------
public | tbl1 | table | postgres
(1 row)
test-# \dt+
List of relations
Schema | Name | Type | Owner | Size | Description
--------+------+-------+----------+-------+-------------
public | tbl1 | table | postgres | 16 kB |
(1 row)
با \? می توان تمام سوئیچ ها ونحوه کارکرد ان را ببینید.