PostgreSQL - 基础入门

1.1 什么是PostgreSQL

PostgreSQL是一个功能强大的开源对象关系数据库管理系统(ORDBMS)。 用于安全地存储数据; 支持最佳做法,并允许在处理请求时检索它们。

PostgreSQL(也称为Post-gress-Q-L)由PostgreSQL全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。 它是开源的,其源代码是免费提供的。

PostgreSQL是跨平台的,可以在许多操作系统上运行,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。

1.2 PostgreSQL 的特点

  • PostgreSQL可在所有主要操作系统(即Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和Windows等)上运行。
  • PostgreSQL支持文本,图像,声音和视频,并包括用于C/C++,Java,Perl,Python,Ruby,Tcl和开放数据库连接(ODBC)的编程接口。
  • PostgreSQL支持SQL的许多功能,例如复杂SQL查询,SQL子选择,外键,触发器,视图,事务,多进程并发控制(MVCC),流式复制(9.0),热备(9.0))。
  • 在PostgreSQL中,表可以设置为从“父”表继承其特征。
  • 可以安装多个扩展以向PostgreSQL添加附加功能。

2. PostgreSQL 工具

2.1 psql :

它是一个命令行工具,也是管理PostgreSQL的主要工具。 pgAdmin是PostgreSQL的免费开源图形用户界面管理工具。

2.2 phpPgAdmin:

它是用PHP编写的PostgreSQL的基于Web的管理工具。 它基于phpMyAdmin工具管理MySQL功能来开发。它可以用作PostgreSQL的前端工具。

2.3 pgFouine

它是一个日志分析器,可以从PostgreSQL日志文件创建报告

3. PostgreSQL数据类型

PotgreSQL中主要有三种类型的数据类型。 此外,用户还可以使用CREATE TYPE SQL命令创建自己的自定义数据类型。

以下是PostgreSQL中主要有三种类型的数据类型:

  • 数值数据类型
  • 字符串数据类型
  • 日期/时间数据类型

3.1 数值数据类型

用于指定表中的数组数据

名称

描述

存储大小

范围

smallint

存储整数,小范围

2字节

-32768 至 +32767

integer

存储整数。使用这个类型可存储典型的整数

4字节

-2147483648 至 +2147483647

bigint

存储整数,大范围。

8字节

-9223372036854775808 至 9223372036854775807

decimal

用户指定的精度,精确

变量

小数点前最多为131072个数字; 小数点后最多为16383个数字。

numeric

用户指定的精度,精确

变量

小数点前最多为131072个数字; 小数点后最多为16383个数字。

real

可变精度,不精确

4字节

6位数字精度

double

可变精度,不精确

8字节

15位数字精度

serial

自动递增整数

4字节

1 至 2147483647

bigserial

大的自动递增整数

8字节

1 至 9223372036854775807

3.2 字符串数据类型

String数据类型用于表示字符串类型值

数据类型

描述

char(size)

这里size是要存储的字符数。固定长度字符串,右边的空格填充到相等大小的字符。

character(size)

这里size是要存储的字符数。 固定长度字符串。 右边的空格填充到相等大小的字符。

varchar(size)

这里size是要存储的字符数。 可变长度字符串。

character varying(size)

这里size是要存储的字符数。 可变长度字符串。

text

可变长度字符串。

3.3 日期/时间数据类型

日期/时间数据类型用于表示使用日期和时间值的列。

名称

描述

存储大小

最小值

最大值

解析度

timestamp [ (p) ] [不带时区 ]

日期和时间(无时区)

8字节

4713 bc

294276 ad

1微秒/14位数

timestamp [ (p) ]带时区

包括日期和时间,带时区

8字节

4713 bc

294276 ad

date

日期(没有时间)

4字节

4713 bc

5874897 ad

1微秒/14位数

time [ (p) ] [ 不带时区 ]

时间(无日期)

8字节

00:00:00

24:00:00

1微秒/14位数

time [ (p) ] 带时区

仅限时间,带时区

12字节

00:00:00+1459

24:00:00-1459

1微秒/14位数

