数据的组织结构

  • 数据库;表,索引;数据行
  • PostgreSQL中一个服务(实例)可以有多个数据库;而一个数据库不能属于多个实例;

数据库

创建数据库

create database name [owner] [template] [encoding] [tablespace] [connection limit].....
  • owner指定创建的数据库属于哪个用户;
  • template指定从哪个模版中创建数据库,默认为template1;
  • encoding创建新数据库使用的字符编码;
create databse test encoding 'LATIN1' template template0;

//上面必须使用template0,因为编码与区域设置必须与模版数据库相匹配;template0不包含任何会受字符集编码或排序影响的数据或索引;
  • tablespace指定和新数据库关联的表空间名称;

  • connection limit指定数据库可以接受多少并发的连接;默认-1无限制;

修改数据库

alter database test connection limit 10;

//改名
alter databasw test01 rename to test02; //修改配置参数
alter database test set enable_indexscan to off;

删除数据库

drop database [if exists] name;
  • 不能在事务块中删除数据库;但能修改数据库;

模式

  • 可以理解为一个命名空间活目录;不同的模式下可以有相同的名称的表,函数等;
  • PostgreSQL中不能同时访问不同的数据库中的对象;而模式没有此限制;

使用模式的原因

  • 允许多个用户在使用同一数据库时彼此互不干扰;
  • 把数据库对象放在不同模式下,然后组织成逻辑组,便于管理;
  • 第三方应用可以放在不同的模式中,这样就不会和其他对象的名称冲突;

使用

  • 创建:
create schema name;

//为test_user用户创建一个同名的模式

create schema authorization test_user;

//创建模式的同时还可以在这个模式下创建一些表的视图

create schema test
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;
  • 查看: \dn
  • 删除:drop schema name;
  • 修改
//修改名称
alter schema test rename to test1; //修改属主
alter schema test owner to newowner;
  • 查看非当前模式下的所有表: \d other_schema.*

公共模式

  • 实际上创建或访问模式中的对象格式为:schema_name.table_name
  • 通常情况下,创建一个新的数据库时会自动创建一个名为public的模式;

模式搜索路径

  • 为了简化定位对象,可以通过查找一个搜索路径来判断某个表在哪个模式下;
  • 查看当前搜索路径: show search_path; 默认为: "$user",public;
  • 修改当前搜索路径:
set search_path to newpath;  //当前session中

alter role username set search_path to newpath;  //修改权限下数据库的搜索路径

模式的权限

  • 一般用户无法访问模式中不属于他们的对象;
  • 若要访问,模式的所有者必须在模式上赋予usage权限; 创建赋予create权限;
  • 默认情况下每个人在public模式在都有create, usage权限;撤销:
revoke create on schema public from public; //最后一个public指所有用户;

模式的移植

  • SQL标准里,同一个模式里的对象是不能被不同用户所拥有的;有些数据了不允许创建和所有者不同名的模式(oracle);
  • 如果在PostgesSQL中为每个用户创建一个与用户名同名的模式,那么就能与Oracle数据库相兼容;
  • SQL标准里没有public模式概念;为了与其他数据库兼容不应该使用public模式;
  • 有些数据库系统没有模式或通过允许跨数据库访问来提供模式功能(mysql);假设mysql实例中有三个数据库,迁移到PostgreSQL时应该建立三个模式,使其与三个数据库相对应;

psql-05数据库,模式的更多相关文章

  1. Android-MediaProvider数据库模式

    原文地址:http://www.otechu.me/zh/2011/10/schema-of-android-mediaprovider-database/ 摘要: Android MediaProv ...

  2. DDL_数据库模式定义语言

    2014年11月22日 15:53:24 DDL 定义  define 概念:是用于描述数据库中要存储的现实世界实体的语言.一个数据库模式包含该数据库中所有实体的描述定义.               ...

  3. mysql引擎,完整的见表语句,数据库模式, 常用数据类型,约束条件

    引擎 show engines : 查看引擎 innodb(默认引擎):支持事务,行级锁,外键 myisam:查询效率由于innodb,不需要支持事务,行级锁,外键,可以选用myisam来优化数据库 ...

  4. ADO.Net两种访问数据库模式

    在连接模式下的数据库访问通常包括以下几个步骤: 1.通过数据库连接类(DbConnection)链接类指定到数据库服务器的数据库 2.通过数据库命令类(DbCommand)在数据库上执行SQL命令,可 ...

  5. Linux环境下将Oracle11g数据库模式由非归档模式(Noarchivelog)修改为自动归档模式(archivelog)

    1.查看Oracle当前版本 select * from v$version 如图所示: 2.切换到Oracle用户 su - oracle 如图所示: 3.进入sqlplus(此时尚未登录oracl ...

  6. 05 数据库入门学习-正则表达式、用户管理、pymysql模块

    一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了 like 仅支持 % 和 _ 远没有正则表达式灵活当然绝大多数情况下 like足够使用 #语法 select *from table whe ...

  7. Oracle12c传统数据库模式 OGG

    OGG12C 配置 环境配置: 安装数据库Oracle12c 安装源端OGG:oggs  PORT:7809 安装目标端OGG:oggt   PORT:7909 源端和目标端地址:127.0.0.1 ...

  8. GoLang设计模式05 - 原型模式

    原型模式也是一种创建型模式,它可以帮助我们优雅地创建对象的拷贝.在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象.被克隆的对象需要提供一个clone()方法.通过这个方法可以返回该对象 ...

  9. 来玩Play框架05 数据库

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 数据库是整个站点的数据储藏室.用户提交的数据可以存储在数据库中,以便未来使用.Pl ...

随机推荐

  1. cmd导入oracle数据

    ctrl+r 输入imp

  2. Apple Swift编程语言入门教程

    Apple Swift编程语言入门教程 作者: 日期: 布衣君子 2015.09.22 目录 1   简介 2   Swift入门 3   简单值 4   控制流 5   函数与闭包 6   对象与类 ...

  3. September 19th 2016 Week 39th Monday

    We come nearest to the great when we are great in humility. 我们最为谦逊的时候越接近伟大. When you are powerful en ...

  4. 建立controller

    复制controller,重建controller 改: @Controller("[productController]") @RequestMapping("/[pr ...

  5. jquery.validation.js 表单验证

    jquery.validation.js 表单验证   官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuer ...

  6. JS_ECMA基本语法中的几种封装的小函数-2

    大家好!今天继续给大家写一下ECMA中的剩下的小函数以及实用的实例: 首先先给大家说一下字符串.数组.数学方法以及json的一点小知识点: 字符串方法: str.length str.charAt(i ...

  7. Linux C程序内存空间

    linux下内存空间布置: 一个典型的Linux C程序内存空间由如下几部分组成: 代码段(.text).这里存放的是CPU要执行的指令.代码段是可共享的,相同的代码在内存中只会有一个拷贝,同时这个段 ...

  8. ASP.NET MVC中的Global.asax文件

    1.global.asax文件概述 global.asax这个文件包含全局应用程序事件的事件处理程序.它响应应用程序级别和会话级别事件的代码. 运行时, Global.asax 将被编译成一个动态生成 ...

  9. mxnet环境搭建随记

    安装mxnet还是遇到不少麻烦事,现在简单记一下,挖个坑,后续详细补充,打算写一下我的mxnet探索之旅. 更新: 具体安装mxnet,cuda,opencv过程已经补坑——点击进入 不知道为什么,在 ...

  10. Nginx详解(一)

    1.Nginx是什么? Nginx就是反向代理服务器. 首先我们先来看看什么是代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端.比如Go ...