PostgreSQL psql 命令和常用的 SQL 语句整理

PostgreSQL psql 命令和常用的 SQL 语句整理

1、登录PostgreSQL数据库

在系统的命令行界面(如 Windows 的 cmd 或者 PowerShell、Linux 的终端等)中执行

sql 复制代码
-- 直接登录指定数据库:
psql -U postgres -d  database_name
或者
-- 不指定数据库则连接默认的postgres数据库:
psql -U postgres

2、psql 命令

sql 复制代码
-- 切换到指定数据库
\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、数据库操作

sql 复制代码
-- 创建数据库
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、模式操作

sql 复制代码
-- 创建模式
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、表操作

sql 复制代码
-- 创建表
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、数据操作

sql 复制代码
-- 插入数据
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、索引操作

sql 复制代码
-- 创建索引
CREATE INDEX index_name ON table_name (column1);

-- 删除索引
DROP INDEX IF EXISTS index_name;

8、视图操作

sql 复制代码
-- 创建序列
CREATE SEQUENCE sequence_name;

-- 获取序列的下一个值
SELECT nextval('sequence_name');

-- 删除序列
DROP SEQUENCE IF EXISTS sequence_name;

9、权限操作

sql 复制代码
-- 授予用户对表的 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;
相关推荐
望获linux7 分钟前
【Linux基础知识系列】第六十四篇 - 了解Linux的硬件架构
linux·运维·服务器·开发语言·数据库·操作系统·嵌入式软件
全栈小516 分钟前
【数据库】使用Sql Server将分组后指定字段的行数据转为一个字段显示,并且以逗号隔开每个值,收藏不迷路
数据库·sql server
JohnYan37 分钟前
工作笔记 - 一种业务信息汇报机制的设计和实现
数据库·后端·postgresql
sq8001 小时前
EFCore ORM 数据库数据表迁移
数据库·后端·orm
小徐不徐说2 小时前
深入理解 Qt 信号与槽机制的底层逻辑
数据库·c++·qt·面试
一只小小汤圆2 小时前
qt 心跳包
服务器·数据库·qt
巴里巴气2 小时前
MongoDB事务和隔离级别的原理
数据库·mongodb
什么半岛铁盒2 小时前
MySQL的常用数据类型详解
linux·数据库·mysql·adb
rannn_1113 小时前
【MySQL学习|黑马笔记|Day1】数据库概述,SQL|通用语法、SQL分类、DDL
数据库·后端·学习·mysql
mrbone113 小时前
C++-关于协程的一些思考
开发语言·数据库·c++·c++20·协程·异步·coroutines