目录
user:
table:
index:
sequence:
view:
pg操作命令:
数据对象使用介绍:
创建用户:
create user test with password '123';
赋予权限:
例如:给普通用户test赋予创建数据库的权限:
alter user test createdb;
创建数据库:
create database testdb owner test;
赋权限:
grant all privileges on database testdb to test;
删除用户:
drop user username;
如果用户下面有数据库,删除的时候会报如下错误:
ERROR: role "test" cannot be dropped because some objects depend on it
查看当前用户:
select user; / select * from current_user;
创建表:
create table student(
id int serial primary key,
name varchar(10) not null,
sex varchar(2)
);
删除表:
drop table tablename;
自增:
serial
插入数据使用序列:
insert into test values(nextval('testseq'),'szw','nan');
好处:
1、最主要的原因是可以大大加快数据的检索速度;
2、通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性;
3、可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义;
4、在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间;
5、通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。
弊端:
1、创建索引和维护索引要花费时间,且随着数据量的增加时间也会增加;
2、索引会占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间;
3、当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。
创建索引:
create index indexname on table(column);
删除索引:
drop index indexname;
有规律的生成唯一数字标识符
创建序列:
create sequence myseq
minvalue 1
maxvalue 10000000000
increment 1
start 1
cycle;
查询序列中的值:
select nextval('myseq'); //返回下一个序列值
select currval('myseq'); //返回当前序列值
刚创建的序列不能查询当前值,会报如下错误:
currval of sequence "myseq" is not yet defined in this session
删除序列:
drop sequence myseq;
修改序列:
alter sequence myseq
minvalue 1
maxvalue 10000000000
increment 1
start 1
cycle;
视图是一个基于一个或多个表的数据定义的虚拟表。视图是没有数据的,视图里面的数据都是来自实际的表。
优点:
1、简单化
看到的就是需要的。视图可以简化用户查询数据时的操作,将经常使用的查询定义成视图,以后不必每次查询都带着一堆查询条件。
2、安全性
通过视图和权限控制,让用户只能看到和修改他们有权限操作的数据。
3、逻辑独立
视图可以屏蔽真实表结构变化带来的影响。当表的结构发生变化时,我们只需要修改视图的定义即可,避免了修改实际使用数据的程序。
创建视图:
create view viewname as select c1,c2 from tablename;
删除视图:
drop view viewname;
查询视图:
select * from v1;
切换用户:
\c - test
切换数据库:
\c testdb
列出用户信息:
\du
列出数据库信息:
\l
列出当前数据库的所有表:
\d
查看表字段:
\d tablename
查看指定表的基本情况:
\d+ tablename
查询当前连接信息:
\conninfo
查看sql命令的解释:
\h 如:\h select
查看psql命令列表:
\?
启动pg:
pg_ctl start -l /usr/local/postgresql/log/pg_server.log
停止:
stop
重启:
restart
连接服务:
psql -U user -d database