
PostgreSQL
Hello PG
卜塔
但行好事,莫问前程
展开
-
【PostgreSQL-9.6.3】进程及体系结构
本文主要讲述了PG的几个主要进程,以及PG的核心架构。进程和体系结构详见下图:从上面的体系结构图可以看出来,PG使用经典的C/S架构,进程架构。在服务器端有主进程、服务进程、子进程、共享内存以及文件存储几大部分,下面着重讲述服务器端的进程部分:1. Postmaster主进程和服务进程当PG数据库启动时,首先会启动Postmaster主进程。这个进程是PG数据库原创 2017-09-20 13:15:25 · 1153 阅读 · 0 评论 -
【PostgreSQL-9.6.3】物化视图
PostgreSQL 9.3 以后出现了物化视图。物化视图是由实实在在的数据组成,这是和一般视图的根本区别。1. 物化视图创建语法如下:--创建语法CREATE MATERIALIZED VIEW table_name [ (column_name [, ...] ) ] [ WITH ( storage_parameter [= value] [, ...原创 2017-09-20 13:27:25 · 2797 阅读 · 0 评论 -
【PostgreSQL-9.6.3】一般视图
PG视图分为两种,一种是物化视图,一种是一般视图。本篇文章主要写一般视图哪些事儿。所谓一般视图,通俗点说,就是由查询语句定义的虚拟表。视图中的数据可能来自一张或多张表。1. 视图创建语句CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW name [ ( column_name [ , ... ] ) ] AS query2.原创 2017-09-20 13:28:22 · 696 阅读 · 0 评论 -
【PostgreSQL-9.6.3】表空间
在PostgreSQL中,表空间实际上是为表指定一个存储目录,这样方便我们把不同的表放在不同的存储介质或者文件系统中。在创建数据库、表、索引时都可以指定表空间。1. 创建表空间--表空间目录必须是系统中已存在的目录test=# create tablespace tb_01 location '/opt/postgresql/data/pg_data';CREATE TABLE原创 2017-09-20 13:29:15 · 652 阅读 · 0 评论 -
【PostgreSQL-9.6.3】触发器实例
1. 创建一个触发器,表中的行在任何时候被插入或更新时,当前用户名和时间也会被标记在该行中。并且它会检查雇员的姓名以及薪水。--创建测试表CREATE TABLE emp ( empname text, salary integer, last_date timestamp, last_user text);--创建触发器函数CREATE FU原创 2017-09-20 13:31:22 · 566 阅读 · 0 评论 -
【PostgreSQL-9.6.3】触发器概述(普通触发器)
一个触发器声明了当执行一种特定类型的操作时数据库应该自动执行一个特殊的函数。触发器可以被附加到表、视图和外部表。触发器经常用于做完整性约束,或者某种业务规则的约束。1. 触发器的创建语法如下:CREATE [CONSTRAINT] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ...] } ON tabl原创 2017-09-20 13:32:25 · 565 阅读 · 0 评论 -
【PostgreSQL-9.6.3】事件触发器
当预定的事件发生时,事件触发器就会被触发。由于事件触发器设计的权限比较大,所以只有超级用户才能创建和修改触发器。1. 事件触发器支持的事件分三类:ddl_command_start, ddl_command_end 和 sql_drop。(1)ddl_command_start:在DDL开始前触发;(2)ddl_command_end:在DDl结束后触发;(3)sql_原创 2017-09-20 13:29:57 · 891 阅读 · 0 评论 -
【PostgreSQL-9.6.3】临时表
PostgreSQL中的临时表分两种,一种是会话级临时表,一种是事务级临时表。在会话级临时表中,数据可以存在于整个会话的生命周期中,在事务级临时表中的数据只能存在于事务的生命周期中。1. 会话级临时表##创建会话级临时表,PG中默认创建的就是会话级的。test=# create TEMPORARY table tmp1 (id int primary key,note text)原创 2017-09-20 13:44:50 · 1388 阅读 · 0 评论 -
【PostgreSQL-9.6.3】分区表
PostgreSQL中的分区表是通过表继承来实现的(表继承博客点击打开链接)。创建分区表的步骤如下:(1)创建“父表”,所有的分区表都从这张表继承。“父表”中不存数据,也不要定义约束和索引。(2)创建“子表”,所有“子表”都是从“父表”中继承而来。这些“子表”就是所谓的分区,其实它们也是PostgreSQL表。(3)给分区表创建约束。(4)在分区表上创建索引。原创 2017-09-20 13:41:39 · 2464 阅读 · 0 评论 -
【PostgreSQL-9.6.3】数据库的启动、登录、退出、关闭
当我们费尽千辛万苦安装完数据库后,一定会迫不及待的想使用它。骚年,不要着急,且看我为您解析PostgreSQL的启动,登录,退出,关闭过程。一 启动数据库服务器1. 没有设置环境变量的情况下postgres@lgr-pc:/usr/local/pgsql$./bin/postgres -D data >./data/logffile 2>&1 &其中‘.’代表当前路原创 2017-05-22 17:04:40 · 23689 阅读 · 0 评论 -
【Postgresql-9.6.8】触发器实例(记录增、删、改)
这个触发器的作用是:当对表中数据进行INSERT、DELETE、UPDATE时,同时更新另一张表中的相关字段。(此实例参考于PG官方文档)--主表 - 时间维度和销售事实。create table time_dimension(time_key integer not null,day_of_week integer not null,day_of_month integer...原创 2018-03-08 14:12:07 · 4308 阅读 · 0 评论 -
【PostgreSQL-9.3.17】CentOS-6.7安装PostgreSQL-9.3.17
安装CentOS-6.7过程略,完成安装后需要配置linux连接外网,因为需要yum安装缺少的安装包。Linux连接外网方法1. 下载源码包https://www.postgresql.org/ftp/source/v9.3.17/2. 创建postgres用户及dba组,创建soft目录,并修改soft的属主属组useradd -g dba postgresmkdir /softchown -R...原创 2018-03-08 22:06:20 · 366 阅读 · 0 评论 -
【PostgreSQL-9.6.8】序列
1. 创建序列语法:CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cach...原创 2018-03-09 18:12:27 · 634 阅读 · 0 评论 -
【PostgreSQL-9.6.3】LOG: unrecognized configuration parameter "dynamic_shared_memory_type"
报错如下:输入如下命令启动PG数据库时,报错:[postgres@drz ~]$ pg_ctl -D /opt/postgresql/data/ startserver starting[postgres@drz ~]$ LOG: unrecognized configuration parameter "dynamic_shared_memory_type" in fil原创 2017-09-20 13:11:15 · 3865 阅读 · 0 评论 -
【PostgreSQL-9.6.3】使用pg_settings表查看参数的生效条件
PostgreSQL数据库的配置参数都在postgresql.conf文件中,此文件的目录为数据库的数据目录($PGDATA)。这些参数有些是直接修改就可以生效,有些需要重启数据库才能生效,而有些根本就不能修改。PG数据库把这些参数分为以下几类:internal:这类参数为只读参数。有的是postgres程序写死的,有些是在安装数据库时intdb时设置好的。postmaster:这原创 2017-09-20 13:09:10 · 2685 阅读 · 0 评论 -
【PostgreSQL-9.6.3】extract函数
extract函数格式:extract (field from source)extract函数是从日期或者时间数值里面抽取子域,比如年、月、日等。source必须是timestamp、time、interval类型的值表达式。field是一个标识符或字符串,是从源数据中的抽取的域。1. century (世纪)test=# select extract (century from原创 2017-07-31 22:55:17 · 16583 阅读 · 0 评论 -
【PostgreSQL-9.6.3】psql常用命令
命令描述\l 查看数据库\c换库\d查看所有表\dt只显示匹配的表\di只显示匹配的索引\ds只显示匹配的序列\dv只显示匹配的视图\df只显示匹配的函数\d t1查看t1的表原创 2017-06-25 21:59:10 · 1213 阅读 · 0 评论 -
【PostgreSQL-9.6.3】设置非自动提交
我们在使用psql工具操作数据库时,事务是自动提交的。也就是说,当我们执行完一条insert或者delete语句后,在不输入commit情况下,这条语句也是提交的。如果不想自动提交,可以使用以下两种方法:方法一:运行begin;命令,然后输入dml语句,最后执行commit或者rollback语句。test=# begin;BEGINtest=# insert into student原创 2017-06-25 19:13:14 · 3229 阅读 · 0 评论 -
【PostgreSQL-9.6.3】设置log参数
编辑数据目录中的postgresql.conf参数文件,我的数据目录是/usr/local/pgsql/datavi postgresql.conf找到如下内容:...#------------------------------------------------------------------------------# ERROR REPORTING AND LOGGI原创 2017-06-04 10:47:26 · 994 阅读 · 0 评论 -
【PostgreSQL-9.6.3】表继承
表继承是PostgreSQL特有的,子表可以从父表中继承字段和一些属性。例如:创建一张表“persons”作为父表:test=# create table persons (test(# id int primary key,test(# name text not null,test(# age int,test(# sex booleantest(# );CRE原创 2017-06-04 18:00:09 · 1562 阅读 · 0 评论 -
【PostgreSQL-9.6.3】如何得到psql中命令的实际执行SQL
当我们在psql界面执行以“\”开头的命令时,数据库会立刻返回执行结果,而不会返回命令的实际执行过程。通过两种方式可以实现执行过程的查看:方法一:启动psql命令时加“-E”参数postgres@lgr-pc:~$ psql -E testpsql (9.6.3)Type "help" for help.test=# \d********* QUERY **********SE原创 2017-06-25 19:43:35 · 1776 阅读 · 0 评论 -
【PostgreSQL-9.6.3】修改监听的IP和端口
在数据目录下编辑postgresql.conf文件,我的数据目录是/usr/local/pgsql/datavi postgresql.conf找到如下内容:...#listen_addresses = 'localhost' # what IP address(es) to listen on;原创 2017-06-04 09:22:48 · 5526 阅读 · 0 评论 -
【PostgreSQL-9.6.3】函数(3)--日期和时间函数
在PostgreSQL中,DATE、TIME、TIMESTAMP是三种不同的数据类型。DATE表示日期类型,格式为YYYY-MM-DD或YYYYMMDD;TIME表示时间类型,格式为hh:mi:ss;TIMESTAM类型的格式一般为'YYYY-MM-DD hh:mi:ss'。1. current_date、current_time和localtimecurrent_date按照YYYY原创 2017-05-31 21:24:05 · 1382 阅读 · 0 评论 -
【PostgreSQL-9.6.3】函数(2)--字符型函数
在上一篇博文中我们交流了数值型函数(点击打开链接),这篇我们将讨论PostgreSQL中的字符型函数。1. reverse(string)reverse函数可以将string字符串的字母显示顺序颠倒。test=# select reverse ('world'); reverse --------- dlrow(1 row)test=# 2. pos原创 2017-05-27 07:56:57 · 865 阅读 · 0 评论 -
【PostgreSQL-9.6.3】函数(1)--数值型函数
函数表示对输入参数返回一个特殊计算结果的值。PostgreSQL中的函数种类比较丰富,主要分为以下几类:数学函数、字符串函数、日期和时间函数、条件判断函数、系统函数、加密函数以及其他函数。这篇文章只介绍数学函数,其他几种函数会在后续文章中逐一介绍。数学函数数学函数主要用来处理数值型数据,主要的数学函数有:绝对值函数、三角函数、对数函数、随机数函数等。1. 绝对值函数ABS(A)te原创 2017-05-26 07:51:47 · 2643 阅读 · 0 评论 -
【PostgreSQL-9.6.3】数据表操作语句
1.创建数据表create table table_name (字段1数据类型[列级别约束条件][默认值],字段2数据类型[列级别约束条件][默认值],字段3数据类型[列级别约束条件][默认值],…[表级别约束条件]);如创建表test:create table test (id int,name varchar2(10),deptid原创 2017-05-23 23:58:47 · 883 阅读 · 0 评论 -
【PostgreSQL-9.6.3】创建、修改、删除PostgreSQL数据库
1.创建数据库create database database_name;2.修改数据库的名称alter database database_name rename to new_database_name;3.修改数据库的拥有者alter database database_name owner to new_owner_name;4.删除数据库(原创 2017-05-23 23:33:03 · 1500 阅读 · 0 评论 -
【PostgreSQL-9.6.3】约束
PostgreSQL中的约束有以下五种:主键约束、外键约束、非空约束、唯一性约束、默认约束。下面分别对这五种约束作说明。一、主键约束(PrimaryKey Constraint)主键约束要求主键列中的数据非空且唯一,也就是说主键约束其实已经含有非空、唯一性两种约束。主键能够唯一标识数据表中的一行记录,可以配合外键来定义不同表之间的关系,并提高查询速度。主键分为两种类型:单字段主键和原创 2017-05-23 23:18:53 · 1215 阅读 · 0 评论 -
【Postgresql】pg掉电后无法重启
机房断电后重启pg数据库,报如下错误:< 2019-01-01 22:42:59.240 EST >LOG: database system was interrupted while in recovery at 2019-01-01 22:00:58 EST< 2019-01-01 22:42:59.240 EST >HINT: This probably ...原创 2019-01-02 12:07:10 · 2770 阅读 · 0 评论