PostgreSQL psql 命令和常用的 SQL 語句整理
- 1、登錄PostgreSQL數據庫
- 2、psql 命令
- 3、數據庫操作
- 4、模式操作
- 5、表操作
- 6、數據操作
- 7、索引操作
- 8、視圖操作
- 9、權限操作
1、登錄PostgreSQL數據庫
在系統的命令行界面(如 Windows 的 cmd 或者 PowerShell、Linux 的終端等)中執行
-- 直接登錄指定數據庫:
psql -U postgres -d database_name
或者
-- 不指定數據庫則連接默認的postgres數據庫:
psql -U postgres
2、psql 命令
-- 切換到指定數據庫
\c database_name-- 查詢數據庫列表
\l-- 查詢模式列表
\dn-- 查看表結構
\d table_name-- 查看所有表
\d-- 查看指定模式下的所有表
\d schema_name.*-- 查看客戶端編碼和服務器編碼
SHOW client_encoding;
SHOW server_encoding;-- 臨時指定編碼
SET client_encoding TO 'UTF8';-- 臨時設置模式
SET search_path TO public;-- 執行腳本
\i 'E:/xxx_pg.sql'-- 退出
\q
3、數據庫操作
-- 創建數據庫
CREATE DATABASE database_name;-- 刪除數據庫
DROP DATABASE IF EXISTS database_name;-- 查看數據庫所有者
SELECT datname, pg_get_userbyid(datdba) FROM pg_database WHERE datname = 'database_name';-- 修改數據庫所有者
ALTER DATABASE database_name OWNER TO new_owner;
4、模式操作
-- 創建模式
CREATE SCHEMA schema_name;-- 刪除模式
DROP SCHEMA IF EXISTS schema_name CASCADE;-- 查看模式所有者
SELECT nspname, pg_get_userbyid(nspowner) FROM pg_namespace WHERE nspname = 'public';-- 修改模式所有者
ALTER SCHEMA schema_name OWNER TO new_owner;
5、表操作
-- 創建表
CREATE TABLE table_name (id SERIAL PRIMARY KEY,column1 datatype,column2 datatype
);-- 刪除表
DROP TABLE IF EXISTS table_name;-- 修改表名
ALTER TABLE table_name RENAME TO new_table_name;-- 添加列
ALTER TABLE table_name ADD COLUMN new_column datatype;-- 刪除列
ALTER TABLE table_name DROP COLUMN column_name;-- 修改列的數據類型
ALTER TABLE table_name ALTER COLUMN column_name TYPE new_datatype;-- 重命名列
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
6、數據操作
-- 插入數據
INSERT INTO table_name (column1, column2) VALUES (value1, value2);-- 查詢數據
SELECT * FROM table_name;
SELECT column1, column2 FROM table_name WHERE condition;-- 更新數據
UPDATE table_name SET column1 = new_value WHERE condition;-- 刪除數據
DELETE FROM table_name WHERE condition;
7、索引操作
-- 創建索引
CREATE INDEX index_name ON table_name (column1);-- 刪除索引
DROP INDEX IF EXISTS index_name;
8、視圖操作
-- 創建序列
CREATE SEQUENCE sequence_name;-- 獲取序列的下一個值
SELECT nextval('sequence_name');-- 刪除序列
DROP SEQUENCE IF EXISTS sequence_name;
9、權限操作
-- 授予用戶對表的 SELECT 權限
GRANT SELECT ON table_name TO user_name;-- 授予用戶對模式的所有權限
GRANT ALL PRIVILEGES ON SCHEMA schema_name TO user_name;-- 撤銷用戶對表的 INSERT 權限
REVOKE INSERT ON table_name FROM user_name;