首页 > 数据库 >PostgreSQL 数据库与模式(二)

PostgreSQL 数据库与模式(二)

时间:2023-07-02 09:45:12浏览次数:43  
标签:en PostgreSQL postgres 数据库 US 模式 test UTF

删除数据库

如果确定一个库不需要了,可以使用DROP DATABASE语句删除一个数据库(工作中谨慎删库):

DROP DATABASE [ IF EXISTS]name;

如果使用了IF EXISTS,删除一个不存在的数据库时不会产生错误信息。删除数据库会同时删除该数据库中所有的对象,以及文件系统中的数据目录。只有数据库的拥有者才能够删除数据库。另外,如果数据库上存在用户连接,无法执行删除操作,可以连接到其他数据库执行删除命令。以下语句可以用于删除newdb数据库:

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 test      | wdh      | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(4 rows)

postgres=# drop database test;
DROP DATABASE
postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres

DROP DATABASE命令的删除操作无法恢复,删库时千万小心!千万小心!千万小心!

管理模式

创建了数据库之后,还需要创建模式(Schema)才能够存储数据库对象。通常在创建一个新的数据库时,默认会创建一个模式public。首先,创建一个新的数据库test:

postgres=# CREATE DATABASE test;
CREATE DATABASE
postgres=# \c test;
You are now connected to database "test" as user "postgres".
test=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 public | postgres
(1 row)

其中,\c用于连接到一个数据库;\dn用于查看当前数据库中的模式。也可以使用SQL语句查询模式:

select * from pg_namespace
99            pg_toast    10    
12314    pg_temp_1    10    
12315    pg_toast_temp_1    10    
11            pg_catalog    10    {postgres=UC/postgres,=U/postgres}
2200    public    10    {postgres=UC/postgres,=UC/postgres}
13887    information_schema    10    {postgres=UC/postgres,=U/postgres}
            

查询结果还显示了系统提供的其他模式。与数据库的管理类似,PostgreSQL也提供了管理模式的语句:

  • CREATE SCHEMA,创建一个新的模式。
  • ALTER SCHEMA,修改模式的属性。
  • DROP SCHEMA,删除一个模式。

来看一个简单的例子,首先在test中创建一个新的模式:

test=# create schema hr;
CREATE SCHEMA
test=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 hr     | postgres
 public | postgres
(2 rows)

创建模式时还可以指定它的拥有者:

test=# CREATE SCHEMA app AUTHORIZATION wdh;
CREATE SCHEMA
test=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 app    | wdh
 hr     | postgres
 public | postgres
以pg_开头的名称是系统保留的模式名称,用户无法创建这样的模式。创建了模式之后,我们就可以在模式中创建各种数据库对象,例如表、数据类型、函数以及运算符等等。如果需要修改已有模式的属性,可以使用ALTER SCHEMA语句:
ALTER SCHEMA name RENAME TO new_name
ALTER SCHEMA name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }

以上语句分别用于修改模式的名称和拥有者。以下语句将模式hr的拥有者改为wdh:

test=# alter schema hr owner to wdh;
ALTER SCHEMA
test=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 app    | wdh
 hr     | wdh
 public | postgres

如果模式中没有任何对象,使用以下语句即可删除该模式:

DROP SCHEMA name;

以下示例将会删除模式app:

test=# drop schema app;
DROP SCHEMA
test=# \dn
  List of schemas
  Name  |  Owner   
--------+----------
 hr     | wdh
 public | postgres
(2 rows)

如果模式中存在其他对象,以上语句无法执行;需要先删除该模式中所有的对象,或者使用以下语句级联删除这些对象:

DROP SCHEMA name CASCADE;

级联删除可能会删除一些我们意料之外的对象,使用时需要小心。数据库中的大多数对象都位于某个模式之中,这样设计的好处在于:

  • 允许多个用户使用同一个数据库而不会互相干扰,他们可以使用不同的模式来维护自己的数据。
  • 将数据库对象进行逻辑上的分组,便于管理。
  • 第三方应用可以使用单独的模式,不会与系统中的其他对象产生命名冲突。
在工作中常用的数据库对象中,最主要的就是数据表(table)。

