当前位置: 首页 > news >正文

postgres 数据库信息解读 与 sqlshell常用指令介绍

数据库信息:

sqlshell

Server [localhost]: 192.168.30.101
Database [postgres]:
Port [5432]: 5432
Username [postgres]:
用户 postgres 的口令:
psql (15.12, 服务器 16.8 (Debian 16.8-1.pgdg120+1))
警告:psql 主版本15,服务器主版本为16.一些psql功能可能无法正常使用.
输入 "help" 来获取帮助信息.postgres=# \l数据库列表名称    |  拥有者  | 字元编码 |  校对规则  |   Ctype    | ICU Locale | Locale Provider |       存取权限
-----------+----------+----------+------------+------------+------------+-----------------+-----------------------postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            |template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +|          |          |            |            |            |                 | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +|          |          |            |            |            |                 | postgres=CTc/postgres
(3 行记录)  解释以上代码

以下是对您提供的 PostgreSQL 命令行交互及输出的详细解释:

1. 连接数据库的过程

bash

Server [localhost]: 192.168.30.101          # 指定数据库服务器 IP 地址
Database [postgres]:                        # 使用默认数据库名 postgres(直接回车)
Port [5432]: 5432                           # 使用默认端口 5432(直接回车)
Username [postgres]:                        # 使用默认用户名 postgres(直接回车)
用户 postgres 的口令:                       # 输入 postgres 用户的密码(输入时不显示)

  • 通过 psql 命令连接到 PostgreSQL 服务器,手动指定了服务器 IP(192.168.30.101),其他参数(数据库名、端口、用户名)使用默认值。
  • 输入密码后成功连接,进入 psql 交互界面。

2. 版本兼容性警告

bash

psql (15.12, 服务器 16.8 (Debian 16.8-1.pgdg120+1))
警告:psql 主版本15,服务器主版本为16.一些psql功能可能无法正常使用.

  • 客户端(psql)版本:15.12(本地工具版本)。
  • 服务器版本:16.8(Debian 系统上的 PostgreSQL 服务器版本)。
  • 警告原因:客户端和服务器主版本不一致(15 vs 16),可能导致部分新功能(如服务器新增的语法或特性)在客户端中无法使用,但基础功能通常不受影响。

3. \l 命令输出(数据库列表)

sql

postgres=# \l数据库列表名称    |  拥有者  | 字元编码 |  校对规则  |   Ctype    | ICU Locale | Locale Provider |       存取权限
-----------+----------+----------+------------+------------+------------+-----------------+-----------------------postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            |template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +|          |          |            |            |            |                 | postgres=CTc/postgrestemplate1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/postgres          +|          |          |            |            |            |                 | postgres=CTc/postgres
(3 行记录)
字段解释
  1. 名称(Name)

    • postgres:默认的管理员数据库,用于管理操作(如创建其他数据库)。
    • template0 和 template1:模板数据库,用于创建新数据库的模板(详见下文)。
  2. 拥有者(Owner)

    • 所有数据库的拥有者都是 postgres(默认管理员用户)。
  3. 字元编码(Encoding)

    • UTF8:数据库使用 UTF-8 字符编码,支持多语言文本存储。
  4. 校对规则(Collation) 和 Ctype

    • en_US.utf8:指定字符排序规则(Collation)和字符分类(Ctype),基于美国英语的 UTF-8 本地化设置(影响字符串比较、排序等操作)。
  5. ICU Locale 和 Locale Provider

    • 此处未启用 ICU 本地化(ICU Locale 为空),使用传统的 libc 本地化提供程序。
  6. 存取权限(Access Privileges)

    • 权限字符串格式:用户=权限标识/角色+ 表示多行权限。
    • =c/postgres
      • c:允许连接(Connect)数据库。
      • 无用户前缀时,表示对所有用户的默认权限(此处允许 postgres 用户连接)。
    • postgres=CTc/postgres
      • C:允许创建(Create)数据库(仅对模板数据库有效,因为创建新数据库会复制模板)。
      • T:允许创建临时表(Temporary tables)。
      • c:允许连接数据库。
模板数据库的作用
  • template0

    • 只读模板数据库,用于创建完全干净的新数据库(不允许直接修改,防止模板被污染)。
    • 新建数据库时若显式指定 -T template0,会基于此模板创建。
  • template1

    • 可写模板数据库,默认创建新数据库时(未指定模板)会基于 template1 复制。
    • 允许用户向其中添加自定义函数、扩展等,后续新建的数据库会继承这些设置。

总结

  • 通过 psql 客户端连接到 PostgreSQL 服务器,客户端和服务器版本略有差异(不影响基本功能)。
  • 当前服务器上有 3 个默认数据库,其中 template0 和 template1 是核心模板数据库,用于快速创建新数据库。
  • 权限配置显示只有 postgres 用户拥有管理这些数据库的完整权限(连接、创建、修改临时表等)。

sqlshell工具介绍:

SQL Shell(通常简称为 sqlsh 或直接通过数据库客户端连接,如 psql for PostgreSQL、mysql for MySQL 等)是用于与数据库交互的命令行工具。以下是常见的 SQL Shell 命令及操作说明,以通用语法和主流数据库(如 PostgreSQL、MySQL)为例进行介绍:

一、连接数据库

1. 登录数据库

语法

# PostgreSQL
psql -U <用户名> -d <数据库名> -h <主机地址> -p <端口号># MySQL
mysql -u <用户名> -p<密码> -h <主机地址> -P <端口号> <数据库名>

示例

