执行SQL语句的方式
1.交互方式
psql mydatabase
mydatabase=# SELECT * FROM table;
2. 非交互方式 (单行命令)
psql mydatabase –c “SELECT * FROM table;”
3. 非交互方式 (多行命令)
psql mydatabase –f /home/lab1/sql/createdb.sql
每个SQL语句的结束需要使用分号(;) 来表示
psql基本使用命令
\? (psql查询命令帮助)
\h (SQL命令语法帮助)
\dt (显示表)
\dtS ( 显示系统表)
\dg or \du (显示角色)
\l (显示数据库)
\c db_name (连接到这个数据库)
\q (退出psql)
Greenplum管理提示
查看表的分布键:
gpskew -t table_name –c
试图
将频繁使用的查询定义为视图
视图在Greenplum数据库中不是实体
视图相关SQL命令:
– CREATE VIEW
– DROP VIEW
PSQL提示:
– 显示所有的视图:\dv
– 查看一个视图的定义:\d+ view_name
实例:
CREATE VIEW topten
AS SELECT name, rank, gender, year
FROM names, rank
WHERE rank < ’11’ AND names.id=rank.id;
SELECT * FROM topten ORDER BY year, rank;
稳定和不稳定的函数
支持仅在Master上运行的函数命令(没有FROM
语句):
– SELECT setval(‘myseq’, 201);
– SELECT foo();
不支持函数命令运行在segment级别且函数中包
含SQL或更改数据库的命令:
– SELECT * FROM foo();
不支持函数用于更新或删除命令且Mirrors是启用
的:
– UPDATE mytable SET id = nextval(myseq);
角色(数据库用户)
一个用户账号就是一个可以登录的角色
一个新定义角色的默认属性包括:
– NOSUPERUSER
– NOCREATEDB
– NOCREATEROLE
– INHERIT
– NOLOGIN (必须明确将LOGIN属性赋予用户级别的角色)
使用CREATE ROLE添加一个新角色
使用ALTER ROLE 对已有角色进行权限属性修改
实例:
CREATE ROLE john WITH LOGIN;
ALTER ROLE john WITH CREATEDB;
CREATE USER john;
角色成员(用户组)
一个角色可以是其它角色的成员
成员可继承用户组的对象权限
允许在同一个地方设置对象权限
角色权限不继承,可使用SET ROLE连接到用户组来使用其权限
用户组一般没有登录的权限
使用GRANT命令来授予成员资格
使用REVOKE命令将成员从用户组删除
实例:
CREATE ROLE admin CREATEROLE CREATEDB;
GRANT admin TO john, sally;
REVOKE admin FROM bob;
SET ROLE admin;
创建资源队列
SQL命令
– CREATE RESOURCE QUEUE
– ALTER RESOURCE QUEUE
– DROP RESOURCE QUEUE
资源队列的限制条件
– 活跃查询限制
例如:CREATE RESOURCE QUEUE adhoc ACTIVE THRESHOLD 10
IGNORE THRESHOLD 1000.0;
– 使用资源限制
例如:CREATE RESOURCE QUEUE batch1 COST THRESHOLD
1000000.0 NOOVERCOMMIT;
CREATE RESOURCE QUEUE batch1 COST THRESHOLD 1e+6;