前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OushuDB 数据库基本用法(中)

OushuDB 数据库基本用法(中)

原创
作者头像
彦小哲
修改2021-11-23 12:20:24
4630
修改2021-11-23 12:20:24
举报
文章被收录于专栏:数据库学习经验分享

1、概述

一个OushuDB集群管理着多个数据库(database),每个数据库又包含多个模式(schema), 一个模式包含多个对象(表,视图,函数等),所以这些对象之间的层级结构为:

database -> schema -> (tables, functions, views) 每个模式,表,视图,函数等只属于一个database。本章主要介绍每一种对象的常见用法。具体使用语法可以参见参考手册。

2、数据库

OushuDB在初始化完成后,会默认生成三个数据库,可以使用l命令查看,或者查看pg_database系统表。

代码语言:javascript
复制
postgres=# \l
                  List of databases
   Name    |  Owner   | Encoding | Access privileges
-----------+----------+----------+-------------------
 postgres  | ChangLei | UTF8     |
 template0 | ChangLei | UTF8     |
 template1 | ChangLei | UTF8     |
(4 rows)

其中template0和template1为模版数据库。template1为系统默认用来创建新数据库的模版数据库,用户可以修改。template0默认不接受连接,所以不可更改,目的是始终保存一个干净的模版数据库。

创建一个数据库的时候,可以指定一个数据库的模版数据库。缺省为template1,现在OushuDB只支持以template0,template1和postgres数据库为模版数据库。例如:

代码语言:javascript
复制
postgres=# create database tdb; # 创建一个新数据库,默认以template0为模版
CREATE DATABASE

postgres=#\c postgres  # 连接postgres
postgres=# create table test(i int);  # 在postgres数据库中创建表test
CREATE TABLE

postgres=# create table test_orc(i int) with (appendonly=true, orientation=orc);  # 在postgres数据库中创建ORC格式表
CREATE TABLE

postgres=# create database dbnew template postgres;
CREATE DATABASE

postgres=#\c dbnew # 连接dbnew

可以看到,dbnew中现在包含test表

代码语言:javascript
复制
dbnew=#\d
               List of relations
 Schema | Name | Type  |  Owner   |   Storage
--------+------+-------+----------+-------------
 public | test | table | ChangLei | append only
(1 row)

3、模式

一个数据库包含多个模式(schema),而一个模式可以包含多种命名对象,比如表,数据类型,函数,操作符等。同一个对象名字可以用在不同的模式中而不产生冲突。比如schema1中可以包含表test,schema2中也可以同时包含名字为test的表。从这个意义上,模式很像一个命名空间(namespace)。

当创建一个对象时,默认被放置在public模式中。下面是系统默认创建的schema。

代码语言:javascript
复制
template1=# \dn
       List of schemas
        Name        |  Owner
--------------------+----------
 hawq_toolkit       | ChangLei
 information_schema | ChangLei
 pg_aoseg           | ChangLei
 pg_bitmapindex     | ChangLei
 pg_catalog         | ChangLei
 pg_toast           | ChangLei
 public             | ChangLei
(7 rows)

通常在这样几个场景下,用户需要使用模式:

  • 允许多个用户同时使用一个数据库,而不产生名字冲突。
  • 把数据库对象组织成多个schema,好像是多个命名空间一样
  • 第三方应用可以把它们的对象放到一个单独的schema中,而不和其他对象产生从图。

注意:schema不可以嵌套,也就是说,schema中不可以再包含schema。

下面是创建schema的例子。

代码语言:javascript
复制
create schema myschema;

创建或者存取一个schema中的对象,可以使用{schema}.{object}形式,例如

代码语言:javascript
复制
create table myschema.test(i int);
select * from myschema.test;

删除一个空的schema,可以使用:

代码语言:javascript
复制
drop schema myschame;

删除不空的schema,可以使用cascade关键词:

代码语言:javascript
复制
drop schema myschema cascade;

使用{schema}.{object}形式,通常用起来不是很方便。可以通过设置schema搜索路径来简化。”SHOW search_path”命令可以给出当前的schema搜索路径。”SET search_path TO schema-name1, schema-name2”可以设置schema搜索路径。例如:

代码语言:javascript
复制
postgres=# show search_path;
  search_path
----------------
 "$user",public
(1 row)

postgres=# create schema myschema;
CREATE SCHEMA

postgres=# set search_path = public, myschema;
SET

postgres=# show search_path;
   search_path
------------------
 public, myschema
(1 row)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、概述
  • 2、数据库
  • 3、模式
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档