暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

openGauss每日一练第 2 天 | 初学乍练:学习openGauss客户端工具gsql的使用!

原创 贾大夫 2022-12-07
665

Table of Contents

学习目标

学习openGauss数据库客户端工具gsql的使用,归结为如下几点:

  1. 学习连接数据库
  2. 学习如何查看数据库版本、pg基础版本和版权信息
  3. 学习常见元命令
  4. 学习事务的简单使用
  5. 学习使用帮助

学习内容

摘要

gsql是openGauss提供在命令行下运行的数据库连接工具,可以通过此工具连接服务器并对其进行操作和维护,除了具备操作数据库的基本功能,gsql还提供了若干高级特性,便于用户使用。

1. 使用gsql命令连接数据库

--使用omm用户连接到本机omm数据库的5432端口,命令中的-r选项提供了对gsql命令的历史版本支持。

su - omm
gsql -r 或 gsql -d omm  -p 5432  -r

注:
gsql数据库在omm用户下,须切换omm用户后才可操作,或在root用户环境变量中添加gsql。

结果:

root@modb:~# su - omm
omm@modb:~$ gsql -d omm  -p 5432  -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

2. 在gsql中,查看数据库的版本、pg基础版本和版权信息

# 查看数据库版本
select version();
# 查看PG基础版本
show server_version;
# 查看版本信息
 \copyright

结果:

omm=# select version();
                                                                        version                                                                        
-------------------------------------------------------------------------------------------------------------------------------------------------------
 (openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr   on aarch64-unknown-linux-gnu, compiled by g++ (GCC) 7.3.0, 64-bit
(1 row)

omm=# show server_version;
 server_version 
----------------
 9.2.4
(1 row)

omm=#  \copyright
GaussDB Kernel Database Management System
Copyright (c) Huawei Technologies Co., Ltd. 2018. All rights reserved.

3. 常见元命令的使用

元命令:Meta-Command,元命令常常被称作斜线或者反斜线命令。

元命令 示例 记忆点 作用
\l \l \l(ist) 显示openGauss数据库集簇中,目前有哪些数据库。
\conninfo \conninfo \conn(ection )info 在gsql中,显示会话的连接信息。
\c[onnect] [DBNAME] \c postgres \c(onnect) [DBNAME] 在gsql中,切换连接的数据库postgres。
\du 或 \dg \du 或 \dg \d(atabase )u(ser) 显示openGauss数据库集簇中,目前有哪些用户和角色。list roles
\db \db \d(ata )b(ase) 显示openGauss数据库集簇中,目前有哪些表空间。list tablespace
CREATE TABLE CREATE TABLE customer_t ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) ); 创建表。define a new table
INSERT INTO INSERT INTO customer_t (c_customer_sk, c_customer_id, c_first_name,c_last_name) VALUES (3769, 5, ‘Grace’,‘White’); 插入数据

结果:

omm=# \l 
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+-------+----------+---------+-------+-------------------
 omm       | omm   | UTF8     | C       | C     | 
 postgres  | omm   | UTF8     | C       | C     | 
 template0 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
 template1 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
(4 rows)

omm-# \du
                                                              List of roles
 Role name |                                                    Attributes                                                    | Member of 
-----------+------------------------------------------------------------------------------------------------------------------+-----------
 gaussdb   | Sysadmin                                                                                                         | {}
 omm       | Sysadmin, Create role, Create DB, Replication, Administer audit, Monitoradmin, Operatoradmin, Policyadmin, UseFT | {}

omm=# \c postgres
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "postgres" as user "omm".

openGauss=# CREATE TABLE customer_t ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) );
CREATE TABLE

4. gsql事务的简单使用

  1. 测试gsql中的默认事务自动提交功能
show AUTOCOMMIT;
--测试gsql中事务默认为自动提交功能
create  table customer_new as select * from customer_t;
\q

--重新登录后看到之前创建的表customer_new:
gsql -d postgres  -p 5432  -r
\dt

注:
重新登录后,需要连接数据库 \c postgres
结果:

openGauss=# show AUTOCOMMIT;
+-[ RECORD 1 ]----+
| autocommit | on |
+------------+----+

openGauss=# create  table customer_new as select * from customer_t;
INSERT 0 1
openGauss=# \q
omm@modb:~$ gsql -r
gsql ((openGauss 3.0.0 build 02c14696) compiled at 2022-04-01 18:12:00 commit 0 last mr  )
Non-SSL connection (SSL connection is recommended when requiring high-security)
Type "help" for help.

omm=# \dt
No relations found.
omm=# \c postgres 
Non-SSL connection (SSL connection is recommended when requiring high-security)
You are now connected to database "postgres" as user "omm".
openGauss=# \dt
 public | customer_t   | table | omm   | {orientation=row,compression=no}
(2 rows)

openGauss=#                             List of relations
 Schema |     Name     | Type  | Owner |             Storage              
--------+--------------+-------+-------+----------------------------------
 public | customer_new | table | omm   | {orientation=row,compression=no}
  1. 测试gsql中的事务手动提交功能
–测试gsql手动提交
#Opengauss默认执行完一条语句后,立即提交。可以关闭自动提交功能:
#注意:此处设置ATUOCOMMIT必须用大写!

\set AUTOCOMMIT off
   --插入一些数据
INSERT INTO customer_t (c_customer_sk, c_customer_id, c_first_name,c_last_name) VALUES    
(6885, 1, 'Joes', 'Hunter'),    
(4321, 2, 'Lily','Carter'),    
(9527, 3, 'James', 'Cook'),
(9500, 4, 'Lucy', 'Baker');
  --查看表中数据
select * from customer_t;
--执行回滚
ROLLBACK;
    --检查是否回滚成功
SELECT * FROM customer_t;

注:
此处虚拟环境中有bug,使用 \set AUTOCOMMIT off 后,查看状态,并未显示为 off,使用 \echo :AUTOCOMMIT 可查看正确状态值。
上文中使用了ROLLBACK;进行回滚操作,在手动提交模式下,需要输入COMMIT;才能确保变更成功。

openGauss=# \set AUTOCOMMIT off
openGauss=# show AUTOCOMMIT;
 autocommit 
------------
 on
(1 row)

openGauss=# \echo :AUTOCOMMIT
off

5. gsql相关帮助

--连接数据库时,可以使用如下命令获取帮助信息。

gsql --help

--\h获取和SQL语法有关的帮助信息

\h

--\? 获取和元命令有关的帮助信息

 \?

相关帮助可以用来查看命令的具体使用方法和说明,对于初学者非常有帮助。当然,教学和帮助中没有的知识内容,可以请教群内的大佬们。

往期内容

openGauss每日一练第 1 天

最后修改时间:2022-12-13 17:04:39
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论