PostgreSQL

说明

  • PostgreSQL手册
  • SQL关键字大小写不敏感,即大小写一样
  • 字符类型要用单引号(‘AcTarjan’),日期类型要用#号(# 2021-11-08 #)
  • SQL语句中值一律加单引号(数字、字符串、日期),列名(无修饰或加双引号)
  • SQL语句执行顺序:

登录

su - postgres			#切换到到pg数据库所在用户
psql										#本地登录postgres用户
psql -U <用户名>								#本地登录
psql -U <用户名> -h <主机地址> -p <端口号>		#远程登录

用户

CREATE USER <用户名> WITH PASSWORD 'your password';		#创建用户,需要先登录到超级用户postgres
DROP USER [IF EXISTS] <用户名>;							#删除用户

数据库

CREATE DATABASE [IF NOT EXISTS] <数据库名>;		#创建数据库
DROP DATABASE [IF EXISTS] <数据库名>;			#删除数据库
\l												#查看所有数据库
\c <数据库名>									#选择数据库
\dg												#查看数据库的用户
\dt												#查看数据库内的所有表
\q												#退出数据库

\d <表名>								#查看表的结构
CREATE TABLE [IF NOT EXISTS] <表名> (
	id INTEGER PRIMARY KEY,							//主键(即非空唯一)
	name VARCHAR(5) NOT NULL UNIQUE,				//非空唯一
	age INTEGER CHECK (age > 0 AND age < 150),		//检查约束
	math_score NUMERIC DEFAULT 0.0,					//默认值
	total_score NUMERICCHECK (total_score >= math_score)				//表约束
);
DROP TABLE [IF EXISTS] <表名>;

增删改查

/********************插入*******************/
INSERT INTO <表名> VALUES('AcTarjan',22);				//必须知道表的结构
INSERT INTO <表名>(name,age) VALUES('AcTarjan',22);	
INSERT INTO <表名>(name,age) VALUES('AcTarjan',22),('Bob',DEFAULT);

/********************不存在则插入,存在则更新*******************/
INSERT INTO <表名>(name,age) VALUES($1,$2)
ON CONFLICT(name) DO UPDATE SET age = $2;		#name必须唯一	

/********************删除*******************/
DELETE FROM <表名> WHERE name = 'AcTarjan';
DELETE FROM <表名>;			#表内的所有行将会被删除

/********************修改*******************/
UPDATE <表名> SET age = age + 1 WHERE name = 'AcTarjan';


/********************查询*******************/
SELECT * FROM <表名> WHERE id = 1;
SELECT COALESCE(age,-1) AS age FROM <表名> WHERE id = 1;			#如果age为空则查询结果为-1
SELECT score FROM <表名> ORDER BY <列名> [ASC|DESC];				#asc升序,desc降序
SELECT * FROM <表名> LIMIT 4 OFFSET 2;							#从第3行开始选取不超过4行
SELECT class FROM <表名> GROUP BY class;							#按班级分组
SELECT class,SUM(score) FROM <表名> GROUP BY class HAVING SUM(score) > 1000;	#班级总分数超过1000的班级

函数

  • COALESCE(args):返回参数中从前到后第一个不为空的值
  • COUNT(列名):返回该列的行数,NULL不计入
  • SUM(列名):求和
PostgreSQL是以加州大学伯克利分校计算机系开发的POSTGRES,现在已经更名为PostgreSQL. PostgreSQL支持大部分SQL标准并且提供了许多其它现代特性:复杂查询、外键、触发器、视图、事务完整性等。 PostgreSQL 是一个免费的对象-关系数据库服务器(数据库管理系统),它在灵活的 BSD-风格许可证下发行。它提供了相对其他开放源代码数据库系统(比如 MySQL 和 Firebird),和专有系统(比如 Oracle、Sybase、IBM 的 DB2 和 Microsoft SQL Server)之外的另一种选择。 事实上, PostgreSQL 的特性覆盖了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL 是全功能的自由软件数据库,很长时间以来,PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统(MVCC)、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。 Inprise 的 InterBase 以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL 的质量日益提高。从技术角度来讲,PostgreSQL 采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。 本课程作为PostgreSQL数据库管理二,主要讲解以下内容:1.     PostgreSQL中的子查询2.     PostgreSQL公共表表达式3.     PostgreSQL数据的修改4.     PostgreSQL中的事务5.     PostgreSQL数据导入和导出6.     PostgreSQL数据库的管理7.     PostgreSQL表的管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值