postgres=/postgres-
表示你上一行輸入沒有完成(pythoner請記得在句尾加;!!!)
psql 是什么?
psql 是 PostgreSQL 中的一個命令行交互式客戶端工具,
它允許你交互地鍵入 SQL 命令,然后把它們發送給 PostgreSQL 服務器,再顯示 SQL 或命令的結果。
輸入的內容允許來自一個文件,此外它還提供了一些元命令和多種類似 shell 的特性來實現書寫腳本,以及對大量任務的自動化工作。
特性:方便快捷、沒有圖形化工具使用上的一些限制
postgresql數據庫
最先進的開源關系型數據庫。
1. 安裝
1)創建 /etc/apt/sources.list.d/pgdg.list 並在文件中添加如下內容:
# vi /etc/apt/sources.list.d/pgdg.list
deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main2)執行如下操作並更新軟件源
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update3)安裝postgresql-10數據庫
apt-get install postgresql-10
4)查看安裝是否成功
netstat -tnulp | grep postgres
注:postgresql數據庫默認監昕端口為:5432
2. 基本使用
1)啟動、停止、重啟
systemctl start|stop|restart postgresql
2)相關目錄
# congFile
/etc/postgresql/10/main/postgresql.conf
# database file
/var/lib/postgresql/10/main
# 日志文件
/var/log/postgresql/postgresql-10-main.log3)客戶端程序psql
連接postgresql數據庫的客戶端,使用之前需先切換到 postgres 用戶中。
su postgres
使用形式:
執行psql就會默認連接到postgres數據庫。
3. psql基本指令
命令 | 說明 |
---|---|
\l | 顯示當前有哪些數據庫 |
\c <數據庫名> | 連接到指定的數據庫 |
\d | 查看數據庫中有哪些表 |
\dS <表名> | 查看表的結構 |
\? | 查看命令幫助提示 |
\q | 退出psql終端 |
4. 數據庫操作
1)創建\刪除數據庫
create database <...>
drop database <...>
2)創建數據表
CREATE TABLE tb_user (
id int not null primary key,
name varchar(30) not null,
age int not null
);
3)刪除數據表
drop table <...>
4)增、刪、改、查基本操作
和mysql數據庫一致。
insert into tb_user (id, name, age)
values (1, 'smart', 21),
(2, 'lily', 20),
(3, 'linda', 18),
(4, 'xiaoming', 25);
SQL語句操作數據庫。
5. Django使用postgresql數據庫
1)添加新的數據庫用戶
create user <...> with password <...>;
2)創建數據庫並指定所屬用戶
create database django_test owner <...>;
3)Django數據庫配置
注:python環境中需安裝psycopg2-binary:pip install psycopg2-binary
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'USER': '...',
'PASSWORD': '...',
'HOST': '...ip',
'PORT': '...',
'NAME': '...'
}
}
4)修改postgresql配置文件,指定允許遠程連接
# vi /etc/postgresql/10/main/postgresql.conf
listen_addresses = '*' # 運行遠程連接
5)重啟postgresql服務
systemctl restart postgresql
6)允許任意用戶從任意機器上以密碼方式訪問數據庫
# vi /etc/postgresql/10/main/pg_hba.conf
host all all 0.0.0.0/0 md5
7)重啟postgresql服務
補充
psql -h <hostname or ip> -p <端口> [數據庫名稱] [用戶名稱]
這些連接參數也可以用環境變量指定,比如:
export PGDATABASE=testdb
export PGHOST=127.0.0.1
export PGPORT=5432
export PGUSER=postgres
然后直接允許 psql 即可。
psql 的常用命令
psql 的命令都是以斜杠 "\" 開頭的。
\l 查看所有數據庫
\d [ pattern ] 該命令將顯示每個匹配關系(表、視圖、索引、序列)的信息,可以加上 + 查看更多的信息,如 \d+
1、不加任何參數表示查看當前數據庫的所有表。
2、\d tablename 后面跟一個表名,表示顯示這個表的結構定義
3、\d indexname 也可以顯示索引的信息,如 \d 索引名稱
4、\d * 后面也可以跟通配符如 "*" 或 "?",\d x*
5、\d+ 將顯示比 \d 更詳細的信息,還會顯示任何與表關系的注釋,以及表中出現的 OID
6、\dt 只顯示匹配的表
\di 只顯示索引
\ds 只顯示序列
\dv 只顯示視圖
\df 只顯示函數
7、\timing on或off 顯示 SQL 已執行的時間,默認情況下是 off
8、\dn 列出所有的 schema
9、 \du 或 \dg 列出所有的數據庫用戶和角色
10、 \db 顯示所有的表空間,表空間其實是一個目錄,放在這個表空間的表,就是把表的數據文件發到這個表空間下。
11、\dp 或 \z 顯示表的權限分配情況
12、\encoding 指定客戶端的字符編碼,如 \encoding UTF8;
13、\pset 設置輸出的格式,\pset border 0 : 表示輸出內容無邊框。 border 1 :表示邊框只在內部。border 2 :內外都有邊框
14、\x 把表中的每一行的每列數據都拆分為單行展示,與 MySQL 中的 "\G" 的功能類似。
15、\echo 用於輸出一行信息,通常用於在 .sql 文件中輸出一些提示信息。
16、\password 設置密碼
17、\conninfo 列出當前數據庫連接的信息
18、\dx 查看數據庫中安裝的擴展 或 select * from pg_extension;
更多的命令可以用 \? 來顯示
執行存儲在外部文件中的 SQL 命令
\i <文件名> 執行存儲在外部文件中的 sql 語句
當然也可以在 psql 命令行加 "-s <filename>" 來執行 SQL 腳本文件中的命令,如 psql -s test.sql
psql 的使用技巧
1、在啟動 psql 命令后中加 "-E" 參數,就可以把 psql 中各種以 "\" 開頭的命令執行的實際 SQL 打印出來,如下 psql -E postgres,如果想關閉此功能,可以使用 "\set ECHO_HIDDEN on | off"
2、自動提交方面的技巧
psql 中的事務是自動提交的,可以運行 begin; 然后執行 dml 語句,最后再執行 commit 或 rollback 語句。或 直接使用 psql 中的命令關閉自動提交的功能。 \set AUTOCOMMIT off
3. 查看數據庫、表、索引大小
select pg_size_pretty(pg_table_size('test'));
select pg_size_pretty(pg_database_size('david'));
select pg_size_pretty(pg_indexes_size('test'));