0


postgreSQL 操作 教程

postgreSQL 操作 教程

1. 建立数据库连接

psql -h IP地址 -p 端口 -U 数据库名
psql -h IP -U user_name -p1035 user_db

2. 访问数据库

\?

help

1、列举数据库:

\l

2、选择数据库:

\c

数据库名
3、查看该某个库中的所有表:

\dt

4、切换数据库:

\c interface

5、查看某个库中的某个表结构:

\d

表名
6、查看某个库中某个表的记录:select * from apps limit 1;
7、显示字符集:

\encoding

8、退出psgl:

\q

列出当前数据库所有表

\dt

列出所有表名

SELECT tablename FROM pg_tables;WHERE tablename NOTLIKE'pg%'AND tablename NOTLIKE'sql_%'ORDERBY tablename;

列出数据库名

\l

SELECT datname FROM pg_database;

切换数据库

\c 数据库名

查询数据库、表名

1、通过命令行查询

\d 

数据库 —— 得到所有表的名字

\d

表名 —— 得到表结构
2、通过SQL语句查询

select * from pg_tables"

—— 得到当前db中所有表的信息(这里pg_tables是系统视图)

select tablename from pg_tables where schemaname='public'

—— 得到所有用户自定义表的名字(这里"tablename"字段是表的名字,"schemaname"是schema的名字。用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下)

内部命令

postgresql数据管理系统使用命令方式有两种:

  1. 内部命令,以反斜线开始 \ ,如: \l 显示所有数据库
  2. 标准SQL命令,以分号 ; 或 \g 结束,可以使用多行

数据库的关键操作:
启动服务
登录
建立数据库
建立表
插入记录到表中
更新/删除/查询/修改操作
退出
停止服务
设置字符集为 utf-8

在windows7中安装的postgresql默认使用GBK字符集,经常不能使用显示中文的数据表,解决办法:
注意:在windows 7下的postgresql中写操作时要使用GBK,读操作时要用UTF8;

postgres=# \encoding utf-8 // 设置客户端的字元集
postgres=# \encoding // 显示客户端的字元集
postgres=# show client_encoding; // 显示客户端的字元集
postgres=# show server_encoding; // 显示服务器的字元集

启动服务:

net start postgresql-9.5

停止服务:

net stop postgresql-9.5

获取命令帮助:

psql --help

您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面

\h 

显示 SQL 命令的说明

\?

显示 pgsql 命令的说明 (pgsql内部命令)

\g

或者以分号(;)结尾以执行查询

\q

退出注: 数据库名称区分大小写的。


postgres=#

\help

// 获取SQL命令的帮助,同

\h

postgres=#

\quit 

// 退出,同

\q

postgres=#

\password dlf

// 重新设置用户dlf的密码,然后需要 \q退出后才生效
c:>

psql exampledb < user.sq

l // 将user.sql文件导入到exampled数据库中
postgres=#

 \h select

// 精细显示SQL命令中的select命令的使用方法
postgres=#

\l 

// 显示所有数据库
postgres=#

\dt

// 显示当前数据库中的所有表
postgres=#

\d [table_name]

// 显示当前数据库的指定表的表结构
postgres=#

\c [database_name]

// 切换到指定数据库,相当于

use

postgres=#

\du

// 显示所有用户
postgres=#

\conninfo

// 显示当前数据库和连接信息
postgres=#

\e

// 进入记事本sql脚本编辑状态(输入批命令后关闭将自动在命令行中执行)
postgres=#

\di

// 查看索引(要建立关联)
postgres=#

\prompt [文本] 名称

// 提示用户设定内部变数
postgres=#

\encoding [字元编码名称]

// 显示或设定用户端字元编码*可以将存储过程写在文本文件中aaa.sql,然后在psql状态下:
postgres=#

\i aaa.sql

// 将aaa.sql导入(到当前数据库)
postgres=#

\df

// 查看所有存储过程(函数)
postgres=#

\df+ name

// 查看某一存储过程
postgres=#

select version();

// 获取版本信息
postgres=#

select usename from pg_user;

// 获取系统用户信息
postgres=#

drop User 用户名 

// 删除用户

SQL命令通用如(标准化SQL语句):

数据库

--*创建数据库:createdatabase[数据库名];--*删除数据库:dropdatabase[数据库名];

schema

-- 选择 schemaset search_path to test_schema;-- 删除 schemaDROPschema test_2;--查看所有schemaSELECT*FROM information_schema.schemata;

查看表

--获取当前db中所有的表信息select*from pg_tables;--用户自定义的表,如果未经特殊处理,默认都是放在名为public的schema下select tablename from pg_tables where schemaname='public';--列出某个数据库下的某个schema下面所有的表select*from pg_tables where schemaname ='test_schema';--*显示表内容:select*from student;--计算数值SELECT city,(temp_lo+temp_hi)/2AS temp_avg,dateFROM weather;--选择查看SELECT*FROM weather WHERE city ='San Francisco'AND prcp >0.0;--排序SELECT*FROM weather ORDERBY city;SELECT*FROM weather ORDERBY city, temp_lo;--返回唯一值SELECTDISTINCT city FROM weather ORDERBY city;

操作表

