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

openGauss每日一练第11天 | 学习心得体会

原创 opengausser 2022-12-04
529

数据库是数据库对象的容器,在数据库中,可以创建模式、表、索引等数据库对象。openGauss数据库管理包括:创建数据库、删除数据库、重新命名数据库、查看数据库的信息。

创建一个新的数据库。缺省情况下,新数据库将通过复制标准系统数据库template0来创建,且仅支持使用template0来创建。

1.创建表空间enmtbs和数据库musicdb:

su - omm
gsql -r
--CREATE TABLESPACE enmtbs RELATIVE LOCATION 'tablespace/enmtbs1';
--CREATE DATABASE musicdb WITH TABLESPACE = enmtbs;

omm=# \db
           List of tablespaces
    Name    | Owner |      Location      
------------+-------+--------------------
 enmtbs     | omm   | tablespace/enmtbs1
 pg_default | omm   | 
 pg_global  | omm   | 
(3 rows)

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

omm=#  template0 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
 template1 | omm   | UTF8     | C       | C     | =c/omm           +

2.查看数据库集簇中有哪些数据库

SELECT datname FROM pg_database;
或
\l

omm=# select datname from pg_database;
omm=#   datname  
-----------
 template1
 omm
 musicdb
 template0
 postgres
(5 rows)

3.查看数据库默认的表空间信息:

–首先执行下面的语句,查看musicdb数据库默认表空间的对象OID
-select datname,dattablespace from pg_database where datname='musicdb';

omm=# select datname,dattablespace from pg_database where datname='musicdb';
 datname | dattablespace 
---------+---------------
 musicdb |         16389
(1 row)

–根据表空间对象的OID,来查看表空间的名字:

-select oid,spcname from pg_tablespace where oid=16389;

omm=# select oid,spcname from pg_tablespace where oid=16389;
  oid  | spcname 
-------+---------
 16389 | enmtbs
(1 row)

–可以将上面的两条语句合并成一条语句,来查询数据库musicdb默认表空间的名字:

select spcname 
from pg_tablespace 
where oid=( select dattablespace
           from pg_database
           where datname='musicdb' );
----
 spcname 
---------
 enmtbs
(1 row)

4.查看数据库下有哪些模式

\dn+

 --或
SELECT catalog_name, schema_name, schema_owner FROM information_schema.schemata;

---
 catalog_name |    schema_name     | schema_owner 
--------------+--------------------+--------------
 omm          | pg_toast           | omm
 omm          | cstore             | omm
 omm          | pkg_service        | omm
 omm          | dbe_perf           | omm
 omm          | snapshot           | omm
 omm          | blockchain         | omm
 omm          | pg_catalog         | omm
 omm          | public             | omm
 omm          | sqladvisor         | omm
 omm          | dbe_pldebugger     | omm
 omm          | db4ai              | omm
(13 rows)

 omm          | dbe_pldeveloper    | omm
 omm          | information_schema | omm

5.查询当前连接的数据库omm下有哪些表:

--一个sql
with my_tables(table_catalog, table_schema, table_name, table_type) as
      (   select table_catalog, table_schema, table_name, table_type
          from information_schema.tables
         where table_schema not in ('pg_catalog', 'information_schema','dbe_perf')
       )
 select * from my_tables;

