数据库-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 temperature
    temp_hi         int,           -- high temperature
    prcp            real,          -- precipitation
    date            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.location
    FROM 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 AS
    SELECT name, temp_lo, temp_hi, prcp, date, location
        FROM weather, cities
        WHERE 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.mfbz.cn/a/213663.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HttpRunner自动化测试之响应中文乱码处理

响应中文乱码&#xff1a; 当调用接口&#xff0c;响应正文返回的中文是乱码时&#xff0c;一般是响应正文的编码格式不为 utf-8 导致&#xff0c;此时需要根据实际的编码格式处理 示例&#xff1a; 图1中 extract 提取title标题&#xff0c;output 输出 title 变量值&#x…

Reactor实战,创建一个简单的单线程Reactor(理解了就相当于理解了多线程的Reactor)

单线程Reactor package org.example.utils.echo.single;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.*; import java.util.Iterator; import java.util.Set;public class EchoServerReactor implements Runnable{Selector sele…

10 分钟解释 StyleGAN

一、说明 G在过去的几年里&#xff0c;生成对抗网络一直是生成内容的首选机器学习技术。看似神奇地将随机输入转换为高度详细的输出&#xff0c;它们已在生成图像、生成音乐甚至生成药物方面找到了应用。 StyleGAN是一种真正推动 GAN 最先进技术向前发展的 GAN 类型。当Karras …

rust入门(rust教程、rust安装方法)

文章目录 Rust开发入门Rust的特性Rust的应用场景Rust安装——环境配置1. 安装rustup具体执行步骤 2. 验证安装 Rust的卸载基本语法变量与数据类型控制流函数 Rust的所有权系统错误处理实战&#xff1a;构建一个小项目创建新项目编写代码运行项目安装相关链接器运行 删除项目 Ru…

第十五届蓝桥杯模拟赛(第二期)

第一题 计算 答案&#xff1a;108 std::cout<<36*30/10; 第二题 快速幂 答案&#xff1a;608 #include<bits/stdc.h> const int mod1e3; #define int long long int qmi(int a,int b) {int res1;while(b){if(b&1) res(res*a)%mod;b>>1;aa*a%mod;}return…

【数据库】基于封锁的数据库调度器,以及等待锁处理的优先级策略

封锁调度器的体系结构 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会…

Redis中分布式锁的使用

在分布式系统中&#xff0c;如果使用JVM中的同步锁在高并发的场景下仍然会产生线程安全问题。首先我们来查看在多个服务器时为什么会产生线程安全问题&#xff0c;有这样一个案例&#xff0c;有一件商品购买规则为一个用户只能购买一次&#xff0c;如果使用同步锁锁住用户id&am…

C# Spire操作Excel数据透视表

一、概述 数据透视表&#xff08;Pivot Table&#xff09;是一种交互式的表&#xff0c;可以进行某些计算&#xff0c;如求和与计数等&#xff0c;可动态地改变透视表版面布置&#xff0c;也可以重新安排行号、列标和页字段。当改变版面布置时&#xff0c;数据透视表也会按照新…

PMP-01

考纲 需要看的书籍 学习计划

奇技淫巧第9期

今天回顾一下 5~12 月所遇到的零碎知识点。 文章目录 歪门邪道优雅删除“学习资料”快速下载 vscode两种硬盘格式zotero在word中插入参考文献markdown 下划线查看 CPU Linux 命令postgres 无法通过 root 用户操作bash 初学者礼包gitwin 11 edge 浏览器0x80190001 报错 python …

Pycharm调用Conda虚拟环境

参考这个链接的评论区回答&#xff1a;Pycharm调用Conda虚拟环境 笑死&#xff0c;我之前也是这样的&#xff0c;不过好像也能用&#xff0c;搞不懂~

蓝桥杯每日一题2023.12.2

题目描述 蓝桥杯大赛历届真题 - C 语言 B 组 - 蓝桥云课 (lanqiao.cn) 题目分析 答案&#xff1a;3598180 由题目分析可以知道&#xff0c;给小明发的牌一共有13种类型&#xff0c;每种类型的牌一共有四张。对于每种牌&#xff0c;我们都有5种选择&#xff0c;不拿、拿一张、…

WebGL笔记:矩阵缩放的数学原理和实现

矩阵缩放的数学原理 和平移一样&#xff0c;以同样的原理&#xff0c;也可以理解缩放矩阵让向量OA基于原点进行缩放 x方向上缩放&#xff1a;sxy方向上缩放&#xff1a;syz方向上缩放&#xff1a;sz 最终得到向量OB 矩阵缩放的应用 比如我要让顶点在x轴向缩放2&#xff0c;y轴…

ArrayList 与 顺序表 (附洗牌算法)!

曾经我也是一枚学霸&#xff0c;直到有一天想去学渣的世界看看&#xff0c;结果就找不到回去的路了。 目录 1. 线性表 2.顺序表 2.1 接口的实现 3. ArrayList简介 4. ArrayList使用 4.1 ArrayList的构造 4.2 ArrayList常见操作 4.3 ArrayList的遍历 4.4 ArrayList的扩…

分享66个焦点幻灯JS特效,总有一款适合您

分享66个焦点幻灯JS特效&#xff0c;总有一款适合您 66个焦点幻灯JS特效下载链接&#xff1a;https://pan.baidu.com/s/10bqe09IAZt_hbsZlXaxkxw?pwd6666 提取码&#xff1a;6666 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;…

万能的视频格式播放器

今天博主给大家带来一款“万能”的视频播放器——VLC Media Player&#xff0c;支持的文件格式非常多&#xff0c;大家快来一起看看吧&#xff01; VLC Media Player 是一款可播放大多数格式&#xff0c;而无需安装编解码器包的媒体播放器。可以播放 MPEG-1、MPEG-2、MPEG-4、D…

Tektronix泰克示波器

一、what’s the oscilloscope&#xff1f; 【ref】https://www.tek.com.cn/blog/what-is-an-oscilloscope 二、基础知识 1、带宽&#xff1a;100Mhz&#xff1b;采样率&#xff1a;2.5GS/s 1GS/s指的是采样率&#xff0c;前面大写的S是sample采样的意思 后面的s是秒 也就是示波…

粉丝提问:岗位与描述不一致,小公司感觉学不到东西,工作内容就是调试,想辞职

0、粉丝问题&#xff1a; 大哥&#xff0c;我毕业已经工作两个月了&#xff0c;在一家小公司&#xff0c;岗位和描述的不一致&#xff0c;感觉就像调试一样&#xff0c;写代码的机会很少也没人带&#xff0c; 我想转嵌入式&#xff0c;您有什么建议的方向吗&#xff0c;或者是…

MathType公式编辑器安装教程

一、下载 MathType7是一款可以帮助用户快速完成数学公式编辑的应用软件&#xff0c;这款软件适合在进行教育教学、科研机构、论文写作的时候使用。我们可以直接通过这款软件来获取到大量数学上使用到的函数、数学符号等内容&#xff0c;然后使用这些内容来完成公式编辑。 …

玩转大数据4:大数据的崛起与应用领域探索

图片来源网络 引言 在当今数字化时代&#xff0c;大数据正以前所未有的速度和规模崛起。大数据的出现不仅改变了企业和组织的经营模式&#xff0c;也对我们的社会生活带来了深刻的影响。Java作为一种广泛使用的编程语言&#xff0c;在大数据领域发挥着重要的作用。本文将重点…
最新文章