• PostgreSQL修炼之道笔记之基础篇(八)


    目录

     

    第六章 逻辑结构管理(一)

    6.1 数据库逻辑结构介绍

     6.2 数据库基本操作

    6.2.1 创建数据库

    6.2.2 修改数据库

    6.2.3 删除数据库

    6.2.4 常见问题及解答


    第六章 逻辑结构管理(一)

    6.1 数据库逻辑结构介绍

    在一个PostgreSQL数据库系统中,数据的组织结构可以分为以下三层:
    (1)数据库:一个PostgreSQL数据库服务下可以管理多个数据库,当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库中的内容(除非使用dblink 等其他手段)。
    (2)表、索引:一个数据库中有很多表、索引。一般,在 PostgreSQL中表的术语为“Relation ”,而在其他数据库中则叫“Table”。
    (3)数据行:每张表中有很多行数据。在 PostgreSQL中行的术语一般为“Tuple”,而在其他数据库中则叫“Row”。

     6.2 数据库基本操作

    6.2.1 创建数据库

    创建数据库语句如下:

    1. CREATE DATABASE name
    2. [[ WITH ][OWNER[=] user_name ]
    3. [TEMPLATE [=-] template ]
    4. [ENCODING [=] encoding ]
    5. [LC_COLLATE[=]lc_collate ]
    6. [LC_CTYPE[=]lc_ctype ]
    7. [TABLESPACE [=] tablespace ]
    8. [CONNECTION LIMIT [=]connlimit ]]

    一般情况下创建语句,不需要上面那么多的参数,简单的创建数据库的语句如下:

    create database osdbadb;

    6.2.2 修改数据库

    修改数据库的方法如下:
     

    ALTER DATABASE name [ [ WITH ] option [ ... ] ]
    

    这里的option可以是:

    1. CONNECTION LIMIT connlimit
    2. ALTER DATABASE name RENAME TO new_nameALTER DATABASE name OWNER TO new_owner
    3. ALTER DATABASE name SET TABLESPACE new_tablespace
    4. ALTER DATABASE name SET configuration_parameter { TO |= } { value | DEFAULT}
    5. ALTER DATABASE name SET configuration_parameter FROM CURRENT
    6. ALTER DATABASE name RESET configuration_parameter
    7. ALTER DATABASE name RESET ALL

    示例1:改变数据库testdb01的最大连接数为10。

    1. postgres=# alter database testdb01 CONNECTION LIMIT 10;
    2. ALTER DATABASE


    示例2:改变数据库testdb01的名称为mydb01。

    1. postgres=# alter database testdb01 rename to mydb01;
    2. ALTER DATABASE

    示例3:改变数据库testdb01的配置参数,让用户一连接到这个用户时,某个配置参数就设置为一个指定的值。比如,关闭在数据库testdb01上的默认索引扫描,命令如下:

    ALTER DATABASE testdb01 SET enable_indexscan To off;

    6.2.3 删除数据库

    删除数据库的命令比较简单,格式如下:

    DROP DATABASE [IF EXISTS ] name

    示例1:直接删除一个数据库mytestdb01。

    1. osdba-# drop database mytestdb01;
    2. DROP DATABASE

    示例2:如果一个数据库存在,则将其删除,如果不存在,使用删除命令时也不报错。

    1. osdba=# drop database if exists mytestdb01 ;
    2. NOTICE:database "mytestdb01" does not exist, skipping
    3. DROP DATABASE

    注意:如果还有人连接在这个数据库上,将不能删除该数据库,如下:

    1. osdba=# drop database inytestdb01;
    2. ERROR:database "mytestdb01" is being accessed by other users
    3. DETAIL:There is 1 other session using the database.

    6.2.4 常见问题及解答

    问题一:能否在事务块中删除数据库?

    答:不能,情形如下。

    1. osdba=# create database mytestdb02;
    2. ERROR: CREATE DATABASE cannot run inside a transaction block
    3. STATEMENT:create database mytestdb02;
    4. ERROR: CREATE DATABASE cannot run inside a transaction block
    5. osdba=#create database mytestdb01 ;
    6. CREATE DATABASE
    7. osdba=# begin;
    8. BEGIN .
    9. osdba=# drop database mytestdb01;
    10. ERROR:DROP DATABASE cannot run inside a transaction block
    11. STATEMENT:drop database mytestdb01;
    12. ERROR:DROP DATABASE cannot run inside a transaction block

    问题二:能否在事务块中修改数据库?
    答:可以,示例如下。

    1. osdba=# begin;
    2. BEGIN
    3. osdba=# alter database mytestdb0l rename to mydb01;
    4. ALTER DATABASE
    5. osdba=#rollback;
    6. ROLLBACK
  • 相关阅读:
    MySql -- 读写分离
    知识储备--基础算法篇-二叉树
    第四范式在港交所主板正式挂牌上市
    如何恢复电脑上删除的文件?说到做到!
    Python基础入门篇【18】--python中的流程控制之条件判断
    OpenHarmony自定义组件介绍
    【如何成为学习高手】学习是有方法的,按照正确的方法练习,每个人都可以成为学霸
    HDFS中如何存储元数据
    BGP笔迹2
    【网络编程】第三章 网络套接字(TCP协议程序+多进程+多线程+线程池)
  • 原文地址:https://blog.csdn.net/Auspicious_air/article/details/126853632