psql-05数据库,模式
数据的组织结构
- 数据库;表,索引;数据行
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数据库,模式的更多相关文章
- Android-MediaProvider数据库模式
原文地址:http://www.otechu.me/zh/2011/10/schema-of-android-mediaprovider-database/ 摘要: Android MediaProv ...
- DDL_数据库模式定义语言
2014年11月22日 15:53:24 DDL 定义 define 概念:是用于描述数据库中要存储的现实世界实体的语言.一个数据库模式包含该数据库中所有实体的描述定义. ...
- mysql引擎,完整的见表语句,数据库模式, 常用数据类型,约束条件
引擎 show engines : 查看引擎 innodb(默认引擎):支持事务,行级锁,外键 myisam:查询效率由于innodb,不需要支持事务,行级锁,外键,可以选用myisam来优化数据库 ...
- ADO.Net两种访问数据库模式
在连接模式下的数据库访问通常包括以下几个步骤: 1.通过数据库连接类(DbConnection)链接类指定到数据库服务器的数据库 2.通过数据库命令类(DbCommand)在数据库上执行SQL命令,可 ...
- Linux环境下将Oracle11g数据库模式由非归档模式(Noarchivelog)修改为自动归档模式(archivelog)
1.查看Oracle当前版本 select * from v$version 如图所示: 2.切换到Oracle用户 su - oracle 如图所示: 3.进入sqlplus(此时尚未登录oracl ...
- 05 数据库入门学习-正则表达式、用户管理、pymysql模块
一.正则表达式 正则表达式用于模糊查询,模糊查询已经讲过了 like 仅支持 % 和 _ 远没有正则表达式灵活当然绝大多数情况下 like足够使用 #语法 select *from table whe ...
- Oracle12c传统数据库模式 OGG
OGG12C 配置 环境配置: 安装数据库Oracle12c 安装源端OGG:oggs PORT:7809 安装目标端OGG:oggt PORT:7909 源端和目标端地址:127.0.0.1 ...
- GoLang设计模式05 - 原型模式
原型模式也是一种创建型模式,它可以帮助我们优雅地创建对象的拷贝.在这种设计模式里面,将克隆某个对象的职责交给了要被克隆的这个对象.被克隆的对象需要提供一个clone()方法.通过这个方法可以返回该对象 ...
- 来玩Play框架05 数据库
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 数据库是整个站点的数据储藏室.用户提交的数据可以存储在数据库中,以便未来使用.Pl ...
随机推荐
- HTML 基础
1.HTML 超文本标记语言 2.网页分类: 动态网页 静态网页 ①静态网页与动态网页区别: 主要:动态网页与数据库链接,静态网页不与数据库连接: ②静态网页 修改展示图片 必须修改源代码 : ...
- 启动Eclipse弹出:Failed to load JavaHL Library 错误框的解决办法
一.问题背景描述: eclipse安装完svn插件以后,在启动时出现:Failed to load JavaHL Library. These are the errors that were en ...
- Python--set常用操作函数
python提供了常用的数据结构,其中之一就是set,python中的set是不支持索引的.值不能重复.无需插入的容器. 简单记录下set常用的操作函数: 1.新建一个set: set("H ...
- 模拟赛1102d1
炮(cannon)[题目描述]众所周知,双炮叠叠将是中国象棋中很厉害的一招必杀技.炮吃子时必须隔一个棋子跳吃,即俗称"炮打隔子". 炮跟炮显然不能在一起打起来,于是rly一天借来了 ...
- MVC4 @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderAction的作用和区别
1. RenderBody在Razor引擎中没有了“母版页”,取而代之的是叫做“布局”的页面(_Layout.cshtml)放在了共享视图文件夹中.在这个页面中,会看到标签里有这样一条语句:@Rend ...
- cocospod 安装和使用 podfile 问题解决
Podfile 不识别 usr_framework!,系本地Pods版本太低,要在0.36以上. 以下转自:http://blog.csdn.net/eqera/article/details/393 ...
- hdu5878(枚举,打表)
题目链接:hdu5878 题意:到一行输入t,表示下面有t组数据,然后下面t行每行输入一个数n; 定义x==2^a*3^b*5^c*7^d(a, b, c, d为自然数,x不大于1e+9): 要求对于 ...
- sql server 常用的函数小汇
摘录些许sqlserver 常用到的一些函数,便于日常学习使用 一.字符转换函数1.ASCII()返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用‘’括起来,但 ...
- Jquery.Datatables 服务器处理(Server-side processing)
看了看介绍 http://datatables.club/manual/server-side.html 没有经过处理的分页,先显示出来看看效果,就这样写(存储过程自己写) cshtml " ...
- bluetooth service uuid
转自:https://www.bluetooth.com/specifications/assigned-numbers/service-discovery service discovery ...