数据库-PostgreSQL学习笔记

目录

  • PostgreSQL介绍与安装
    • docker安装
    • 腾讯云免费领用1个月
  • 数据库操作
    • 连接数据库实例
    • 创建数据库
    • 查看数据库列表
    • 使用数据库
    • 删除数据库
    • 修改数据库属性
  • 表操作
    • 字段类型
      • 整数
      • 浮点数
      • 日期与时间类型
      • 字符串类型
    • DDL
      • CREATE
      • DROP
      • ALTER
    • DML
      • INSERT
      • UPDATE
      • DELETE
  • 查询
    • 查询所有数据
    • 查询部分列
    • 指定条件查询
    • 查询结果排序
    • 分页查询
    • 多表查询
    • 子查询
      • exists
      • in
      • UNION查询
  • 高级特性
    • 视图
    • 外键
    • 插件
    • 函数
      • 聚合函数
  • 参考


PostgreSQL介绍与安装

docker安装

下载镜像:

docker pull postgre

启动容器:

docker run -d --name postgres --restart always -e POSTGRES_PASSWORD='admin'   -e POSTGRES_USER='admin' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /data/postgres/data:/var/lib/postgresql -p 5432:5432 -d postgres

腾讯云免费领用1个月

学习中心-免费领取一个月
在这里插入图片描述
博主这里选择了白嫖~~~

数据库操作

连接数据库实例

windows下使用pgAdmin
linux下使用psql

psql -U 用户名 -h 访问地址 -p 端口 -d postgres

腾讯云提供了网页版的连接方式,博主直接使用这个,免得安装其他的了。

创建数据库

语法:

create database database_name;

示例:

create database lady_killer9;

在这里插入图片描述

查看数据库列表

在这里插入图片描述

使用数据库

使用数据库语法

psql 数据库名

例如:

psql lady_killer9 

腾讯云上,点一下就可以了。

退出当前数据库

\q

删除数据库

语法:

drop database database_name;

示例:

drop database lady_killer9;

在这里插入图片描述

修改数据库属性

语法:

alter database database_name xxx;

示例:
在这里插入图片描述

表操作

字段类型

整数

  • SMALLINT
  • INT(INTEGER)

浮点数

  • REAL: 6位10进制数字精度
  • NUMERIC(m,n):任意精度类型,m代表长度(含精度部分),n代表精度,四舍五入
    例如,NUMERIC(3,2) 可以保存 3.11,但是100.00就会报错,3.126可以,但会保存位3.13

日期与时间类型

  • TIME: 时间,例如:16:24:05
  • DATE:日期,例如:2023-12-02
  • TIMESTAMP:日期和时间,例如:2023-12-02 16:24:05

字符串类型

  • CHAR(n):固定长度字符串,不足补空白
  • VARCHAAR:变长字符串,有长度限制
  • TEXT:可以认为无长度限制

DDL

CREATE

CREATE TABLE weather (city            varchar(80),temp_lo         int,           -- low temperaturetemp_hi         int,           -- high temperatureprcp            real,          -- precipitationdate            date
);

在这里插入图片描述

DROP

语法:

DROP TABLE tablename;

示例:

DROP TABLE weather;

在这里插入图片描述

ALTER

ALTER TABLE weather RENAME to weather2;

在这里插入图片描述

DML

INSERT

插入数据

INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '1994-11-27');

在这里插入图片描述
通过逗号分隔values后面的数据元组,可以批量插入。除此之外,可以从已有表进行

INSERT INTO weather2 SELECT * from weather;

在这里插入图片描述
也可以使用COPY命令进行本地文件读取,然后写入表格。

COPY weather FROM '/home/user/weather.txt';

当然,这里也引入了安全问题。

UPDATE

UPDATE weather SET temp_lo = 10 WHERE temp_hi = 50;

在这里插入图片描述

DELETE

DELETE FROM weather WHERE city = 'Hayward';

在这里插入图片描述

查询

