postgres学习笔记

字段基本类型

int
char(num)
varchar(num)
serial
更多详情

限制

not null
primary key
unique

登录

psql -U dbuser  默认登录进入名为dbuser的数据库中,如果不存在请-d指定相应进入的数据库
psql -U username -p port -h localhost -d dbname

命令行

创建数据库用户具有超级权限
createuser dbuser -s ;

createdb dbname ;
password dbuser ;

psql 进入postgres

基本命令
    \l  显示当前所有的数据库
    \c dbname   切换进入数据库
    \c  查看当前的连接信息
    \d  当前库的所有表信息
    \d tablename 当前表的所有字段信息
    \q  退出登录

创建用户

create user dbuser ;
password dbuser ;

create user dbuser with password 'pwd' ;
create database dbname owner dbuser ;

授权

grant all privileges on database dbname to dbuser ;

创建数据库

create database dbname ;
drop database dbname ;

备份数据

pg_dump -h host -U user dbname >  file.sql.bak

还原数据

psql -h host -U user -d dbname < file.sql.bak

创建新表

//serial 指定自增
create table users(id serial primary key,name varchar(20) not null,info text,lasttime date,age int not null default 23) ;

插入数据

INSERT INTO user_tbl(name, signup_date) VALUES(';张三';, ';2013-12-22';);

选择记录

select * from tablename limit length offset start ;

更新数据

UPDATE user_tbl set name = '李四'  WHERE name = '张三' ;

删除记录

DELETE FROM user_tbl WHERE name = '李四' ;

清空表数据

truncate table tset1
delete from tset1

添加栏位

ALTER TABLE user_tbl ADD email VARCHAR(40);

更新结构

ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
alter table gdt_accounts alter system_industry_id type varchar(12) ;

更名栏位

ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;

删除栏位

ALTER TABLE user_tbl DROP COLUMN email;

表格更名

ALTER TABLE user_tbl RENAME TO backup_tbl;

删除表格

DROP TABLE IF EXISTS backup_tbl;

sql优化

postgreSQL获取数据库中所有table表名

SELECT   tablename   FROM   pg_tables  
WHERE   tablename   NOT   LIKE   'pg%'  
AND tablename NOT LIKE 'sql_%'
ORDER   BY   tablename;

postgreSQL获取某个表tablename所有字段名称 , 类型,备注,是否为空 等

SELECT a.attname as name, pg_type.typname as typename, col_description(a.attrelid,a.attnum) as comment,a.attnotnull as notnull
FROM pg_class as c,pg_attribute as a inner join pg_type on pg_type.oid = a.atttypid
where c.relname = 'tablename' and a.attrelid = c.oid and a.attnum>0

postgreSQL获取某个表tablename的主键信息

select pg_attribute.attname as colname,pg_type.typname as typename,pg_constraint.conname as pk_name from 
pg_constraint  inner join pg_class 
on pg_constraint.conrelid = pg_class.oid 
inner join pg_attribute on pg_attribute.attrelid = pg_class.oid 
and  pg_attribute.attnum = pg_constraint.conkey[1]
inner join pg_type on pg_type.oid = pg_attribute.atttypid
where pg_class.relname = 'tablename' 
and pg_constraint.contype='p'

PostgreSQL获取数据库中所有view名视图

SELECT   viewname   FROM   pg_views  
WHERE     schemaname ='public'  

添加注释

postgresql给列添加注释信息
    create table user( userid int not null, phonenumber int); comment on column user.userid is 'The user ID';
postgresql给表添加注释信息
    comment on table user is 'Our session logs';
postgresql 查询注释信息
    select description from pg_descriptionjoin pg_class on pg_description.objoid = pg_class.oidwhere relname = 'user'
查询指定schema下注释信息
    select description from pg_description join pg_class on pg_description.objoid = pg_class.oid join pg_namespace on pg_class.relnamespace = pg_namespace.oid where relname = '' and nspname=''
添加索引

创建索引

CREATE INDEX indexname ON test1 (column);    

分析优化

explain analyze  select 1 from tbl_user where user_spell like '%CYL%';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章