PostgreSQL 概述
PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),PostgreSQL 的 Slogan 是 "世界上最先进的开源关系型数据库"。
- 关系型数据库管理系统(RDBMS):所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
- 对象关系数据库系统(ORDBMS):是面向对象技术与传统的关系数据库相结合的产物,将所有实体都看着对象,并将这些对象类进行封装。OODBMS 对象关系数据库在实质上还是关系数据库 。
参考:https://www.runoob.com/postgresql/postgresql-create-table.html
PostgreSQL 涉及术语
1.数据库: 数据库是一些关联表的集合。
2.数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
3.列:一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
4.行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
5.冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
6.主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
7.外键:外键用于关联两个表。
8.复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
9.索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
10.参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
11.函数:通过函数,可以在数据库服务器端执行指令程序。
12.索引:用户可以自定义索引方法,或使用内置的 B 树,哈希表与 GiST 索引。
13.触发器:触发器是由SQL语句查询所触发的事件。如:一个INSERT语句可能触发一个检查数据完整性的触发器。触发器通常由INSERT或UPDATE语句触发。
14..规则:规则(RULE)允许一个查询能被重写,通常用来实现对视图(VIEW)的操作,如插入(INSERT)、更新(UPDATE)、删除(DELETE)。
15.数据类型:包括文本、任意精度的数值数组、JSON 数据、枚举类型、XML 数据等。
16.全文检索:通过 Tsearch2 或 OpenFTS,8.3版本中内嵌 Tsearch2。
17.NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 数据库的外部数据包装器。
18.数据仓库:能平滑迁移至同属 PostgreSQL 生态的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 进行 ETL。
PostgreSQL总体操作
1.PostgreSQL 创建数据库
-
使用 CREATE DATABASE SQL 语句来创建。
CREATE DATABASE dbname;
创建数据库
2.PostgreSQL 选择数据库
- 使用 \l 用于查看已经存在的数据库:
-
使用 \c + 数据库名 来进入数据库:
选择数据库
3. PostgreSQL 删除数据库
- 使用 DROP DATABASE SQL 语句来删除。
DROP DATABASE 会删除数据库的系统目录项并且删除包含数据的文件目录。
DROP DATABASE 只能由超级管理员或数据库拥有者执行。
DROP DATABASE 命令需要在 PostgreSQL 命令窗口来执行,语法格式如下:
DROP DATABASE [ IF EXISTS ] name
参数说明:
- IF EXISTS:如果数据库不存在则发出提示信息,而不是错误信息。
- name:要删除的数据库的名称。
4.PostgreSQL 创建表格
- CREATE TABLE 语法格式如下:
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( 一个或多个列 )
);
以下创建了一个表,表名为 COMPANY 表格,主键为 ID,NOT NULL 表示字段不允许包含 NULL 值:
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
我们可以使用 \d 命令来查看表格是否创建成功:
5.PostgreSQL 删除表格
- PostgreSQL 使用 DROP TABLE 语句来删除表格,包含表格数据、规则、触发器等,所以删除表格要慎重,删除后所有信息就消失了。
DROP TABLE 语法格式如下:
DROP TABLE table_name;
5.PostgreSQL 模式(SCHEMA)
PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。一个模式可以包含视图、索引、数据类型、函数和操作符等。相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。
使用模式的优势:
- 允许多个用户使用一个数据库并且不会互相干扰。
- 将数据库对象组织成逻辑组以便更容易管理。
- 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。
- 模式类似于操作系统层的目录,但是模式不能嵌套。
我们可以使用 CREATE SCHEMA 语句来创建模式,语法格式如下:
create schema myschema
在该模式下创建表格语法:
CREATE SCHEMA myschema.mytable (
...
);
实例:
create table myschema.company(
ID INT NOT NULL,
NAME VARCHAR (20) NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR (25),
SALARY DECIMAL (18, 2),
PRIMARY KEY (ID)
);
删除模式
删除一个为空的模式(其中的所有对象已经被删除):
DROP SCHEMA myschema;
删除一个模式以及其中包含的所有对象:
DROP SCHEMA myschema CASCADE;
PostgreSQL 增删改查
1.插入数据
PostgreSQL INSERT INTO 语句用于向表中插入新记录。
我们可以插入一行也可以同时插入多行。
INSERT INTO 语句语法格式如下:
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
- column1, column2,...columnN 为表中字段名。
- value1, value2, value3,...valueN 为字段对应的值。
ps:在使用 INSERT INTO 语句时,字段列必须和数据值数量相同,且顺序也要对应。如果我们向表中的所有字段插入值,则可以不需要指定字段,只需要指定插入的值即可:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (1, 'Paul', 32, 'California', 20000.00,'2001-07-13');
忽略 SALARY 字段:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,JOIN_DATE) VALUES (2, 'Allen', 25, 'Texas', '2007-12-13');
入多行:
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (3, 'Teddy', 23, 'Norway', 20000.00, DEFAULT );
2.查找数据
PostgreSQL SELECT 语句用于从数据库中选取数据。语句语法格式如下:
SELECT column1, column2,...columnN FROM table_name;
3.更改数据
如果我们要更新在 PostgreSQL 数据库中的数据,我们可以用 UPDATE 来操作,以下是 UPDATE 语句修改数据的通用 SQL 语法:
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
- 我们可以同时更新一个或者多个字段。
-
我们可以在 WHERE 子句中指定任何条件。
更改数据
4.删除数据
你可以使用 DELETE 语句来删除 PostgreSQL 表中的数据,以下是 DELETE 语句删除数据的通用语法:
DELETE FROM table_name WHERE [condition];