查询所有数据

SELECT * FROM weather;

在这里插入图片描述

查询部分列

SELECT temp_lo,temp_hi FROM weather;

在这里插入图片描述

指定条件查询

SELECT * FROM weather WHERE city = 'San Francisco' AND prcp > 0.0;

在这里插入图片描述

查询结果排序

SELECT * FROM weather order by temp_lo;

在这里插入图片描述

分页查询

与 M Y S Q L 的 L I M I T m , n 语法不同, p o s t g r e s q l 使用的是 L I M I T 与 O F F S E T \color{red}{与MYSQL 的 LIMIT m,n语法不同,postgresql使用的是LIMIT与OFFSET} MYSQLLIMITm,n语法不同,postgresql使用的是LIMITOFFSET
,limit后面的数字是返回的数量,offset后面的是下标。

SELECT * FROM weather order by temp_lo LIMIT 1 OFFSET 1;

在这里插入图片描述
每页显示数量count,和页码(从1开始)的关系如下:

limit count offset ((page_num-1)*count)

多表查询

SELECT * FROM weather JOIN cities ON city = name;

在这里插入图片描述
注意,列名有重复时,可以使用表的别名来区分。

SELECT weather.city, weather.temp_lo, weather.temp_hi,weather.prcp, weather.date, cities.locationFROM weather JOIN cities ON weather.city = cities.name;

同样,postgresql也有外连接,左外连接

SELECT * FROM weather LEFT OUTER JOIN cities ON weather.city = cities.name;

在这里插入图片描述

子查询

exists

子查询结果为真,返回主查询结果,否则不返回。

SELECT * FROM weather WHERE EXISTS (SELECT city FROM cities WHERE NAME = 'lady_killer9');

在这里插入图片描述

SELECT * FROM weather WHERE EXISTS (SELECT city FROM cities WHERE NAME = 'San Francisco');

在这里插入图片描述

SELECT * FROM weather WHERE EXISTS (SELECT city FROM cities WHERE NAME = 'San Francisco' and city = name);

在这里插入图片描述

in

子查询结果作为结果集,主查询条件的字段从里面查找。

SELECT * FROM weather WHERE city in (SELECT NAME FROM cities WHERE NAME = 'San Francisco');

UNION查询

union查询用于合并查询结果,会去除重复的。

SELECT * FROM weather UNION SELECT * FROM weather WHERE city = 'San Francisco';

在这里插入图片描述
不想去除时,在UNION后添加ALL即可。

SELECT * FROM weather UNION ALL SELECT * FROM weather WHERE city = 'San Francisco';

在这里插入图片描述

高级特性

视图

如果你对一些数据感兴趣,又不想每次都写查询语句,可以建立一个视图,这个视图让你像普通表一样使用。

CREATE VIEW myview ASSELECT name, temp_lo, temp_hi, prcp, date, locationFROM weather, citiesWHERE city = name;SELECT * FROM myview;

在这里插入图片描述

外键

用于保护数据完整性,防止插入脏数据。

CREATE TABLE cities2 (name     varchar(80) primary key,location point
);CREATE TABLE weather2 (city      varchar(80) references cities2(name),temp_lo   int,temp_hi   int,prcp      real,date      date
);

在这里插入图片描述

插件

函数

聚合函数

max
查询最大值,min是最小值,不再展示。

SELECT max(temp_lo) FROM weather;

在这里插入图片描述
注意:max不能直接放到where中。
count
用于统计数量。

SELECT city, count(*), max(temp_lo) FROM weather GROUP BY city;

在这里插入图片描述
sum
用于求和
avg
用于求平均值

SELECT sum(temp_lo),avg(temp_lo) FROM weather;

在这里插入图片描述
有聚合函数时,可以通过HAVING进行过滤

SELECT city, count(*), max(temp_lo) FROM weather GROUP BY city HAVING max(temp_lo) < 40;

在这里插入图片描述

参考

