逻辑结构管理

数据库管理

创建数据库:

1
create database name;

修改数据库:

1
2
3
4
alter database [name] rename to [newname]; # 重命名数据库
alter database [name] owner to [new_owner];# 修改所属用户
alter database [name] set tablespace [new_tablespace];# 修改表空间
alter database [name] connnection limit [10];# 修改数据库最大连接数

删除数据库

1
drop database [name];

模式(SCHEMA)

模式(schema) 是数据库中的一个概念,可以将其理解为一个命名空间或目录。不同的模式下可以有相同名称的表、函数等对象且互相不冲突。提出模式的概念是为了便于管理,只要有权限,每个模式(schema) 的对象可以互相调用。在 PostgreSQL中,一个数据库包含一个或多个模式,模式中又包含了表、函数及操作符等数据库对象。在 PostgreSQL中,不能同时访问不同数据库中的对象,当要访问另一个数据库中的表或其他对象时,需要重新连接到这个新的数据库,而模式没有此限制。一个用户在连接到一个数据库后,就可以同时访问这个数据库中多个模式的对象。从这个特性来说,PostgreSQL中模式的概念与Mysql中 Database的概念是等同的。在 Mysql中可以同时访问多个Database中的对象,就与在PostgreSQL中可以同时访问多个Schema中的对象是一样的。在 Oracle数据库中,一个用户就对应一个schema。大家在以后的学习过程中需要注意在不同的数据库系统(Oracle、Mysql) 中 Database、模式这些概念的不同。

使用模式的主要原因:

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

创建模式:

1
create schema [name];

删除模式:

1
drop schema [name];

查看模式:

1
drop schema [name];

默认的模式是public,如果要操作某个模式下的对象,需要添加一个修饰。
例如,在temp的模式下创建一个表:

1
2
create schema temp;
create table temp.test (id int,name varchar);

模式的权限

默认情况下,用户无法访问模式中不属于他们的对象。若要访问,模式的所有者必须在模式上赋予他们“USAGE”权限。为了让用户使用模式中的对象,可能需要赋予适合该对象的额外权限。用户也可以在别人的模式里创建对象,当然,这需要被赋予了在该模式上的“CREATE”
权限。请注意,默认情况下每个人在“public”模式上都有“CREATE”和 “USAGE”权限,也就是说允许所有可以连接到指定数据库上的用户在这里创建对象。如果你不打算这么做,
可以撤销这个权限,命令如下:

1
revoke create on schema public from public;

其中,第一个 “public”是模式的名称,第二个“PUBLIC”的意思是“所有用户”。在第一句里它是个标识符,而第二句里是个关键字,关键字是可以有大小写的。在回收权限后,其他用户就不能在模式“public”下创建对象了。