目录
PostgreSQL学习笔记(二)
PostgreSQL数据库基本操作
一、登录和登出
这里假设用户使用postgres登录数据库。
在控制台登录语句为:psql -U postgres 登录语法:psql –U postgres [dbname]
退出语法使用:\q
查看命令的帮助提示语法为:psql -?
二、数据库操作
创建数据库语法:create database 数据库名;
删除数据库语法:drop database 数据库名;(删除数据数据库时需关闭数据库连接或切换至其他数据库)
列举数据库语法:\l
选择数据库语法:\c 数据库名
三、数据库表操作
创建表语法:create table 表名(<字段名><数据类型(数量)>......);
查看表结构语法:\d 表名
删除表:drop table 表名
四、数据库CRUD操作
Insert操作
PostgreSQL数据库支持多种插入形式。
- 正常的一一对应插入数据
- 不按照字段顺序插入数据
- 省略某些字段插入数据(未设置not null/具有默认值或生成策略)
同时可以使用Alter增加一列字段。
数据导入/导出:
psql导入(批量插入):
未登录: psql -U 用户名 -d 表名 -f 文件路径
登录数据库: 1. psql –U 用户名 -d 数据库名 2. \i 文件路径(Unix)
pg_dump导出:
pg_dump -U postgres 用户名 -t 表名 数据库名(缺省时同用户名) > 路径/文件名
copy … from 导入:
copy … to 导出(导出weather表全部数据:):
Select查询语句
在查询时,可以查询某一张表中的全部字段,或者查询部分字段,或者查询表达式
注:查询表达式,如果没有AS字句,对应字段会用默认命名 ?column?,WHERE 条件查询:后面跟bool表达式。查询只返回表达式为true的数据。 多个bool表达式之间用AND(与)、OR(或)和NOT(非)连接。
在查询过程中可以设置一些特殊的查询条件,这些查询条件可以帮助我们更加细致的查询数据。
ORDER BY排序查询:
DISTINCT 去重:
GROUP BY 分组:
HAVING 子句(与GROUP BY子句组合使用,用于选择函数结果满足某些条件的特定行):
LIKE 匹配:
‘_’表示匹配一个占位符 ,
’%’表示匹配任意多个字符
IN 、NOT IN、BETWEEN 与 WHERE 连用
IN : 指定条件满足IN条件
NOT IN:指定条件否定IN条件
BETWEEN:以从两个指定条件之间的表中获取数据
UNION 、UNION ALL :
UNION :子句/运算符用于合并两个或多个SELECT语句的结果,不返回任何重复的行
UNION ALL :运算符是用来结合两个SELECT语句,包括重复行
>两个查询都必须返回相同数量的列。
>查询中的相应列必须具有兼容的数据类型
>可使用ORDER BY子句,对指定列的组合结果集中的行进行排序,
PostgreSQL数据库同样支持子查询和多表查询。
子查询:
子查询必须遵循以下规则:
> 子查询必须括在括号中。
> 子查询在SELECT子句中只能有一列,除非主查询中有多个列用于比较其所选列的子查询。
> ORDER BY不能用于子查询,尽管主查询可以使用ORDER BY。
> GROUP BY可用于执行与子查询中的ORDER BY相同的功能。
> 返回多行的子查询只能与多个值运算符一起使用,
例如:IN,EXISTS,NOT IN,ANY / SOME,ALL运算符。
BETWEEN运算符不能与子查询一起使用; 但是,BETWEEN可以在子查询中使用
多表查询:
Update更新操作
PostgreSQL中的upsert操作
当在表中插入一个新行时,PostgreSQL会更新该行(如果它已经存在),否则,PostgreSQL会插入新行
命令:
Delete删除操作