一、数据库逻辑结构介绍

数据库:应用连接到一个数据库时,一般不能访问其它数据库,除非使用dblink等其他手段。

表、索引:postgresql中标的术语为relation,其它数据库中成为table。

数据行:每张表有多行数据,postgresql中称为tuple,其它数据库称row。

注意:在postgresql中,一个数据库(实例)下可以有多个数据库,而一个数据库不能属于多个实例。这跟oracle数据库不同。

二、数据库基本操作。

1.1  创建数据库:

create database name

  [ [with]  [owner [=] user_name ]  //  指定新建的数据库属于哪个用户,不指定使用当前用户。

    [template [=] template]      //  模板名(从哪个模板创建,不指定使用默认template1)

    [encoding [=] encoding ]  // 字符集编码    

    [lc_collate [=] lc_ctype]

    [tablespace [=] tablespace ]      // 指定的新数据库关联 表空间 的名字

    [connection limit [=] connlimit]   // 数据库可以接受多少并发连接,默认-1(无限制)

[]  中的参数都可省略为create database db_name;

1.2  修改数据库的方法:

alter database name [  [with]  option  [...]  ]

option 可以是:

  connection limit connlimit

  alter database name rename to new_name;

  alter database name owner to new_owner;

  alter database name set tablespace new_tablespace;

  alter database name set configuration_parameter from current;

  alter database name reset configuration_paramter;

  alter database name reset all

eg: 修改数据库的最大连接数

testdb=# alter database testdb connection limit 10;
ALTER DATABASE
Time: 6.557 ms

  eg: 修改数据库名称

testdb=# alter database test rename to testdb1;
ALTER DATABASE
Time: 9.537 ms

  eg:关闭在数据库testdb上的默认索引扫描

testdb=# alter database testdb set enable_indexscan to off;
ALTER DATABASE
Time: 12.012 ms

  

1.3  删除数据库

drop database [if exists] name;

注意:如果有人连接这个数据库,则不能删除;

不能再事物块中删除数据库;可以修改。

三、模式schema

1.1 定义:模式可以理解为一个命名空间或者目录。不同模式下可以有相同名称的表,函数等对象且互相不冲突。每个模式的对象可以相互调用。

一个数据库可以包含多个模式,一个模式中可以包含表、函数以及数据库对象。

postgresql中,不能同时访问不同数据库中的对象,而模式没有此限制。schema的这点概念类似于mysql中的database。

使用schema的原因:
  允许多个用户在使用同一个数据库时互不干扰。

  把数据库对象放在不同的模式下,然后组成逻辑组,让他们更便于管理。

  第三方应用可以放在不同的模式中,这样就不会和其它对象的名字冲突了。

2.1 模式的使用

create schema schemaname [ authorization username ] [ schema_elemane [...]]

2.1.1 创建、查看、删除一个schema

testdb=# create schema osdba;
CREATE SCHEMA
Time: 4.575 ms
testdb=# \dn
List of schemas
+--------+----------+
| Name | Owner |
+--------+----------+
| osdba | postgres |
| public | postgres |
+--------+----------+
(2 rows) testdb=# drop schema osdba;
DROP SCHEMA
Time: 7.558 ms
testdb=#

2.1.2 为repl用户创建模式repl;

postgres=# create schema authorization repl;
CREATE SCHEMA
postgres=#

2.1.3   创建模式的同时,在这个模式下创建一些表的视图:

postgres=# create schema osdba
create table t1 (id int, title text)
create table t2 (id int, content text)
create view v1 as
select a.id,a.title,b.content from t1 a,t2 b where a.id=b.id;
CREATE SCHEMA

  可以修改名称和owner,语法同数据库

testdb=#
alter schema osdba rename to osdbaold;
ALTER SCHEMA

  修改拥有者

testdb=# alter schema osdbaold owner to repl;
ALTER SCHEMA

  

2.2 模式的搜索路径

testdb=# show search_path;
search_path
-----------------
"$user", public
(1 row)

  

postgresql逻辑结构(一)的更多相关文章

  1. [转]PostgreSQL 逻辑结构 和 权限体系 介绍

    摘要: 本文旨在帮助用户理解PostgreSQL的逻辑结构和权限体系,帮助用户快速的理解和管理数据库的权限. 逻辑结构 最上层是实例,实例中允许创建多个数据库,每个数据库中可以创建多个schema,每 ...

  2. postgresql逻辑结构--表(二)

    一.创建表 语法: create table table_name( col01_name data_type, col02_name data_type, col03_name data_type, ...

  3. postgresql逻辑结构--用户及权限管理(七)

    一.用户和角色 二.创建用户和角色 三.权限管理 四.

  4. postgresql逻辑结构--索引(六)

    一.索引简介 二.索引分类 三.创建索引 四.修改索引 五.删除索引

  5. postgresql逻辑结构--视图(五)

    定义 一.创建视图 1.语法 create [or replace ]  [ temp |  temporary ]  view name [(column_name [,...])]  as que ...

  6. postgresql逻辑结构--表空间(四)

    一.创建表空间 1. 语法:create tablespace tablespace_name [owner user_name] location 'directory' postgres=# cr ...

  7. postgresql逻辑结构--触发器(三)

    触发器(tigger)是一种由事物自动触发执行的特殊存储过程,这些事件可以是对一个表进行INSERT.UPDATE.DELETE等操作. 一.创建触发器 create   [ constraint ] ...

  8. 学习推荐-Postgresql学习手册

    Postgresql之旅: http://www.cnblogs.com/stephen-liu74/archive/2012/06/08/2315679.html postgresql逻辑结构+权限 ...

  9. 浅谈PostgreSQL用户权限

    问题 经常在PG群里看到有人在问“为什么我对表赋予了权限:但是还是不能访问表” 解析 若你看懂德哥这篇文章PostgreSQL逻辑结构和权限体系介绍:上面对你就不是困扰你的问题 解决这个问题很简单:在 ...

随机推荐

  1. lis nlogn算法

    当前所在位的最长上升子序列只和前面一个字符有关 #include <iostream> #include <algorithm> using namespace std; ]; ...

  2. RxSwift学习笔记4:disposeBag/scheduler/AnyObserver/Binder

    let disposeBg = DisposeBag() //直接在创建 //在 subscribe 方法中创建 let ofObserval = Observable.of("a" ...

  3. 11.js循环与函数

    Switch语句 Switch(变量){ : 如果变量和1的值相同,执行该处代码 break; : 如果变量和2的值相同,执行该处代码 break; : 如果变量和3的值相同,执行该处代码 break ...

  4. Android-Kotlin-继承

    上一篇博客 Android-Kotlin-配置/入门 配置好了 AndroidStudio Kotlin 的环境: 1.先看一个案例,子类使用到父类的资源 [案例一] 父类 张翠山: package ...

  5. Python--多线程处理

    python中有好几种多线程处理方式,更喜欢使用isAlive()来判断线程是否存活,笔记一下,供以后查找 # coding: utf-8 import sys, time import thread ...

  6. C#之WinForm设置控件居中

    简单阐述 在C#的WinForm里面,原生控件是没有居中属性的,故通过重写OnResize(EventArgs e)方法,通过计算,重新定位控件位置. 以Label控件为例 (1)将label的Aut ...

  7. 【转】ABP使用Mysql数据库

    原文地址:https://www.cnblogs.com/LonelyCode/p/6477065.html 1.先安装Mysql的包,EntityFramework和Web项目都需要安装 2.修改W ...

  8. Meet in the middle

    搜索是\(OI\)中一个十分基础也十分重要的部分,近年来搜索题目越来越少,逐渐淡出人们的视野.但一些对搜索的优化,例如\(A\)*,迭代加深依旧会不时出现.本文讨论另一种搜索--折半搜索\((meet ...

  9. 讲讲我当年是怎么拿到AI研发公司offer的

    前言 很多的老铁私信问我,当年我是怎么拿到公司offer的,我记得我毕业是2015年,那时人工智能这个行业还没热起来,能提供的岗位很少但是面试的人更少,我又是本专业毕业的,所以当初找工作还算顺利,去面 ...

  10. centos 安装oracle 11g r2(三)-----表空间创建

    centos 安装oracle 11g r2(三)-----表空间创建 创建表空间前要保证监听与数据库实例已经启动 1.启动监听 [oracle@localhost ~]$ lsnrctl start ...