PostgreSQL使用指南
原文地址http://blog.csdn.net/yavobo/archive/2010/02/08/5298993.aspx PostgreSQL使用指南 注意:如果以缺省的用户postgres进入系统,为安全考虑,是不能执行某些操作的;如果要执行SQL等一些操作,必须要以另外的用户进入才行。 一、进入PostgreSQL的命令 可以用安装目录下的/scripts中的runpslq.bat批处理文件进入。 二、查看PostgreSQL中有多少个数据库 用命令/l可以显示当前数据库服务器中所有的数据库名。 三、改变当前数据库 /c 数据库名 四、新建一个数据库 create database 数据库名; 五、查看所有的用户 /du 六、新建用户 create user 用户名; 七、查看数据库中的表 /d 八、新建一个数据表 例如: CREATE TABLE weather ( 九、显示表结构 /d 表名; 十、用户管理 1、建立一个带密码、有创建数据库权限的用户:create user username password 'password'createdb; 2、删除一个用户:drop user username; 3、更改用户属性:alter user username [createdb] [nocreatedb] [createuser][nocreateuser] [in group groupname] [valid until 'month day year'],其中valid until 是设置有效期,格式是'月 日 年'。 十一、组的管理 和 Unix 里一样,组是一个逻辑上对用户分组,进而简化权限管理的方法∶ 权限可以赋予整个组,也可以对整个组撤除。 要创建一个组,使用CREATE GROUP name, 要向组中增加用户或删除用户,用 ALTER GROUP name ADD USER uname1,... 十二、用户、组及权限 1. 数据库用户 每个数据库集群都包含一个数据库用户的集合。 这些用户是和那些在同一个服务器上运行的操作系统的用户相独立的。 用户拥有数据库对象(比如说,表)以及可以把这些对象的权限赋予 其它用户,这样就能控制谁可以访问哪些对象。 本章描述如何创建和管理用户,以及介绍权限系统。 有关各种类型的数据库对象和权限的效果可以在PostgreSQL 7.3 用户手册 中找到。 1. 数据库用户 要创建一个用户,使用SQL 命令 CREATE USER:CREATE USER name。 name 遵循 SQL 标识的规则: 要么完全没有特殊字符,要么用双引号引起。要删除一个现有用户,使用类似的命令 DROP USER:DROP USER name 为了方便,shell 脚本createuser和 dropuser 提供了对了这些 SQL 命令的封装。我们可以在 shell命令上直接调用它们: createuser name 一个和数据库的活跃连接只能有一个用户身份进行。 和特定数据库联接的用户名是由初始化联接请求的应用以应用相关的方式声明的, 比如,psql 程序使用-U命令行选项声明它代表的进行联接 的用户。许多应用以当前操作系统的用户名为缺省(这样的应用包括 createuser 和 psql)。 这样我们就可以很方便地维护这两个用户集合之间地映射关系。 一个客户端联接可以用来联接的数据库用户集合是由客户 认证设置决定的,在 Chapter 4 里面有解释.(因此,一个客户端并不局限于以它的操作系统用户 同名的用户进行联接,就象你登录系统的名称不一定要是你的真实 名称一样.)因为用户地身份决定了一个已连接地客户端可用的权限, 所以在多用户环境里仔细配置这些内容是非常重要的。 2. 用户属性 database creation(创建数据库) password(口令) 一个用户的属性可以在创建后用 ALTER USER 修改. 参考 CREATE USER 和 ALTER USER 的手册获取细节。 一个用户也可以为许多运行时配置设置个人缺省, 那些配置在 Section 3.4 里描述。 比如,如果出于某种原因你想在所有你做的连接中关闭索引扫描(提示:不是个好主意), 你可以用ALTER USER myname SET enable_indexscan TO off;这样就会保存该设置(但是不是立即设置)并且在随后的连接中就好像 在会话开始之后都马上 SETenable_indexscan TO off;了一样。 你也可以在会话中修改这个设置;它只是缺省。要撤销任何这样的设置, 使用 ALTER USER username RESET varname;。 3. 组 要创建一个组,使用 CREATE GROUP name 4. 权限 我们有以下几种权限:SELECT(读), INSERT(追加), UPDATE(写),DELETE, RULE(规则),REFERENCES(外键), TRIGGER, CREATE,TEMPORARY,EXECUTE, USAGE,和 ALL PRIVILEGES。 有关PostgreSQL所支持的权限的更多信息,请 参阅 PostgreSQL 参考手册 里面的 GRANT 页获取更多详细的信息。修改或者删除一个对象的权限总是只有该对象的所有者才有. 要赋予权限,必需使用 GRANT 命令。要赋权限,用GRANT命令。因此,如果 joe 是一个现存用户,而 accounts是一个现存表,那么可以这样赋予 更新权限 要废除一个权限,用 REVOKE 命令: 十三、客户端psql的操作 *查看PostgreSQL的系统表:(摸索/查找中) *查看表名列表: /d *查看某个表的状况: /d [表名] *重命名一个表: alter table [表名A] rename to [表名B]; *修改表的所有者: (摸索/查找中) *删除一个表: drop table [表名]; ======================================== [表内基本操作]========================== *在已有的表里添加字段: alter table [表名] add column [字段名] [类型]; *删除表中的字段: alter table [表名] drop column [字段名]; *重命名一个字段: alter table [表名] rename column [字段名A] to [字段名B]; *给一个字段设置缺省值: alter table [表名] alter column [字段名] set default [新的默认值]; *去除缺省值: alter table [表名] alter column [字段名] drop default; *将已存在的表里某列设置为主码: (摸索/查找中) *将已存在的表里某几列设置为主码: (摸索/查找中) *取消某列的主码资格: (摸索/查找中) 在表中插入数据: insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......); 修改表中的某行某列的数据: update [表名] set [目标字段名]=[目标值] where [该行特征]; 删除表中某行数据: delete from [表名] where [该行特征]; delete from [表名];--删空整个表 ======================================== [备份]================================== 备份一个数据库: pg_dump 数据库名 > 备份文件 把备份文件导回原数据库或导入新数据库: cat 备份文件 | psql 数据库名 最好先把这个数据库的认证改为"trust"。 备份一个表: pg_dump -t table1 dbname > bk1.sql ======================================== ADD 需要为 psql 程序带入参数:psql -d databasename -U username -W。-d 用来指定数据库,-U 指定用户名,而 -W 要求 psql 提示你输入一个口令。当你成功地运行了 psql 以后,将每个 CREATE TABLE 查询单独地粘贴到 psql 中并按回车键。如果在你的 SQL 语句中有错误,psql 会给出相应提示。通过逐一地加入每一个表,你会得到每一个表的调试信息,这样做起来相当简单。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |