一、主要优点:

(1)、对超许可数量软件使用的天然免疫力
对一些商业性质的数据库销售商来说,超许可数量的软件使用是第一位的问题。而使用PostgreSQL,因为没有任何授权的费用是,也就没有任何人可以起诉您违反授权协议违规使用软件。
这样也还有以下几个其他的优点:
随着使用数量的增加不会影响业务的利润。
在任何阶段都不会有类似授权审计的打扰。
在做理论性研究和测试性的发布时不必考虑额外授权费用的影响。
(2)、比商业服务商更好的支持
除了有一般商业公司的支持外,我们还有由PostgreSQL专业人员和热心的爱好者组成的各种社区,用户可以向他们寻求支持和帮助。
(3)、员工成本的显著降低
相对于市场上大型的商业私有数据库软件,我们的系统在设计和开发时已考虑仅需少量的维护和优化,同时仍保持所有功能正常、稳定和性能正常。
不仅如此,我们的培训过程相对于那些商业私有数据库供应商来说,总体来说有更好的性价比、更容易管理和更接近真实的使用场景。
(4)、享有盛名的可靠性和稳定性
与很多商业私有数据库不一样的是,对很多公司特别常见的是,PostgreSQL在几年的运行过程中几乎未出现哪怕是一次的宕机情况,即使是一次,它就是这样稳定地工作着。
(5)、扩展性
所有PostgreSQL的源代码对所有人都是可以免费获得的。如果您的公司员工需要定制或是给PostgreSQL增加一些功能,他们只需做很少的改动工作,也没有额外的成本。全球PostgreSQL社区的专业人员和热心的爱好者也在积极地扩展PostgreSQL的功能。
(6)、跨平台能力
PostgreSQL几乎可以所有Unix类操作系统下运行 (根据统计有至少34种平台),自8.0版本以后,在Windows平台下的也使用原生支持方式。

(7)、大数据量环境下的设计
我们使用MVCC模式作为数据存储的策略,这样PostgreSQL可以在大数据量的环境下具有极高的响应性能。一些领先的商业私有数据库供应商基于相同的原因,也使用这种技术。
(8)、图形化的数据库设计和管理工具
有很多高品质的图形化的PostgreSQL管理工具软件,包括开源和商业性质的。在我们的维基网站上有一个清单列出了PostgreSQL相关的图形化工具软件。
(9)、技术特性
可浏览功能列表来了解PostgreSQL各种功能变化。

二、SQL shell(psql)----命令行

1) 连接到 pgsql

那些架构实现 PG 数据库的高可用 pg数据库优缺点_那些架构实现 PG 数据库的高可用

三、pgAdmin数据库管理工具

1) 界面介绍如图:

那些架构实现 PG 数据库的高可用 pg数据库优缺点_PostgreSQL_02

2) 导出数据库:

Backup

那些架构实现 PG 数据库的高可用 pg数据库优缺点_PostgreSQL_03

选择路径并输入数据库名postgres.sql

那些架构实现 PG 数据库的高可用 pg数据库优缺点_数据库_04

选择编码UTF-8

那些架构实现 PG 数据库的高可用 pg数据库优缺点_PostgreSQL_05


创建pgsql事务:进行插入操作时将记录写到 log 日志表中

CREATE TRIGGER add_trigger
	AFTER INSERT ON userTest
	FOR EACH ROW EXECUTE PROCEDURE addUser();
	
CREATE OR REPLACE FUNCTION addUser() RETURNS TRIGGER AS $userTest_table$
	BEGIN
		INSERT INTO log(tname, tdesc) VALUES ('stu', '新增学生');
		RETURN NEW;

注:postgreSql 建表和字段时避免大写;

创建主键:

create table ta1(
       id int primary key,
       name varchar(50)
   )
   create table ta2(
        id int,
        name varchar(50).
       constraint pk_ta2 primary key(id)
  )

创建外键

CREATE TABLE cities (
        city       varchar(20) primary key,
        location   varchar(20)
);
CREATE TABLE weather (
        city      varchar(20) references cities(city),
        wendu     int
);
alter table TableA add constraint FK_B foreign key (B) references TableB(B);

生成UUID
– pgsql
– 安装函数
– UUID生成函数: pgsql默认安装是没有该类函数的,需要安装UUID的生成函数:

create extension “uuid-ossp” ;

– 使用UUID生成函数

select uuid_generate_v4();

:MySQL中直接用以下代码直接生成,不需安装函数

select uuid()

如何在mybatis中使用uuid

<insert id="insertUUID" parameterType="net.xikee.spring.demo.pojo.UUID">
	<selectKey order="BEFORE" resultType="string" keyProperty="uuid">
		select uuid_generate_v4();//生成UUID
	</selectKey>
	insert into t_uuid(uuid, mark) values(#{uuid}, #{mark})
</insert>
  • order=“BEFORE” 表示在下面的sql 语句执行前执行;
  • keyProperty=“uuid” 表示UUID 这个类中传进来的变量名(字段)为uuid,将从数据库中生成返回的 UUID 的值存到 uuid 中,此时UUID这个类中的属性 uuid 就有值了;
PostgreSQL的索引(BTree索引为例)

a) 介绍:
索引是加速搜索引擎检索数据的一种特殊表查询。简单地说,索引是一个指向表中数据的指针。一个数据库中的索引与一本书的索引目录是非常相似的。
拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。
索引有助于加快 SELECT 查询和 WHERE 子句,但它会减慢使用 UPDATE 和 INSERT 语句时的数据输入。索引可以创建或删除,但不会影响数据。
使用 CREATE INDEX 语句创建索引,它允许命名索引,指定表及要索引的一列或多列,并指示索引是升序排列还是降序排列。
索引也可以是唯一的,与 UNIQUE 约束类似,在列上或列组合上防止重复条目。

CREATE INDEX (创建索引)的语法如下:

CREATE INDEX index_user_age ON user(age);
//规范:索引名 index_user_age,给user表的age字段创建索引

那些架构实现 PG 数据库的高可用 pg数据库优缺点_sql_06

表中数据非常多时才可以创建索引。创建索引后,会创建一张虚拟表,表中只有 id 和age 字段,然后通过BTree对年龄进行排序。当用户查询年龄为16 时,会到从表中查age 为16 对应的 id=3 ,再到主表中查id为3 的用户

DROP INDEX (删除索引)
一个索引可以使用 PostgreSQL 的 DROP 命令删除。

DROP INDEX index_user_age;

PostgreSQL数据库相关,查看已上传的文件:PostgreSQL.emmx(亿图思维导图文件)