---
omm=# with my_tables(table_catalog, table_schema, table_name, table_type) as
omm-#       (   select table_catalog, table_schema, table_name, table_type
omm(#           from information_schema.tables
omm(#          where table_schema not in ('pg_catalog', 'information_schema','dbe_perf')
omm(#        )
omm-# 
omm-#  select * from my_tables;
 table_catalog |  table_schema   | table_name | table_type 
---------------+-----------------+------------+------------
 omm           | db4ai           | snapshot   | BASE TABLE
 omm           | dbe_pldeveloper | gs_errors  | BASE TABLE
 omm           | dbe_pldeveloper | gs_source  | BASE TABLE
 omm           | public          | cuser      | BASE TABLE
 omm           | public          | newt1      | BASE TABLE
(5 rows)

6.更改数据库默认的表空间

CREATE TABLESPACE app_ts  RELATIVE LOCATION 'tablespace/app_ts1';

ALTER DATABASE musicdb  SET TABLESPACE app_ts;
--查看表空间是否更改完成
select spcname 
from pg_tablespace 
where oid=( select dattablespace
           from pg_database
           where datname='musicdb' );


-------------
omm=# select spcname 
omm-# where oid=( select dattablespace
omm(#            from pg_database
omm(# from pg_tablespace 
omm-#            where datname='musicdb' );
 spcname 
---------
 enmtbs

----
omm=# select pg_tablespace_size('app_ts');
 pg_tablespace_size 
--------------------
           12750852
-----
omm=# select pg_tablespace_size('enmtbs');
 pg_tablespace_size 
--------------------
               4096
-----
omm=# select spcname 
omm-# from pg_tablespace 
omm-# where oid=( select dattablespace
omm(#            from pg_database
omm(#            where datname='musicdb' );
 spcname 
---------
 app_ts
(1 row)


7.修改数据库的默认用户

CREATE USER user1  IDENTIFIED BY 'user1@ustb2020';
ALTER USER user1  SYSADMIN;
ALTER DATABASE musicdb OWNER to user1;

\l

omm=# \l
 template0 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
 template1 | omm   | UTF8     | C       | C     | =c/omm           +
           |       |          |         |       | omm=CTc/omm
(5 rows)

                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+-------+----------+---------+-------+-------------------
 musicdb   | user1 | UTF8     | C       | C     | 
 omm       | omm   | UTF8     | C       | C     | 
 postgres  | omm   | UTF8     | C       | C     | 

8.重新命名数据库

ALTER DATABASE musicdb RENAME TO  musicdb1;
\l

omm=# ALTER DATABASE musicdb RENAME TO  musicdb1;
ALTER DATABASE
omm=# \l
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+-------+----------+---------+-------+-------------------
 musicdb1  | user1 | UTF8     | C       | C     | 
 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
(5 rows)

9.删除数据库

DROP DATABASE musicdb1;

5.作业

1.创建表空间enmtbs和数据库musicdb

--CREATE TABLESPACE enmtbs RELATIVE LOCATION 'tablespace/enmtbs1';
--CREATE DATABASE musicdb WITH TABLESPACE = enmtbs;

omm=# \l
                         List of databases
   Name    | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+-------+----------+---------+-------+-------------------
 musicdb   | omm   | UTF8     | C       | C     | 
 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
(5 rows)

2.查看数据库集簇中有哪些数据库

\l
或
select datname from pg_database;

omm=# select datname from pg_database;
  datname  
-----------
 template1
 omm
 template0
 postgres
 musicdb
(5 rows)

3.查看数据库默认的表空间信息

select spcname 
from pg_tablespace 
where oid=( select dattablespace
           from pg_database
           where datname='musicdb' );

---
 spcname 
---------
 enmtbs
(1 row)

omm=# 

4.查看数据库下有哪些模式

\dn+

 --或
SELECT catalog_name, schema_name, schema_owner FROM information_schema.schemata;

omm=# SELECT catalog_name, schema_name, schema_owner FROM information_schema.schemata;
 catalog_name |    schema_name     | schema_owner 
--------------+--------------------+--------------
 omm          | pg_toast           | omm
 omm          | cstore             | omm
 omm          | pkg_service        | omm
 omm          | dbe_perf           | omm
 omm          | snapshot           | omm
 omm          | blockchain         | omm
 omm          | pg_catalog         | omm
 omm          | public             | omm
 omm          | sqladvisor         | omm
 omm          | information_schema | omm
 omm          | db4ai              | omm
 omm          | user1              | user1
(14 rows)

 omm          | dbe_pldebugger     | omm
 omm          | dbe_pldeveloper    | omm

5.查询当前连接的数据库下有哪些表:

--这是一个sql
with my_tables(table_catalog, table_schema, table_name, table_type) as
      (   select table_catalog, table_schema, table_name, table_type
          from information_schema.tables
         where table_schema not in ('pg_catalog', 'information_schema','dbe_perf')
       )
 select * from my_tables;


————————
omm=# with my_tables(table_catalog, table_schema, table_name, table_type) as
omm-#       (   select table_catalog, table_schema, table_name, table_type
omm(#           from information_schema.tables
omm(#          where table_schema not in ('pg_catalog', 'information_schema','dbe_perf')
omm(#        )
omm-# 
omm-#  select * from my_tables;
 table_catalog |  table_schema   | table_name | table_type 
---------------+-----------------+------------+------------
 omm           | db4ai           | snapshot   | BASE TABLE
 omm           | dbe_pldeveloper | gs_errors  | BASE TABLE
 omm           | dbe_pldeveloper | gs_source  | BASE TABLE
 omm           | public          | cuser      | BASE TABLE
 omm           | public          | newt1      | BASE TABLE
(5 rows)

6.更改数据库默认的表空间

--CREATE TABLESPACE fast_ts  RELATIVE LOCATION 'tablespace/fast_ts';
--ALTER DATABASE musicdb  SET TABLESPACE fast_ts;
--select spcname 
from pg_tablespace 
where oid=( select dattablespace
           from pg_database
           where datname='musicdb' );


--
 spcname 
---------
 fast_ts
(1 row)

7.重新命名数据库

-- ALTER DATABASE musicdb RENAME TO  xxx;
 
omm=# ALTER DATABASE musicdb RENAME TO  xxx;
ALTER DATABASE
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
 xxx       | omm   | UTF8     | C       | C     | 
(5 rows)

8.修改数据库的默认用户

CREATE USER userxx  IDENTIFIED BY 'userx@ustb2020';
ALTER USER userxx  SYSADMIN;
ALTER DATABASE xxx OWNER to userxx;
 
---
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
 xxx       | userxx | UTF8     | C       | C     | 
(5 rows)

9.删除数据库

DROP DATABASE xx;

----
omm=# DROP DATABASE xxx;
DROP DATABASE
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=#            |       |          |         |       | omm=CTc/omm
(4 rows)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论