`

PostgreSQL 菜鸟入门

 
阅读更多

之前从来没接触过Postgre SQL,这里记录下我的入门第一步,供跟我一样的新手分享,另外里面有说的不对的,欢迎各位大牛指正!

 

1、安装

  在本机,先安装一个centos7的虚拟机(这玩意还是在linux下玩比较靠谱),然后在官网下载9.3版本的源码包,参考官网手册的15.4节:

  ./configure 

  gmake

  gmake install

  安装完成,启动服务:

  /usr/local/pgsql/bin/pg_ctl start -l /usr/local/pgsql/log/startlogfile -D       /usr/local/pgsql/data

 

    

2、PG中的几个名词:

  ROLE,USER:

  user 和 role ,两个名词是一个概念,都是指用户,唯一的区别在于create user时默认是使用LOGIN选项的,也就是允许用户登录,而create role则不是

  DATABASE:这个概念等于MySQL或者SQLServer数据库的DATABASE概念

  SCHEMA:可以理解为一系列对象的集合,SQLServer用户对此并不陌生,MySQL中没这个概念

一个database中可以有多个schema,默认会有一个名为public的schema,不同的schema下面,可以有同名的对象名称。用户在创建对象时,如果不指定schema(既不手工指定,也不设置set search_path),则会将对象放到public下,还有一个名为pg_catelog的schema,存放系统内置的数据库类型、函数等一系列元数据,还有一个名为information_schema的schema,目前还没搞懂它和pg_catelog的具体区别,只知道它的默认所有者是db的owner,用户有权限操作它,包括drop;还有一点就是它不在search_path中,要访问其中的对象,必须带上其名称

  TABLESPACE:代表物理文件夹的位置,可以通过它来设置DB或者TABLE在磁盘上的IO存储位置

 

3、建立一个数据库,并允许远程连接进来

  3.1 在数据库服务器上,使用  psql postgres 命令连接进来(本地连接,管理员身份)

  3.2 创建一个用户(testdbrole1):

     create role testdbrole1 NOCREATEDB NOCREATEROLE LOGIN ENCRYPTED            PASSWORD '1' NOREPLICATION CONNECTION LIMIT 200;

  3.3 创建一个TABLESPACE(testtablespace1):

     CREATE TABLESPACE testtablespace1  OWNER testdbrole1  LOCATION            '/usr/local/pgsql/data/testtablespace1';

  3.4 创建一个数据库(testdb1):

     CREATE DATABASE testdb1 OWNER = testdbrole1 TABLESPACE = testtablespace1;

  3.5 切换到testdb1下:\c testdb1

  3.6 创建一个Schema(testdbschema1):

     CREATE SCHEMA IF NOT EXISTS testdbschema1;

 

4、尝试连接:

  离开虚拟机,到本机环境去telnet 5432端口,却发现断开不通(先保证防火墙是不做5432断开限制的哈),原因是服务器端的TCP listener没有配置为接受外部的连接,解决办法为到虚拟机中修改配置文件:

  /usr/local/pgsql/data/postgresql.conf

  listen_addresses = '*'

 

  重启服务,这时在本机是可以telnet的,下载pgadmin,使用testdbrole1连接,仍然拒绝连接,解决办法为到虚拟机中修改配置文件:

  /usr/local/pgsql/data/pg_hba.conf  添加如下一行:

  host    testdb1testdbrole10.0.0.0/0md5   (意思是接受以TCP方式连接的,来自任何IP地址的testdbrole1用户的连接)

 

  此时可用成功登录进去,截图如下:

    blob.png

 

连接进去之后,截图如下:

blob.png

 

 

 

可以看到标红的地方,和命令行中之前输入的命令,是一一对应的

 

到此,算是一个入门了吧。

PG里,还有一些很独特的概念,比如表可以继承、表可以定义分区表、数据类型还可以自定义。。。。

 

具体的请参考官方手册,答案都在里面。

 

下面是从网上找来的一些常用的SQL:

\l 列出数据库

\c  转到另一个数据库

\dt 列出所有表

\d 查看表结构

\di 查看索引

 

SELECT current_database(); 查看当前数据库

select version();  查看版本

select current_user;  查看当前用户

SELECT pg_database_size(current_database());  查看当前库大小

SELECT sum(pg_database_size(datname)) from pg_database;  查询所有库大小之和

select pg_relation_size('accounts');   ---查询表大小

select pg_total_relation_size('accounts');   ---查询包含表和表索引其他总大小

select pg_tablespace_size('tbs_index')/1024/1024 as "SIZE M";    查看表空间大小

 

查看TOP10大表:

SELECT table_name

,pg_relation_size(table_name) as size

FROM information_schema.tables

WHERE table_schema NOT IN ('information_schema',

'pg_catalog')

ORDER BY size DESC

LIMIT 10;

 

快速评估表的行数:(一般都是大表,如果用count比较耗时间)

SELECT (CASE WHEN reltuples > 0 THEN

pg_relation_size('mytable')/(8192*relpages/reltuples)

ELSE 0

END)::bigint AS estimated_row_count

FROM pg_class

WHERE oid = 'mytable'::regclass;

 

查询等待会话

SELECT

w.current_query as waiting_query,

w.procpid as w_pid,

w.usename as w_user,

l.current_query as locking_query,

l.procpid as l_pid,

l.usename as l_user,

t.schemaname || '.' || t.relname as tablename

from pg_stat_activity w

join pg_locks l1 on w.procpid = l1.pid and not l1.granted

join pg_locks l2 on l1.relation = l2.relation and l2.granted

join pg_stat_activity l on l2.pid = l.procpid

join pg_stat_user_tables t on l1.relation = t.relid

where w.waiting;

 

SELECT date_trunc('second',

current_timestamp - pg_postmaster_start_time()) as uptime; ----数据库开启多久

 

SELECT pg_postmaster_start_time();     --------什么时候开启的

 

登录时指定用户和数据库:

psql -U hellen -d template1

 

 

 

 

分享到:
评论

相关推荐

    PostgreSQL从菜鸟到专家(中译稿by洞庭湖的泥鳅)

    数据库开发商和开源开发者都是PostgreSQL的热心拥护者。任何使用程序管理大量数据的人都可以从数据库中获得大量益处。PostgreSQL是一个非常优秀的关系数据库实现,全功能,开源且免费使用。 PostgreSQL 支持大量的...

    Geodatabase菜鸟入门资料

    **Geodatabase 菜鸟入门资料** 在GIS(地理信息系统)领域,Geodatabase是存储和管理地理数据的核心工具,而ArcSDE是ESRI(Environmental Systems Research Institute)开发的一种用于分布式地理数据库的中间件。这...

    Postgresql学习笔记

    本学习笔记旨在为初学者提供一个全面、易懂的PG入门指南,帮助“菜鸟”快速掌握这一强大数据库的基础知识。 一、PostgreSQL简介 1.1 关系型数据库:PostgreSQL基于SQL标准,支持ACID(原子性、一致性、隔离性、持久...

    菜鸟教程文档

    "菜鸟教程"是一份专为新手设计的学习资料,旨在帮助他们快速入门并理解基础的IT概念和技术。第八军团的这个教程系列涵盖了多个方面的知识,包括操作系统、编程语言、网络、数据库等基础内容。下面将对这些关键知识点...

    自己平日整理收集的,常见数据库教程[共9本]

    3、MS SQL_Server菜鸟入门[chm] 4、MS SQL Server参考手册[chm] 5、MYSQL中文参考手册[chm] 6、MYSQL中文手册[chm] 7、中兴公司ORACLE数据库培训[pdf] 8、PostgreSQL中文手册[chm] 9、华为Sybase数据库培训...

    Ubuntu教程之菜鸟飞飞.09.04.25.pdf\Ubuntu官方指南pdf\Ubuntu从入门到精通.pdf\Ubuntu标准教程.pdf

    首先,让我们从《Ubuntu教程之菜鸟飞飞.09.04.25.pdf》开始。这本书可能涵盖了Ubuntu的基本安装过程,包括如何下载Ubuntu ISO镜像,创建安装媒介(如USB或DVD),以及如何在虚拟机或物理机上进行安装。它可能会详细...

    菜鸟学架各类服务器

    【标签】:“菜鸟学架各类服务器”的标签清晰地表明了内容定位,便于搜索和分类,使得目标用户能够快速找到适合他们水平的入门资料。 【压缩包子文件的文件名称列表】: 1. "菜鸟学架各类服务器-E书.exe":这可能...

    PHP 菜鸟教程-文字版 PDF

    3. 提供了广泛的数据库支持,包括MySQL、PostgreSQL等。 4. 易于学习和使用,适合初学者快速入门。 5. 免费下载,降低了开发成本。 对于PHP初学者,可以通过各种在线工具和实例学习PHP。官方提供了完整的PHP参考...

    SQLite菜鸟教程

    通过《SQLite菜鸟教程》,读者不仅可以掌握SQLite的基本操作,还能建立起对SQL语言的理解,为后续深入学习更复杂的数据库系统(如MySQL、PostgreSQL等)打下坚实基础。这个教程适合对数据库感兴趣,或者需要在项目中...

    php入门到精通

    ### PHP入门到精通知识点梳理 #### 一、PHP概述 - **定义**: PHP是一种服务器端的脚本语言,用于创建动态网页。它易于学习且功能强大,非常适合希望快速搭建交互式网站的开发者。 - **历史**: 起源于1995年,由...

    php 入门教程.docx

    - **菜鸟教程**:以简单易懂的方式介绍PHP,适合初学者入门。 2. **书籍** - **《PHP 和 MySQL Web 开发》**:适合想要深入学习Web开发的人士。 - **《Head First PHP & MySQL》**:通过图文并茂的方式,让读者...

    SQL入门教程大全2024

    ### SQL入门教程大全2024 #### 一、SQL基础 **1.1 SQL简介** - **用途**: SQL(Structured Query Language),即结构化查询语言,是一种专门用于管理和操作关系型数据库的标准语言。 - **历史**: SQL由IBM在1970...

    数据库相关的教程,案例,项目

    - **特色**:该教程不仅适合初学者快速入门,也适合有一定经验的用户深入学习高级功能。 - **学习建议**:通过实际操作练习 SQL 语句,加深对概念的理解。 #### PostgreSQL 教程 - Tutorialspoint - **简介**:...

    linux资料大全,从新手到高手!

    对于有志于从事服务器管理的人员,熟悉Linux下的数据库(如MySQL、PostgreSQL)、Web服务器(如Apache、Nginx)和版本控制(如Git)是基础。了解基本的服务器安全实践,如防火墙规则、权限设定、安全更新,以及备份...

    毕设&课程作业_python-tutorial-books 是关于python 学习的保姆级的教程文档 .zip

    Python是一种高级编程语言,以其简洁、易读的语法而著名,适合初学者入门。在“python-tutorial-books”中,你将深入学习Python的基础知识,包括变量、数据类型(如整型、浮点型、字符串、列表、元组、字典和集合)...

    web开发培训

    数据库方面,MySQL、PostgreSQL、MongoDB等是常用的选择,学习SQL语言和NoSQL数据库原理同样重要。 Web应用通常运行在服务器上,因此,理解服务器操作系统(如Linux)和HTTP协议也非常重要。学会配置和管理Web...

    Apache ShardingSphere document2023年最新版

    - **ShardingSphere-Proxy** 则提供了一个独立的服务代理,它支持MySQL、PostgreSQL和Oracle等协议,使得应用程序可以像操作单个数据库一样操作分布式数据库集群,降低了使用门槛。 2. **产品功能** - 数据分片:...

    基于python+Django的在线家谱查询录入系统.zip

    1. 易学性:Python有清晰的语法结构,适合初学者入门。 2. 高级语言:它支持多种数据类型,如列表、元组、字典等,便于数据处理。 3. 动态类型:变量在运行时自动确定类型,减少了代码量。 4. 解释型:Python代码...

    用于做python数据库实验的营养数据源

    通常,这会使用到Python的数据库API,如SQLite、MySQLdb、psycopg2(PostgreSQL)或pymongo(MongoDB)等。 描述中提到,“Python基础教程里13.2.2数据库应用程序示例”是一个关键点,这可能指的是《Python编程:从...

    毕设&课程作业_基于 Python-Flask 的微服务框架.zip

    1. **Python Flask 入门** Flask 是由 Armin Ronacher 开发的一个 Python Web 框架,它提供了一个基础的 Web 服务结构,包括路由分发、模板渲染、HTTP 请求处理等功能。Flask 无需复杂的配置,只需少量代码就能创建...

Global site tag (gtag.js) - Google Analytics