之前从来没接触过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用户的连接)
此时可用成功登录进去,截图如下:
连接进去之后,截图如下:
可以看到标红的地方,和命令行中之前输入的命令,是一一对应的
到此,算是一个入门了吧。
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的热心拥护者。任何使用程序管理大量数据的人都可以从数据库中获得大量益处。PostgreSQL是一个非常优秀的关系数据库实现,全功能,开源且免费使用。 PostgreSQL 支持大量的...
**Geodatabase 菜鸟入门资料** 在GIS(地理信息系统)领域,Geodatabase是存储和管理地理数据的核心工具,而ArcSDE是ESRI(Environmental Systems Research Institute)开发的一种用于分布式地理数据库的中间件。这...
本学习笔记旨在为初学者提供一个全面、易懂的PG入门指南,帮助“菜鸟”快速掌握这一强大数据库的基础知识。 一、PostgreSQL简介 1.1 关系型数据库:PostgreSQL基于SQL标准,支持ACID(原子性、一致性、隔离性、持久...
"菜鸟教程"是一份专为新手设计的学习资料,旨在帮助他们快速入门并理解基础的IT概念和技术。第八军团的这个教程系列涵盖了多个方面的知识,包括操作系统、编程语言、网络、数据库等基础内容。下面将对这些关键知识点...
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的基本安装过程,包括如何下载Ubuntu ISO镜像,创建安装媒介(如USB或DVD),以及如何在虚拟机或物理机上进行安装。它可能会详细...
【标签】:“菜鸟学架各类服务器”的标签清晰地表明了内容定位,便于搜索和分类,使得目标用户能够快速找到适合他们水平的入门资料。 【压缩包子文件的文件名称列表】: 1. "菜鸟学架各类服务器-E书.exe":这可能...
3. 提供了广泛的数据库支持,包括MySQL、PostgreSQL等。 4. 易于学习和使用,适合初学者快速入门。 5. 免费下载,降低了开发成本。 对于PHP初学者,可以通过各种在线工具和实例学习PHP。官方提供了完整的PHP参考...
通过《SQLite菜鸟教程》,读者不仅可以掌握SQLite的基本操作,还能建立起对SQL语言的理解,为后续深入学习更复杂的数据库系统(如MySQL、PostgreSQL等)打下坚实基础。这个教程适合对数据库感兴趣,或者需要在项目中...
### PHP入门到精通知识点梳理 #### 一、PHP概述 - **定义**: PHP是一种服务器端的脚本语言,用于创建动态网页。它易于学习且功能强大,非常适合希望快速搭建交互式网站的开发者。 - **历史**: 起源于1995年,由...
- **菜鸟教程**:以简单易懂的方式介绍PHP,适合初学者入门。 2. **书籍** - **《PHP 和 MySQL Web 开发》**:适合想要深入学习Web开发的人士。 - **《Head First PHP & MySQL》**:通过图文并茂的方式,让读者...
### SQL入门教程大全2024 #### 一、SQL基础 **1.1 SQL简介** - **用途**: SQL(Structured Query Language),即结构化查询语言,是一种专门用于管理和操作关系型数据库的标准语言。 - **历史**: SQL由IBM在1970...
- **特色**:该教程不仅适合初学者快速入门,也适合有一定经验的用户深入学习高级功能。 - **学习建议**:通过实际操作练习 SQL 语句,加深对概念的理解。 #### PostgreSQL 教程 - Tutorialspoint - **简介**:...
对于有志于从事服务器管理的人员,熟悉Linux下的数据库(如MySQL、PostgreSQL)、Web服务器(如Apache、Nginx)和版本控制(如Git)是基础。了解基本的服务器安全实践,如防火墙规则、权限设定、安全更新,以及备份...
Python是一种高级编程语言,以其简洁、易读的语法而著名,适合初学者入门。在“python-tutorial-books”中,你将深入学习Python的基础知识,包括变量、数据类型(如整型、浮点型、字符串、列表、元组、字典和集合)...
数据库方面,MySQL、PostgreSQL、MongoDB等是常用的选择,学习SQL语言和NoSQL数据库原理同样重要。 Web应用通常运行在服务器上,因此,理解服务器操作系统(如Linux)和HTTP协议也非常重要。学会配置和管理Web...
- **ShardingSphere-Proxy** 则提供了一个独立的服务代理,它支持MySQL、PostgreSQL和Oracle等协议,使得应用程序可以像操作单个数据库一样操作分布式数据库集群,降低了使用门槛。 2. **产品功能** - 数据分片:...
1. 易学性:Python有清晰的语法结构,适合初学者入门。 2. 高级语言:它支持多种数据类型,如列表、元组、字典等,便于数据处理。 3. 动态类型:变量在运行时自动确定类型,减少了代码量。 4. 解释型:Python代码...
通常,这会使用到Python的数据库API,如SQLite、MySQLdb、psycopg2(PostgreSQL)或pymongo(MongoDB)等。 描述中提到,“Python基础教程里13.2.2数据库应用程序示例”是一个关键点,这可能指的是《Python编程:从...
1. **Python Flask 入门** Flask 是由 Armin Ronacher 开发的一个 Python Web 框架,它提供了一个基础的 Web 服务结构,包括路由分发、模板渲染、HTTP 请求处理等功能。Flask 无需复杂的配置,只需少量代码就能创建...