您当前的位置: 首页 >  sql

cuiyaonan2000

暂无认证

  • 1浏览

    0关注

    248博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PostgreSQL 教程

cuiyaonan2000 发布时间:2022-04-24 14:03:09 ,浏览量:1

序言

整理下~整理下~PostgreSQL 

心情不顺就学习,就整理文献cuiyaonan2000@163.com

整体看了下api总的来说就是多了一个schema,其它的差不了多少~~~

参考资料:

  1. PostgreSQL 教程 | 菜鸟教程

数据库种类
  1. RDBMS: 关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
  2. ORDBMS:对象关系数据库系统,是面向对象技术与传统的关系数据库相结合的产物,查询处理是 ORDBMS 的重要组成部分,它的性能优劣将直接影响到DBMS 的性能。ORDBMS在原来关系数据库的基础上,增加了一些新的特性。
  3. OODBMS:面向对象数据库管理系统,将所有实体都看着对象,并将这些对象类进行封装,对象之间的通信通过消息 OODBMS 对象关系数据库在实质上还是关系数据库 。

ORDBMS 术语
  • 数据库: 数据库是一些关联表的集合。
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

PostgreSQL 特征

PostgreSQL 是ORDBMS类型的数据库

  • 函数:通过函数,可以在数据库服务器端执行指令程序。

  • 索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。

  • 触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。 多版本并发控制:PostgreSQL使用多版本并发控制(MVCC,Multiversion concurrency control)系统进行并发控制,该系统向每个用户提供了一个数据库的"快照",用户在事务内所作的每个修改,对于其他的用户都不可见,直到该事务成功提交。

  • 规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。

  • 数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据

    等。
  • 全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。

  • NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。

  • 数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。

PostgreSQL 语法

介绍文档一般都是总分总的介绍,这就是PG的总cuiyaonan2000@163.com:

官网地址:PostgreSQL 语法 | 菜鸟教程

创建数据库

PostgreSQL 创建数据库可以用以下三种方式:

  1. 使用 CREATE DATABASE SQL 语句来创建。
  2. 使用 createdb 命令来创建。
  3. 使用 pgAdmin 工具。
CREATE DATABASE 创建数据库
CREATE DATABASE dbname;

createdb 命令创建数据库

createdb 是一个 SQL 命令 CREATE DATABASE 的封装。

createdb 命令位于 PostgreSQL安装目录/bin 下

createdb 命令语法格式如下:

createdb [option...] [dbname [description]]

参数说明:

  1. dbname:要创建的数据库名。
  2. description:关于新创建的数据库相关的说明。
  3. options:参数可选项,可以是以下值:
序号选项 & 描述1

-D tablespace

指定数据库默认表空间。

2

-e

将 createdb 生成的命令发送到服务端。

3

-E encoding

指定数据库的编码。

4

-l locale

指定数据库的语言环境。

5

-T template

指定创建此数据库的模板。

6

--help

显示 createdb 命令的帮助信息。

7

-h host

指定服务器的主机名。

8

-p port

指定服务器监听的端口,或者 socket 文件。

9

-U username

连接数据库的用户名。

10

-w

忽略输入密码。

11

-W

连接时强制要求输入密码。

选择目标数据库

数据库的命令窗口
  1. 使用 \l 用于查看已经存在的数据库
  2. \c + 数据库名 来进入数据库

系统命令行窗口(命令连接数据库时)

在系统的命令行查看,我么可以在连接数据库后面添加数据库名来选择数据库:

$ psql -h localhost -p 5432 -U postgres runoobdb

PostgreSQL 删除数据库

PostgreSQL 删除数据库可以用以下三种方式:

  • 1、使用 DROP DATABASE SQL 语句来删除。
  • 2、使用 dropdb 命令来删除。
  • 3、使用 pgAdmin 工具。

DROP DATABASE 删除数据库
  • DROP DATABASE 会删除数据库的系统目录项并且删除包含数据的文件目录。
  • DROP DATABASE 只能由超级管理员或数据库拥有者执行。
  • DROP DATABASE 命令需要在 PostgreSQL 命令窗口来执行

语法格式如下:

DROP DATABASE [ IF EXISTS ] name

参数说明:

  • IF EXISTS:如果数据库不存在则发出提示信息,而不是错误信息。
  • name:要删除的数据库的名称。

dropdb 命令删除数据库
  • dropdb 是 DROP DATABASE 的包装器。
  • dropdb 用于删除 PostgreSQL 数据库。
  • dropdb 命令只能由超级管理员或数据库拥有者执行。

dropdb 命令语法格式如下:

dropdb [connection-option...] [option...] dbname

参数说明:

dbname:要删除的数据库名。

options:参数可选项,可以是以下值:

序号选项 & 描述1

-e

显示 dropdb 生成的命令并发送到数据库服务器。

2

-i

在做删除的工作之前发出一个验证提示。

3

-V

打印 dropdb 版本并退出。

4

--if-exists

如果数据库不存在则发出提示信息,而不是错误信息。

5

--help

显示有关 dropdb 命令的帮助信息。

6

-h host

指定运行服务器的主机名。

7

-p port

指定服务器监听的端口,或者 socket 文件。

8

-U username

连接数据库的用户名。

9

-w

连接时忽略输入密码。

10

-W

连接时强制要求输入密码。

11

--maintenance-db=dbname

删除数据库时指定连接的数据库,默认为 postgres,如果它不存在则使用 template1。

PostgreSQL 创建表格
  • CREATE TABLE 是一个关键词,用于告诉数据库系统将创建一个数据表。表名字必需在同一模式中的其它表、 序列、索引、视图或外部表名字中唯一。
  • CREATE TABLE 在当前数据库创建一个新的空白表,该表将由发出此命令的用户所拥有。

CREATE TABLE 语法格式如下:

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( 一个或多个列 )
);
  • \d 命令来查看当前数据库下的所有表格列表
  •  \d tablename 查看表格信息:

PostgreSQL 删除表格

PostgreSQL 使用 DROP TABLE 语句来删除表格,包含表格数据、规则、触发器等,所以删除表格要慎重,删除后所有信息就消失了。

DROP TABLE 语法格式如下:

DROP TABLE table_name;

PostgreSQL 模式(SCHEMA--重点)

PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。----这里就是不同的用户可以创建一个模式,该模式可以看成一个表的Group,里面包含了很多表.cuiyaonan2000@163.com

  • 允许多个用户使用一个数据库并且不会互相干扰。---不同模式内的表,不会相互影响

  • 将数据库对象组织成逻辑组以便更容易管理。---跟Elasticsearch中的 type有点类似cuiyaonan2000@163.com

  • 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。---因为不同模式下的表,不会相互影响

语法如下(注意mytable 是在该模式下创建表的时候才出现,创建模式不需要mytable,注意cuiyaonan2000@163.com):

CREATE SCHEMA myschema.mytable (
...
);

删除模式
#删除一个为空的模式(其中的所有对象已经被删除):
DROP SCHEMA myschema;


#删除一个模式以及其中包含的所有对象:
DROP SCHEMA myschema CASCADE;

PostgreSQL INSERT INTO 语句

INSERT INTO 语句语法格式如下(可以插入多行,以逗号分隔cuiyaonan2000@163.com):

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);

返回信息 序号输出信息 & 描述1

INSERT oid 1

只插入一行并且目标表具有 OID的返回信息, 那么 oid 是分配给被插入行的 OID。因为只插入一行所以后面的固定为1,

2

INSERT 0 #

插入多行返回的信息, # 为插入的总行数,是个数字。

PostgreSQL SELECT 语句

跟Mysql一样

PostgreSQL 运算符 算术运算符

假设变量 a 为 2,变量 b 为 3,则:

运算符描述实例+加a + b 结果为 5-减a - b 结果为 -1*乘a * b 结果为 6/除b / a 结果为 1%模(取余)b % a 结果为 1^指数a ^ b 结果为 8|/平方根|/ 25.0 结果为 5||/立方根||/ 27.0 结果为 3!阶乘5 ! 结果为 120!!阶乘(前缀操作符)!! 5 结果为 120

比较运算符

假设变量 a 为 10,变量 b 为 20,则:

运算符描述实例=等于(a = b) 为 false。!=不等于(a != b) 为 true。不等于(a b) 为 true。>大于(a > b) 为 false。=大于等于(a >= b) 为 false。= 30000 RETURNING * ) INSERT INTO COMPANY1 (SELECT * FROM moved_rows);

PostgreSQL HAVING 子句

HAVING 子句必须放置于 GROUP BY 子句后面,ORDER BY 子句前面,下面是 HAVING 子句在 SELECT 语句中基础语法:

SELECT column1, column2
FROM table1, table2
WHERE [ conditions ]
GROUP BY column1, column2
HAVING [ conditions ]
ORDER BY column1, column2

PostgreSQL DISTINCT 关键字
SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]

关注
打赏
1638267374
查看更多评论
立即登录/注册

微信扫码登录

0.0384s