interval [ fields ] [ (p) ]

时间间隔

12字节

-178000000年

178000000年

1微秒/14位数

布尔类型:

名称

描述

存储大小

boolean

它指定true或false的状态。

1字节

4. 基础sql语句

创建数据库:

CREATE DATABASE database_name;

删除数据库:

drop database testdb;

创建表:

CREATE TABLE table_name( column1 datatype, column2 datatype, column3 datatype, ..... columnN datatype, PRIMARY KEY( one or more columns ) );

删除表:

drop table student2;

创建模式(架构):

模式(也叫架构)是指定的表集合。 它还可以包含视图,索引,序列,数据类型,运算符和函数。

CREATE SCHEMA schema_name;

插入数据:

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

数据查询:

SELECT "column1", "column2".."column" FROM "table_name";

更新数据:

UPDATE table_name SET column1 = value1, column2 = value2...., columnN = valueN WHERE [condition];

删除数据:

DELETE FROM table_name WHERE [condition];

Order by语句:

SELECT column-list FROM table_name [WHERE condition] [ORDER BY column1, column2, .. columnN] [ASC | DESC];

Group By分组:

SELECT column-list FROM table_name WHERE [conditions ] GROUP BY column1, column2....columnN ORDER BY column1, column2....columnN

Having语句:

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

PostgreSQL条件用于从数据库获取更具体的结果。 它们通常与WHERE子句一起使用。 具有子句的条件就像双层过滤器。

以下是PostgreSQL条件的列表:

  • AND 条件
  • OR 条件
  • AND & OR 条件
  • NOT 条件
  • LIKE 条件
  • IN 条件
  • NOT IN 条件
  • BETWEEN 条件

AND条件:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] AND [search_condition];

OR条件:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] OR [search_condition];

AND和OR合用:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] AND [search_condition] OR [search_condition];

NOT条件:

NOT条件与WHERE子句一起使用以否定查询中的条件

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] NOT [condition];

Like条件:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] LIKE [condition];

IN条件:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] IN [condition];

NOT IN条件:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] NOT IN [condition];

Between条件:

SELECT column1, column2, ..... columnN FROM table_name WHERE [search_condition] BETWEEN [condition];

在PostgreSQL中,有以下类型的连接:

  • 内连接(INNER JOIN)
  • 左外连接(LEFT OUTER JOIN)
  • 右外连接(RIGHT OUTER JOIN)
  • 全连接(FULL OUTER JOIN)
  • 跨连接(CROSS JOIN)

内连接

PostgreSQL内部连接也被称为连接或简单连接。 这是最常见的连接类型。 此连接返回满足连接条件的多个表中的所有行。

如下图表示 -

0

SELECT table1.columns, table2.columns FROM table1 INNER JOIN table2 ON table1.common_filed = table2.common_field;

左外连接

左外连接返回从“ON”条件中指定的左侧表中的所有行,只返回满足条件的另一个表中的行。

如下图中所表示:

0

SELECT table1.columns, table2.columns FROM table1 LEFT OUTER JOIN table2 ON table1.common_filed = table2.common_field;

右外连接

右外连接返回从“ON”条件中指定的右侧表中的所有行,只返回满足条件的另一个表中的行。

如下图中所表示:

如下图所示(蓝色部分) -

0

SELECT table1.columns, table2.columns FROM table1 RIGHT OUTER JOIN table2 ON table1.common_filed = table2.common_field;

全外连接

全外连接从左表和左表中返回所有行。 它将NULL置于不满足连接条件的位置。

如下图所示(蓝色部分) -

0

SELECT table1.columns, table2.columns FROM table1 FULL OUTER JOIN table2 ON table1.common_filed = table2.common_field;

跨连接

ostgreSQL跨连接(CROSS JOIN)将第一个表的每一行与第二个表的每一行相匹配。 它也被称为笛卡尔积。 如果table1具有“x”行,而table2具有“y”行,则所得到的表将具有(x * y)行。

SELECT coloums FROM table1 CROSS JOIN table2

猜你喜欢

转载自blog.csdn.net/m0_56324585/article/details/131728016