postgresql官网
postgresql教程
腾讯云-postgresql
数据库-Mysql使用学习笔记(命令行及图形化界面)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/194588.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows驱动中校验数字签名(使用 ci.dll)

1.背景 对于常规应用程序来说&#xff0c;校验数字签名认证在应用层可以使用 WinVerifyTrust, 在驱动层使用常规的 API无法使用&#xff0c;自己分析数据又太麻烦。 在内核中 ci.dll 包装了数据签名验证相关的功能&#xff0c;我们可以使用该 dll 来实现我们的数字签名验证。 详…

Ubuntu20.24 安装ecCodes,包括 tar.gz 和 python(笔记)

这里写目录标题 动机为此找了解决方案。废话不多说&#xff0c;如下&#xff1a;1. 下载 ecCodes 的源文件&#xff0c;网址如下&#xff1a; https://confluence.ecmwf.int/display/ECC/Releases2. 解压包:3. 创建 ecCodes 的安装目录:4. 通过 cmake 安装 :5. 编译, 测试&…

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204]

Siemens-NXUG二次开发-新建与保存prt文件[Python UF][20231204] 1.python uf函数1.1 NXOpen.UF.Part.New1.2 NXOpen.UF.Part.Save1.3 NXOpen.UF.Ui.OpenListingWindow1.4 NXOpen.UF.Ui.IsListingWindowOpen1.5 NXOpen.UF.Ui.WriteListingWindow1.6 NXOpen.UF.Ui.SaveListingWin…

电气间隙和爬电距离的算法

电气间隙和爬电距离 一、定义 1、电气间隙&#xff1a;不同电位的两个导电部件间最短的空间直线距离。 2、爬电距离&#xff1a;不同电位的两个导电部件之间沿绝缘材料表面的最短距离。 3、隔离距离&#xff08;机械式开关电器一个极的&#xff09;&#xff1a;满足对隔离器…

【重点】【双指针】42. 接雨水

题目 重点题目&#xff0c;深刻理解&#xff01;&#xff01;&#xff01; 解法1&#xff1a;备忘录 O(N) O(N) class Solution {public int trap(int[] height) {int n height.length, res 0;int[] lMax new int[n];int[] rMax new int[n];lMax[0] height[0];rMax[n …

华为手环关闭智能适时测量

问题 使用华为手环并使用华为创新研究APP后&#xff0c;会自动打开智能适时测量开关&#xff0c;此开关开启后&#xff0c;手环会在睡眠时间自动测量血氧&#xff0c;增加手环功耗从而影响续航&#xff0c;用户可根据自身需求决定是否开启&#xff0c;下文介绍如何找到此开关。…

Stable Diffusion 系列教程 - 1 基础准备(针对新手)

使用SD有两种方式&#xff1a; 本地&#xff1a; 显卡要求&#xff1a;硬件环境推荐NVIDIA的具有8G显存的独立显卡&#xff0c;这个显存勉勉强强能摸到门槛。再往下的4G可能面临各种炸显存、炼丹失败、无法生成图片等各种问题。对于8G显存&#xff0c;1.0模型就不行&#xff0…

Google Guava 反射工具使用详解

文章目录 反射类操作方法操作字段操作获取注解 反射 在 Guava 中&#xff0c;反射&#xff08;Reflection&#xff09;模块提供了一些用于简化反射操作的工具类和方法。通过 Guava 的反射模块&#xff0c;您可以方便地进行类、方法、字段的操作、获取注解信息等。下面详细介绍…

洛谷 P9516 color C++代码

目录 前言 思路点拨 AC代码 结尾 前言 今天我们来做洛谷上的一道题目。 网址&#xff1a;color - 洛谷 题目&#xff1a; 思路点拨 这题就是if-else判断输入的五个数据和不就OK了&#xff1f; 在这里我的估值是183&#xff08;截止2023.12.3&#xff09;&#xff0c;热…

Java 中 IO 流分为几种?

