数据库管理
创建数据库:
1 | create database name; |
修改数据库:
1 | alter database [name] rename to [newname]; # 重命名数据库 |
删除数据库
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 | create schema temp; |
模式的权限
默认情况下,用户无法访问模式中不属于他们的对象。若要访问,模式的所有者必须在模式上赋予他们“USAGE”权限。为了让用户使用模式中的对象,可能需要赋予适合该对象的额外权限。用户也可以在别人的模式里创建对象,当然,这需要被赋予了在该模式上的“CREATE”
权限。请注意,默认情况下每个人在“public”模式上都有“CREATE”和 “USAGE”权限,也就是说允许所有可以连接到指定数据库上的用户在这里创建对象。如果你不打算这么做,
可以撤销这个权限,命令如下:
1 | revoke create on schema public from public; |
其中,第一个 “public”是模式的名称,第二个“PUBLIC”的意思是“所有用户”。在第一句里它是个标识符,而第二句里是个关键字,关键字是可以有大小写的。在回收权限后,其他用户就不能在模式“public”下创建对象了。