一天学完 PostgreSQL

329 阅读2分钟

数据类型(常用版本)

数值类型

smallint2 字节小范围整数-32768 到 +32767
integer4 字节常用的整数-2147483648 到 +2147483647
numeric可变长用户指定的精度,精确小数点前 131072 位;小数点后 16383 位

numeric(m,n) m是位数,不包括小数点。n是小数点后精确多少位。如果小数点后的位数超标。则自动四舍五入。造成精确度损失。

real4 字节可变精度,不精确6 位十进制数字精度

时间类型

time 一天之内的时间 10:05:05

date 日期 1895-05-21

timestamp 日期和时间 1895-05-21 10:05:05

字符串类型

char(n) 固定长度字符串,不足使用空白补全

varchar(n) 变长字符串,有长度限制

text 变长字符串 无长度限制

运算符介绍

运算符描述实例
+a + b 结果为 5
-a - b 结果为 -1
*a * b 结果为 6
/b / a 结果为 1
%模(取余)b % a 结果为 1
运算符描述实例
=等于(a = b) 为 false。
!=不等于(a != b) 为 true。
<>不等于(a <> b) 为 true。
大于(a > b) 为 false。
<小于(a < b) 为 true。
>=大于等于(a >= b) 为 false。
<=小于等于(a <= b) 为 true。

between 1 and 3 这个是闭区间属性。可以为1和3。

1 in(2,4,1) in是判断是否在此集合中的。

like '%a' like "a" link进行模糊查询的。%代表多个字符,_代表一个字符。

序号运算符 & 描述
1AND逻辑与运算符。如果两个操作数都非零,则条件为真。PostgresSQL 中的 WHERE 语句可以用 AND 包含多个过滤条件。
2NOT逻辑非运算符。用来逆转操作数的逻辑状态。如果条件为真则逻辑非运算符将使其为假。PostgresSQL 有 NOT EXISTS, NOT BETWEEN, NOT IN 等运算符。
3OR逻辑或运算符。如果两个操作数中有任意一个非零,则条件为真。PostgresSQL 中的 WHERE 语句可以用 OR 包含多个过滤条件。

常用函数

PostgreSQL函数也称为PostgreSQL存储过程。

  • COUNT 函数:用于计算数据库表中的行数。
  • MAX 函数:用于查询某一特定列中最大值。
  • MIN 函数:用于查询某一特定列中最小值。
  • AVG 函数:用于计算某一特定列中平均值。
  • SUM 函数:用于计算数字列所有值的总和。
  • length 函数:用于计算字符的长度
  • concat 函数:用于合并字符串。
  • SELECT EXTRACT(YEAR FROM INTIME) FROM RK 从INTIME字段中提取年份
  • SELECT EXTRACT(MONTH FROM INTIME) FROM RK 从INTIME字段中提取月份
  • SELECT EXTRACT(DAY FROM INTIME) FROM RK 从INTIME字段中提取日

自定义函数

create or replace function test(varchar, varchar) returns  varchar
 as 'select $1||$2;'
language sql;

说明

create or replace function 创建或覆盖

test 函数名称

(varchar, varchar)参数数量和类型

returns varchar 返回类型

11||2 $1表示第一个参数 ||是拼接的意思

language sql; 创建语言是sql

调用

select test('ss','bb');

image.png

删除函数 drop function test(varchar, varchar);

索引

提高搜索效率。如同给一本书建立一个目录

分类

PostgreSQL中有几种索引类型,如B-treeHashGiSTSP-GiSTGIN等。每种索引类型根据不同的查询使用不同的算法。 默认情况下,CREATE INDEX命令使用B树索引。

创建索引

create index  id_index on test_user(id);
//根据test_user表的id字段,创建一个叫id_index的索引

id_index索引名称 test_user 表名称 id 字段

删除索引

drop  index  id_index;
//删除叫做id_index的索引

视图

在PostgreSQL中,视图(VIEW)是一个伪表。 它不是物理表,而是作为普通表选择查询。
视图也可以表示连接的表。 它可以包含表的所有行或来自一个或多个表的所选行。

视图便于用户执行以下操作:

  • 它以自然和直观的方式构建数据,并使其易于查找。
  • 它限制对数据的访问,使得用户只能看到有限的数据而不是完整的数据。
  • 它归总来自各种表中的数据以生成报告。

创建视图

create view test_user_viem as select id,age from test_user
//创建一个叫做test_user_viem的视图

as后面执行的是形成视图内容的结果集合

删除视图

drop view test_user_viem;
//删除一个叫做test_user_viem的视图

视图作用

简单化:避免重复编写复杂sql 安全性:可以屏蔽敏感字段信息

数据库增删查改

简单插入

insert into test_user (age,money,score) values 
(10,100.255,8558556.235648558525)

批量插入

insert into test_user (age,money,score) values
(10,100.255,8558556.235648558525),
(10,100.255,8558556.235648558525),
(10,100.255,8558556.235648558525);

更新操作

update test_user set age=58 where id=1;

删除操作

delete from test_user where id=1;

简单条件单表查询

select *from test_user where id=2;

条件可以是> < != between and in() like

复杂条件单表查询

is null 空值查询 is not null fei空值查询

通过and 和 or进行多条件的查询

select *from test_user order by score desc nulls first ;

nulls first 排序的时候,null值在前。

limit 限制查询数量 offset

offset 忽略前几条

多表连接查询

image.png

直接使用where是隐式内连接查询 inner join on 是显式内连接查询

缺陷:如果有的员工没有确定部门。那么这些特殊的员工信息不会被查出来。

左连接查询 image.png

右连接查询和左连接查询相似

子查询

select 嵌套的查询

exists关键字 image.png

exists后面的查询如果查出结果,前面的查询才会执行。

in关键字

image.png

查询结果集合并

1657702156459.jpg

每条查询的字段数量保存一致,如果缺少可以使用null代替。