标签:en,PostgreSQL,postgres,数据库,US,模式,test,UTF
From: https://www.cnblogs.com/wdh01/p/17230934.html

相关文章

  • Settle Finance:以区块链技术为核心的P2P借贷模式
    "在数字化世界中,我们看到了许多技术进步如何推动金融行业的革新。其中,Peer-to-Peer(P2P)借贷模式的出现为借贷市场带来了新的可能性。然而,这个模式也带来了诸多问题,尤其是在信任和安全性方面。随着区块链技术的兴起,我们看到了它在改善P2P模式中的这些问题上的巨大潜力。区块链的......
  • ACM模式机考准备指南
    1熟练掌握格式化输入输出方法ACM模式需要题目要求,按照规定的格式自己手动写输入和输出的代码,如果没有充分准备,考试的时候就有可能会在输入输出这块卡很久,浪费考试的时间,反之,如果能够掌握各种格式的输入输出方法,则可以让我们在考试的时候快速完成输入输出代码的编写,节省出更多的......
  • 什么是 CSR、SSR、SSG、ISR - 渲染模式详解
    本文以React、Vue为例,介绍下主流的渲染模式以及在主流框架中如何实现上述的渲染模式。前置知识介绍看渲染模式之前我们先看下几个主流框架所提供的相关能力,了解的可跳到下个章节。挂载组件到DOM节点这是主流框架最基本的能力,就是将组件渲染到指定的DOM节点上。在React......
  • 提升项目数据查询速度:从pgsql数据库性能到SQL优化的实战经验分享
    最近在项目中遇到这样一个问题,在进行数据查询的时候,特别的慢。项目的基本情况首先描述下项目的使用情况,数据库使用的是postgresql关系型数据库,主要数据存储字段data使用的类型是JSONB。data字段存储数据,这个数据是包含了不少的图元,特别是在性能测试中,加入了特别多的图元信息,最......
  • 向量数据库 及其 应用
    什么是向量数据库向量数据库是一种专门用于存储和处理向量数据的数据库系统。向量数据是指由一组数值或特征组成的数据,可以表示为多维空间中的向量。向量数据库提供了高效的存储和查询机制,以支持对大规模向量数据的快速检索和分析。传统的关系型数据库在处理向量数据时存在一些......
  • Thinkphp6 连接达梦数据库
    Thinkphp6连接达梦数据库这里使用IDEAphpEnv PHP7.3Thinkphp6 桌面操作系统:Windows11虚拟机:VMware服务器操作系统:银河麒麟在虚拟机操作与windows无异参考资料参考资料第一步配置php环境在达梦数据库安装目录下找到pdo73nts_dm.dllphp73nts_dm.dll两个文件......
  • postgresql离线安装及双机热备
    前言:本文是做主库的热备份到从库,即主库中的数据即时备份到从库,第1-5步是要在主机和备机都要执行,第6步是主机的数据库初始化,第8步是备机的数据库初始化1.安装依赖(主机,备机)root用户在一台有网的电脑上先下载好所需的依赖yuminstall--downloadonly--downloaddir=/tmp/zlib-d......
  • 肖sir___数据库语句优化方法
        1.避免出现SELECT*FROMtable语句,要明确查出的字段。案例:好:sql= "selectpeople_name,pepole_agefrompeople";坏:sql= "select*frompeople";使用select*的话会增加解析的时间,另外会把不需要的数据也给查询出来,数据传输也是耗费时间的,比如text类型......
  • IDEA:用IDEA生成对应数据库表的实体类
    不想从数据库一个个生成实体类。配置好数据库信息后,在项目结构里配置JPA,下载配置persistence.xml文件。 第一次使用需要下载对应jar包,确定即可。之后会在下方出现相应数据库信息,右键数据库 点击通过数据库架构  确定则生成,当新生成表时,可能不显示,退出idea或刷新,再......
  • 10.8 多例模式
    本质上与单例模式没有区别classColor{ //在类内部提供有若干个实例化对象,如果为了方便管理,也可以通过对象数组的形式定义; privatestaticfinalColorRED=newColor("红色");//实例化对象 privatestaticfinalColorGREEN=newColor("绿色"); privatestaticfi......