--*创建表:-- create table ([字段名1] [类型1] ;,[字段名2] [类型2],......<,primary key (字段名m,字段名n,...)>;);CREATETABLE cities (
name       varchar(80),
location   point);--添加列;*在已有的表里添加字段:-- alter table [表名] add column [字段名] [类型];ALTERTABLE weather ADD country varchar(80);--删除列ALTERTABLE weather DROP country;--*删除表中的字段:altertable[表名]dropcolumn[字段名];--*在表中插入数据:-- insert into 表名 ([字段名m],[字段名n],......) values ([列m的值],[列n的值],......);INSERTINTO weather VALUES('San Francisco',46,50,0.25,'1994-11-27');INSERTINTO weather (date, city, temp_hi, temp_lo)VALUES('1994-11-29','Hayward',54,37);--更新行UPDATE weather
SET temp_hi = temp_hi -2, temp_lo = temp_lo -2WHEREdate>'1994-11-28';--删除行DELETEFROM weather WHERE city ='Hayward';--*重命名一个表:altertable[表名A]renameto[表名B];*重命名一个字段: 
altertable[表名]renamecolumn[字段名A]to[字段名B];*给一个字段设置缺省值: 
altertable[表名]altercolumn[字段名]setdefault[新的默认值];*去除缺省值: 
altertable[表名]altercolumn[字段名]dropdefault;*修改表中的某行某列的数据:
update[表名]set[目标字段名]=[目标值]where[该行特征];

表删除

--清空表DELETEFROM tablename;--*删除一个表:droptable[表名];--*删除表中某行数据:deletefrom[表名]where[该行特征];deletefrom[表名];// 删空整个表

表连接

--表连接SELECT*FROM weather, cities WHERE city = name;SELECT city, temp_lo, temp_hi, prcp,date, location FROM weather, cities WHERE city = name;SELECT weather.city, weather.temp_lo, weather.temp_hi, weather.prcp, weather.date, cities.location FROM weather, cities WHERE cities.name = weather.city;--内连接SELECT*FROM weather INNERJOIN cities ON(weather.city = cities.name);--左外连接SELECT*FROM weather LEFTOUTERJOIN cities ON(weather.city = cities.name);--右外连接SELECT*FROM weather RIGHTOUTERJOIN cities ON(weather.city = cities.name);SELECT W1.city, W1.temp_lo AS low, W1.temp_hi AS high, W2.city, W2.temp_lo AS low, W2.temp_hi AS high FROM weather W1, weather W2 WHERE W1.temp_lo < W2.temp_lo AND W1.temp_hi > W2.temp_hi;SELECT*FROM weather w, cities c WHERE w.city = c.name;

计算功能

--计算功能--最大值SELECTmax(temp_lo)FROM weather;--通过使用一个子查询来查询temp_lo的最大值所对应的城市SELECT city FROM weather WHERE temp_lo =(SELECTmax(temp_lo)FROM weather);SELECT city,max(temp_lo)FROM weather GROUPBY city;SELECT city,max(temp_lo)FROM weather GROUPBY city HAVINGmax(temp_lo)<40;SELECT city,max(temp_lo)FROM weather WHERE city LIKE'S%'GROUPBY city HAVINGmax(temp_lo)<40;

VIEW 视图

--VIEW 视图CREATEVIEW myview ASSELECT city, temp_lo, temp_hi, prcp,date, location
        FROM weather, cities
        WHERE city = name;--#给cities表中的name列添加 primary key
zyw_test=>ALTERTABLE cities ADDPRIMARYKEY(name);--#给weather表创建一个限制在city列上的 foreign key
zyw_test=>ALTERTABLE weather ADDFOREIGNKEY(city)REFERENCES cities(name);

Inheritance 继承

在PostgreSQL中,一个表可以从0个或多个表继承,一次查询可以查询到某个表中的所有行,或者这个表和这个表所有子表的所有行,默认为后者。
–例如:下面第一个查询查到了city表中的所有行,包括capitals表中的所有行;第二个查询只查到了city表中的所有行,并不包括capitals表。

--Inheritance 继承CREATETABLE capitals (
     state    char(2)) INHERITS (city);--- 在PostgreSQL中,一个表可以从0个或多个表继承,一次查询可以查询到某个表中的所有行,或者这个表和这个表所有子表的所有行,默认为后者。--例如:下面第一个查询查到了city表中的所有行,包括capitals表中的所有行;第二个查询只查到了city表中的所有行,并不包括capitals表。SELECT name, elevation FROM city WHERE elevation >500;SELECT name, elevation FROM ONLY city WHERE elevation >500;

python连接

import sqlalchemy as db

username ='username '
password ='password '
ip ='IP'
port ='1035'
database_name ='test_db'# Create engine. Scheme: "postgres+psycopg2://<USERNAME>:<PASSWORD>@<IP_ADDRESS>:<PORT>/<DATABASE_NAME>"
engine = db.create_engine(f"postgresql+psycopg2://{username}:{password}@{ip}:{port}/{database_name}")# # 利用getpass传入数据库密码,终端不会显示输入的密码:# import getpass# pw = getpass.getpass("Please enter password:")# # create engine# engine = create_engine(f"postgres+psycopg2://{username}:{pw}@{ip}:{port}/{database_name}")

conn = engine.connect()#连接
result = conn.execute('SELECT * FROM test_schema.weather')#执行SQL语句print(result.fetchall())#fetchall()返回所有元组,fetchone()返回一个元组print(result)
conn.close()#关闭连接

参考
https://www.postgresql.org/docs/15/tutorial-table.html
PostgreSql内部命令
https://www.geeksforgeeks.org/introduction-to-psycopg2-module-in-python/


本文转载自: https://blog.csdn.net/dujidan/article/details/128862899
版权归原作者 毒鸡蛋 所有, 如有侵权,请联系我们删除。

“postgreSQL 操作 教程”的评论:

还没有评论