# PostgreSQL 连接本地数据库
psql -U admin -d mydb# MySQL 连接时提示输入密码(-p 后不跟密码,回车后输入)
mysql -u root -p
2. 退出数据库

sql

-- 通用退出命令
\q  # PostgreSQL
exit 或 quit  # MySQL

二、执行 SQL 语句

1. 直接执行单行语句

在 Shell 提示符下直接输入 SQL 语句,以分号 ; 结尾并回车执行:

sql

-- 查看所有数据库(PostgreSQL)
\l-- 查看当前数据库所有表(MySQL)
SHOW TABLES;
2. 执行多行语句

按回车换行,输入完所有行后以分号 ; 结束,再回车执行:

sql

SELECT id, name 
FROM users 
WHERE age > 30;
3. 执行文件中的 SQL 脚本

语法

bash

# PostgreSQL
psql -U <用户名> -d <数据库名> -f <脚本文件路径># MySQL
mysql -u <用户名> -p<密码> <数据库名> < <脚本文件路径>

示例

psql -U admin -d mydb -f /path/to/script.sql

三、元数据查看命令(以 PostgreSQL 为例)

1. 查看数据库列表

sql

\l 或 \list
2. 查看当前数据库中的表

sql

\dt 或 \tables
3. 查看表结构

sql

\d <表名>  # 例如:\d users
4. 查看用户列表

sql

\du 或 \users
5. 查看函数、视图等

sql

\df  # 查看所有函数
\dv  # 查看所有视图

四、事务与数据操作

1. 开启事务

sql

BEGIN; 或 START TRANSACTION;
2. 提交事务

sql

COMMIT;
3. 回滚事务

sql

ROLLBACK;
4. 插入数据

sql

INSERT INTO users (name, age) VALUES ('Alice', 30);
5. 查询数据

sql

SELECT * FROM users WHERE age > 25;
6. 更新数据

sql

UPDATE users SET age = 31 WHERE name = 'Alice';
7. 删除数据

sql

DELETE FROM users WHERE age < 18;

五、数据库管理命令(以 MySQL 为例)

1. 创建数据库

sql

CREATE DATABASE mydb;
2. 删除数据库

sql

DROP DATABASE mydb;
3. 切换数据库

sql

USE mydb;

六、高级操作

1. 执行带参数的查询(PostgreSQL)

sql

-- 使用 \set 定义变量
\set name 'Alice'
SELECT * FROM users WHERE name = :name;
2. 导出查询结果到文件

语法

sql

-- PostgreSQL
\copy (SELECT * FROM users) TO '/path/to/output.csv' WITH CSV HEADER;-- MySQL
SELECT * INTO OUTFILE '/path/to/output.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' FROM users;
3. 批量导入数据(从 CSV 文件)

语法

sql

-- PostgreSQL
\copy users FROM '/path/to/input.csv' WITH CSV HEADER;-- MySQL
LOAD DATA INFILE '/path/to/input.csv' INTO TABLE users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

七、快捷键与实用技巧

操作PostgreSQLMySQL说明
自动补全TabTab补全表名、列名等
查看历史命令history\s显示命令历史
清屏\! clear\c清除屏幕输出
查看帮助\h <命令>HELP <语句>查看 SQL 语句语法帮助

八、注意事项

  1. 区分数据库客户端:不同数据库的 Shell 命令略有差异(如 PostgreSQL 的 \d 与 MySQL 的 DESCRIBE)。
  2. 权限问题:执行敏感操作(如删除数据库)需具备相应权限。
  3. 安全性:避免在命令行中明文输入密码,使用 -p 提示输入或通过环境变量配置。

通过以上命令,可以在 SQL Shell 中高效地管理数据库、执行查询和维护数据。具体操作可根据数据库类型(如 PostgreSQL、MySQL、Oracle 等)查阅官方文档获取更多细节。

相关文章:

  • 基于STM32+FPGA的地震数据采集器软件设计,支持RK3568+FPGA平台
  • 在PyTorch中,使用不同模型的参数进行模型预热
  • C语言 —— 指尖跃迁 刻印永恒 - 文件操作
  • 序列化 反序列化实例
  • 【软件工程大系】净室软件工程
  • 整活 kotlin + springboot3 + sqlite 配置一个 SQLiteCache
  • 【Spring】DI(依赖注入)详解:属性注入@Autowired(超详细)、构造方法注入、Setter注入
  • 《JVM考古现场(二十一):奇点黎明·在事件视界编译时空曲率》
  • 智能语音识别+1.2用SAPI实现文本转语音(100%教会)
  • 科技项目验收测试报告有哪些作用?需要多长时间和费用?
  • Shell编程之正则表达式与文本处理器
  • AI 对话高效输入指令攻略(一):了解AI对话指令
  • 解决靶机分配的 IP 地址与 Kali 机器静态 IP 地址冲突的方法
  • Langchain Agent封装的工具
  • Unity导出微信小游戏后无法调起移动端输入框
  • window 凭据管理器密码破解
  • 信息科技伦理与道德0:课程安排
  • 如何实现“一机两用” 寻求安全与效率的完美平衡
  • 从 SolarWinds 事件看 CCRC 认证的供应链安全价值
  • 盈达科技GEO技术体系全景解密:AIM³ Pro × AICC × GEO-BENCH Pro构建认知主权堡垒​
  • 短视频制作自学教程/爱采购seo
  • 做单网站/seo网站内容优化
  • 专业网站建设品牌策/seo优化中商品权重主要由什么决定
  • 运河网站制作/seo关键词排名软件
  • 可以做课后作业的网站/个人博客登录首页
  • 设计网站下载/网站设计制作公司