博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PostgreSQL入门
阅读量:3960 次
发布时间:2019-05-24

本文共 3633 字,大约阅读时间需要 12 分钟。

简介

在这里插入图片描述

PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。

特征

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

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

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

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

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

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

数据类型

名字 存储长度 描述 范围
smallint 2 字节 小范围整数 -32768 到 +32767
integer 4 字节 常用的整数 -2147483648 到 +2147483647
bigint 8 字节 大范围整数 -9223372036854775808 到 +9223372036854775807
decimal 可变长 用户指定的精度,精确 小数点前 131072 位;小数点后 16383 位
numeric 可变长 用户指定的精度,精确 小数点前 131072 位;小数点后 16383 位
real 4 字节 可变精度,不精确 6 位十进制数字精度
double precision 8 字节 可变精度,不精确 15 位十进制数字精度
smallserial 2 字节 自增的小范围整数 1 到 32767
serial 4 字节 自增整数 1 到 2147483647
bigserial 8 字节 自增的大范围整数 1 到 9223372036854775807

操作

创建数据库

1.命令方式

CREATE DATABASE dbname

2.pgAdmin 工具创建数据库

在这里插入图片描述

选择数据库

1.命令方式

使用 \l 用于查看已经存在的数据库:

postgres=# \l

接下来我们可以使用 \c + 数据库名 来进入数据库:

postgres=# \c runoobdb

2.pgAdmin 工具

在这里插入图片描述

删除库

1.命令方式

例如,我们删除一个 runoobdb 的数据库:

postgres=# DROP DATABASE runoobdb

2.pgAdmin 工具

在这里插入图片描述

创建表格

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 命令来查看表格是否创建成功;可以使用\d tablename 查看表格信息;

删除表格

DROP TABLE table_name

PostgreSQL增删改查

插入数据

在PostgreSQL中,INSERT查询用于在表中插入新行。 您可以一次插入单行或多行到表中。

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

实例:

INSERT INTO EMPLOYEES(  ID, NAME, AGE, ADDRESS, SALARY)  VALUES (1, '张三', 25, '北京市', 189990.00 ), (2, '李四', 25, '广州市 ', 125000.00 ), (3, '王五', 21, '上海市', 185000.00),   (4, '赵六', 24, '兰州市', 65000.00), (5, '田七', 21, '酒泉市', 8500.00);

查询

语法:

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

实例:

SELECT * FROM "table_name"

更新

语法:

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

删除

语法:

DELETE FROM table_name  WHERE [condition];

Python操作PostgreSQL

PostgreSQL可以使用psycopg2模块与Python集成。

连接到数据库

import psycopg2conn = psycopg2.connect(database="testdb", user="postgres", password="pass123", host="127.0.0.1", port="5432")

创建表

cur = conn.cursor()cur.execute('''CREATE TABLE COMPANY       (ID INT PRIMARY KEY     NOT NULL,       NAME           TEXT    NOT NULL,       AGE            INT     NOT NULL,       ADDRESS        CHAR(50),       SALARY         REAL);''')conn.commit()conn.close()

插入操作

cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)       VALUES (2, 'Allen', 25, 'Texas', 15000.00 )");cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)       VALUES (3, 'Teddy', 23, 'Norway', 20000.00 )");cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)       VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 )");

SELECT操作

cur.execute("SELECT id, name, address, salary  from COMPANY")rows = cur.fetchall()for row in rows:   print("ID = ", row[0])   print("NAME = ", row[1])   print("ADDRESS = ", row[2])   print("SALARY = ", row[3], "\n")

更新操作

cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID=1")conn.commit

删除操作

cur = conn.cursor()cur.execute("DELETE from COMPANY where ID=2;")conn.commit

转载地址:http://ewhzi.baihongyu.com/

你可能感兴趣的文章
如何在三个月内学会一门外语?
查看>>
看看你对Linux到底了解多少?
查看>>
网上看到的:ARM入门最好的文章(转)
查看>>
中国最美情诗100句
查看>>
javascript注册window的onload事件问题研究
查看>>
客户端技术分页控件javascript+css,可用于任何服务器端技术
查看>>
学习Swing 的网站[转]
查看>>
Google App engine 的第一个应用 midispot
查看>>
提问的智慧
查看>>
关于dom4j无法解析xmlns问题及生成非UTF-8字符集乱码问题的解决
查看>>
很好的一篇文章 如果让我重做一次研究生 王汎森
查看>>
保护U盘批处理文件
查看>>
hibernate 自动导入sql 文件import.sql 国际化编码的问题的解决方案
查看>>
第七颗头骨 & 忘魂花 凤凰
查看>>
李小龙哲学之言
查看>>
[心情] 如果有一天
查看>>
[Linux] 常用 linux 系统命令及维护备忘
查看>>
[Linux] 关于 Ext4 HowTo
查看>>
[杂记] 新年物语&关于Mysql引擎性能测试
查看>>
[心得] 近期更新&关于Infobright
查看>>