Java 中 IO 流分为几种&#xff1f; 在Java中&#xff0c;I/O&#xff08;输入/输出&#xff09;流用于处理输入和输出操作。I/O 流分为两大类&#xff1a;字节流和字符流&#xff0c;每个类别又分为输入流和输出流。 字节流&#xff08;Byte Streams&#xff09;&#xff1a…

【力扣】56. 合并区间

【力扣】56. 合并区间 文章目录 【力扣】56. 合并区间1. 题目介绍2. 解法2.1 方法一&#xff1a;标志位2.2 方法二&#xff1a;排序 遍历 3. Danger参考 1. 题目介绍 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合…

Linux系统配置深度学习环境之cudnn安装

前言 一个针对深度学习应用优化的 GPU 加速库。它提供了高性能、高可靠性的加速算法&#xff0c;旨在加速深度神经网络模型的训练和推理过程。 cuDNN 提供了一系列优化的基本算法和函数&#xff0c;包括卷积、池化、规范化、激活函数等&#xff0c;以及针对深度学习任务的高级功…

移动平均滤波的原理和C代码

移动平均滤波是一种简单有效的平滑信号的方法&#xff0c;它通过计算一系列数据点的平均值来减小信号中的波动。基本的移动平均滤波方法有两种&#xff1a;简单移动平均&#xff08;SMA&#xff09;和指数加权移动平均&#xff08;EWMA&#xff09;。 简单移动平均滤波&#xf…

Go读取yaml文件,struct返回,json输出

程序模块中&#xff0c;缺少不了一些配置定义&#xff0c;这时定义yaml是个很好的选择 先定义yaml文件内容&#xff0c;文件名为&#xff1a;task_status_config.yaml confs:#阅读类任务&#xff0c;即提醒任务read:name: readawait: #待开始任务status_id: 0ing: #进行中任务…

基于直流微电网的光伏并网功率转换装置设计与运行仿真

摘要 微电网是目前国内外应用较为广泛的一种绿色可再生能源&#xff0c;近几年我国微电网产业的发展十分迅速。然后&#xff0c;越来越多的微电网系统建立并网&#xff0c;微电网产生的电能受外界因素影响较大&#xff0c;具有一定的随机性和波动性&#xff0c;给并网后的电力系…

高通410随身wifi编译安装Asterisk(chan_mobile)搭建内网voip系统

前几天写了教程在ubuntu上搭建Asterisk,成功在内网打通了SIP通话。 ubuntu是18.04,安装的虚拟机系统;最近手头的斐讯的N1,Armbian系统,以及高通410的Debian系统,就是ubuntu内核,所以理论上应该也可以安装Asterisk;在这之前在openwrt上研究了一周多,Asterisk是跑起来了…

MATLAB算法实战应用案例精讲-【图像处理】人脸识别(补充篇)

目录 人脸识别业务流程 1、通用流程概述 2、ArcFace接入集成及示例 2.1 SDK的获取 2.2 SDK包结构

leetcode (力扣) 154. 寻找旋转排序数组中的最小值 I+II (二分法)

文章目录 题目描述思路分析完整代码 题目描述 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后&#xff0c;得到输入数组。例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以…

股票主力建仓

只有拥有足够的筹码&#xff0c;主力才能在实盘中控制股价的涨跌&#xff0c;所以&#xff0c;在确定目标股之后&#xff0c;主力想要进行控盘&#xff0c;首先要做的第一件事就是建仓。那么&#xff0c;主力会在什么时候建仓&#xff1f;建仓的时候会采用什么方法&#xff1f;…

53.redis分布式缓存

目录 一、单机安装Redis。 二、Redis主从集群。 2.1.集群结构 2.2.准备实例和配置 2.3.启动 2.4.开启主从关系 2.5.测试 三、搭建哨兵集群。 3.1.集群结构 3.2.准备实例和配置 3.3.启动 3.4.测试 四、搭建分片集群。 4.1.集群结构 4.2.准备实例和配置 4.3.启动…