Greenplum(二)【SQL】

前言

        Greenplum 的剩余部分主要其实主要就是 DDL 和之前学的 MySQL 不大一样,毕竟 Greenplum 是基于 PostgreSQL 数据库的,不过那些 DML 和 MySQL、Hive 基本上大差不差,所以就没有必要浪费时间了。

1、DDL

1.1、库操作

1.1.1、创建数据库

语法

CREATE DATABASE name
[ [ WITH ] [ OWNER [=] db_owner ] -- 指定数据库所有者
   [ TEMPLATE [=] template ] -- 指定数据库模板(规范和约束),默认是 template1
   [ ENCODING [=] encoding ] -- 指定当前数据库的编码
   [ TABLESPACE [=] tablespace ]  -- 表的命名空间(默认是 pg_default)
   [CONNECTION LIMIT [=] connlimit ]  -- 限制当前数据库的最大连接数 -1代表无限制
]

案例

CREATE DATABASE my_db1
WITH OWNER gpadmin
ENCODING 'utf-8'
TABLESPACE pg_dafault
CONNECTION LIMIE 10;

1.1.2、切换数据库

如果是使用 PSQL 的 CLI 命令行的话,我们可以使用下面的命令来切换数据库:

\c my_db1

使用 DataGrip 只能通过下面的按钮来切换

 1.1.3、创建 schema

        schema 相当于是一种归类分组的作用,毕竟海量数据场景下,一个数据库下面可能有成千上万张表,Greenplum 在库和表之间添加了一层 schema 使得表可以更好被管理。

CREATE SCHEMA my_biz;
1.1.4、查询所有数据库

同样,如果在 PSQL 的 CLI 命令行的话可以通过下面的命令来查看所有数据库:

\l

也可以使用下面的 SQL 命令:

-- 显示所有的库
SELECT * FROM pg_database;

1.1.5、删除数据库

 如果要删除数据库,必须先离开该数据库(\c 切换到别的数据库)才能删除

DROP DATABASE my_db1;

 1.2、表操作

1.2.1、创建表

语法
CREATE [EXTERNAL] TABLE table_name( -- 创建外部表,建表的同时可以指定一个实际数据的路径(location 可以是linux,也可以是 HDFS)
 column1 datatype [NOT NULL] [DEFAULT] [CHECK] [UNIQUE], -- 字段约束
 column2 datatype,
 column3 datatype,
 .....
 columnN datatype,
 [PRIMARY KEY()] -- 指定当前主键
)[ WITH ()] -- 定义数据追加方式、压缩格式、压缩级别等
 [LOCATION()] -- 如果使用外部表才会配合使用这个关键字
 [FORMAT] -- 定义当前表的存储格式
 [COMMENT] -- 注释
 [PARTITION BY] -- 分区字段 同时也是创建分区表的关键字
 [DISTRIBUTE BY ()]; -- 指定分布数据的键值(比如使用哈希算法计算数据的存储位置)
内部表和外部表的区别

(1)内部表(Regular Tables)

数据存储:内部表的数据直接存储在 GreenPlum 数据库的数据文件中。这意味着数据被物理存储在数据库服务器上。

事务管理:内部表完全支持事务管理。这包括 ACID 属性(原子性、一致性、隔离性和持久性),确保数据完整性和可靠性。

索引和约束:你可以在内部表上创建索引和约束,这有助于提高查询性能和维护数据完整性。

管理和维护:内部表可以使用数据库的全部管理和维护功能,如备份和恢复。

适用性:适用于需要高性能查询和事务完整性的数据。

(2)外部表(External Tables)

数据存储:外部表的数据存储在数据库外部,如在文件系统、Hadoop HDFS 或任何可通过 SQL/MED(SQL Management of External Data)访问的数据源。外部表仅存储数据的元数据和位置信息。

事务管理:外部表不支持事务管理。它们主要用于读取和加载操作,不保证 ACID 属性。

索引和约束:由于数据实际存储在外部,你不能在外部表上创建索引或强制执行数据库级别的约束。

管理和维护:外部表的管理相对简单,因为它们只是对外部数据源的引用。备份和恢复通常不适用于外部表本身,而是应用于数据源。

适用性:适用于 ETL(Extract, Transform, Load)操作,即从外部数据源提取数据,然后可能将其转换和加载到内部表中进行进一步处理。

案例

        创建外部表这里使用的数据源是 linux 文件系统下的一个 csv文件,需要我们使用 Greenplum 为该路径开启一个 gpfdist 服务: 

-- -d指定数据所在目录 -p 指定端口
gpfdist -d ./ -p 8081 &
-- 创建内部表
CREATE TABLE doctor(
    doctor_id serial primary key ,
    name varchar(100),
    department varchar(100),
    hire_date date
);

INSERT INTO doctor (name, department, hire_date) VALUES
    ('小美','护士','2024-07-08'),
    ('二狗','呼吸内科','2024-07-08'),
    ('铁蛋','骨科','2024-07-08');

DROP EXTERNAL TABLE supplier;
-- 外部表
CREATE EXTERNAL TABLE supplier(
    id varchar(10),
    name varchar(20),
    job varchar(20),
    birthday varchar(20)
    )
LOCATION ('gpfdist://hadoop102:8081/patient.csv')
FORMAT 'CSV';

-- 查询外部表
SELECT * FROM supplier;

查询结果

  

1.2.2、修改表

修改表名
ALTER TABLE table_name RENAME TO new_name;
增加/修改/替换列信息
-- 新增列
ALTER TABLE doctor ADD COLUMN addr varchar(20);
-- 更新列名
ALTER TABLE doctor  RENAME addr TO address;
-- 更新列数据类型
ALTER TABLE doctor ALTER COLUMN age TYPE int;
-- 删除列信息
ALTER TABLE doctor DROP COLUMN address;

1.2.3、清空表

注意:只能清除内部表,但是不能清除外部表 

TRUNCATE TABLE doctor;

1.2.4、删除表

DROP [EXTERNAL] TABLE table_name;

2、DML

2.1、数据导入

2.1.1、copy 方式

语法

COPY table_name FROM file_path DELIMITER sep;

创建内部表并准备数据:

CREATE TABLE student(
    name varchar(20),
    department varchar(20),
    age int
);

导入并查询(这里的文件路径为主节点的文件路径,上面的外部表数据源虽然也在主节点但是需要通过 gpfdist 协议,和这里不一样):

COPY student FROM '/home/gpadmin/software/test/student.csv' DELIMITER ',';

SELECT * FROM student;

查询结果:

 

2.1.2、通过查询向表中查询数据

INSERT INTO student
SELECT name,job AS department,0 AS age FROM supplier;

2.1.3、通过查询语句创建并加载数据

CREATE TABLE student2 AS SELECT * FROM student;

2.2、数据导出

COPY student2 TO '/home/gpadmin/software/test/student.txt';

2.3、数据更新和删除

 2.3.1、更新数据

UPDATE student2 SET age = 18,name = 'test' WHERE age = 0;

2.3.2、删除数据

DELETE FROM student2 WHERE age = 20;

总结 

        剩下的一些查询语句已经在 MySQL、HQL 中练习很多了,这里不再浪费时间了,下去之后多花点时间练练 SQL 题就OK了。

        关于 Greenplum 再深入的内容比如分布式事务、数据备份与迁移等资料网上比较少,之后慢慢精进。

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

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

相关文章

p11函数和递归

递归与迭代 求n的阶乘。&#xff08;不考虑溢出&#xff09; int Fac1(int n) {int i0;int ret1;for(i1;i<n;i){ret*i;}return ret; } int main(){//求n的阶乘int n0;int ret0;scanf("%d",&n);retFac1(n);printf("%d\n",ret);return 0; } int Fac…

Qt 进程间通信(一)——QSharedMemory共享内存

QSharedMemory共享内存 序言环境理论—逻辑理解实战—代码读取示例写入示例 序言 讲讲Qt的共享内存吧&#xff0c;巩固下 环境 msvc2022 Qt5.15 参考文档&#xff1a;https://doc.qt.io/qt-5/qsharedmemory.html 理论—逻辑理解 看下面前&#xff0c;你需要将共享内存看成…

【设计模式】观察者模式(定义 | 特点 | Demo入门讲解)

文章目录 定义结构Demo | 代码Subject目标类Observer抽象观察者观察者1 | CPU监听器观察者2 | 内存监听器客户端 | Client 优点适合场景 定义 所谓观察者模式就是你是被观察的那个对象&#xff0c;你爸爸妈妈就是观察者&#xff0c;一天24h盯着你&#xff0c;一旦你不听话&…

NFT 技术在艺术领域的应用

NFT (Non-Fungible Token) 技术在艺术领域有着广泛的应用&#xff0c;为艺术家和艺术品收藏家带来了新的机遇和挑战。以下是 NFT 技术在艺术领域的一些主要应用。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 数字艺术品确权和交…

spring mvc学习

第四章 Spring MVC 第一节 Spring MVC 简介 1. Spring MVC SpringMVC是一个Java 开源框架&#xff0c; 是Spring Framework生态中的一个独立模块&#xff0c;它基于 Spring 实现了Web MVC&#xff08;数据、业务与展现&#xff09;设计模式的请求驱动类型的轻量级Web框架&am…

C#-反射

一、概念 反射&#xff08;Reflection&#xff09;在C#中是一种非常重要的特性&#xff0c;它为开发者提供了在运行时获取和操作关于类型、成员、属性、方法等的详细信息的能力。通过反射&#xff0c;开发者可以在程序运行期间动态地创建对象、调用方法、设置属性值以及进行其…

【免费数字孪生平台】零代码制作智慧农业蔬菜大棚可视化

一&#xff0e;智慧农业的价值 智慧农业&#xff0c;作为农业中的智慧经济形态&#xff0c;是现代科学技术与农业种植深度融合的产物。它通过将物联网、云计算、大数据、人工智能等现代信息技术集成应用于农业生产中&#xff0c;实现了农业生产的无人化、自动化和智能化管理。…

考CISP,不要踩坑的几点建议

当你立志要在信息安全领域闯出一片天&#xff0c;可能多少都会听行内人说&#xff0c;搞本CISP。但这个认证究竟该怎么拿&#xff1f;需要培训吗&#xff1f;培训又是怎么一回事&#xff1f;价格如何&#xff1f;还有&#xff0c;什么时候开始准备最好&#xff1f;这些问题可能…

为什么看起来很低智商的广告比高大上的广告转化效果更好?

大家在刷抖音的时候&#xff0c;是不是总能刷到一些看起来很低质、很尴尬的广告&#xff0c;或者说是一些毫无吸引力的小说剧情&#xff1f;这些广告和内容让人忍不住怀疑&#xff0c;为什么这么低级的广告竟然会有人点击&#xff1f;其实&#xff0c;这背后有着深刻的营销策略…

BJT的结构(晶体管电压/电流+β+晶体管特性曲线/截止与饱和+直流负载线(Q点))+单片机数码管基础

2024-7-8&#xff0c;星期一&#xff0c;20:23&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。今天没有什么特殊的事情发生&#xff0c;周末休息了两天&#xff0c;周一回来继续学习啦&#xff0c;加油加油&#xff01;&#xff01;&#xff01; 今日完成模电…

HAProxy安装配置详解

HAProxy是一个使用C语言编写的自由及开放源代码软件&#xff0c;其提供高可用性、负载均衡&#xff0c;以及基于TCP和HTTP的应用程序代理。   HAProxy特别适用于那些负载特大的web站点&#xff0c;这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上&#xf…

珍藏多年的计算机内核结构大全笔记,掌握计算机工作原理真不难

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

大模型面试笔试常见问题汇总(精心准备)

1 GPT和Bert的区别? 1.模型结构和训练方式 BERT通过掩码语言模型(Masked Language Model, MLM)和下一句预测(Next Sentence Prediction, NSP)任务进行训练: 掩码语言模型(MLM):在输入序列中,BERT随机掩盖一些词语,并要求模型预测这些被掩盖的词语。这使得BERT能够学…

TCP的p2p网络模式

TCP的p2p网络模式 1、tcp连接的状态有以下11种 CLOSED&#xff1a;关闭状态LISTEN&#xff1a;服务端状态&#xff0c;等待客户端发起连接请求SYN_SENT&#xff1a;客户端已发送同步连接请求&#xff0c;等待服务端相应SYN_RECEIVED&#xff1a;服务器收到客户端的SYN请请求&…

214.贪心算法:K次取反后最大化的数组和(力扣)

class Solution { public:int largestSumAfterKNegations(vector<int>& nums, int k) {int sum 0;// 进行k次取反操作while (k > 0){// 对数组进行排序sort(nums.begin(), nums.end());// 将最小的元素取反nums[0] -nums[0];// 减少k的值k--;}// 计算数组的总和…

学习数据库2

在数据库中创建一个表student&#xff0c;用于存储学生信息 查看建表结果 向student表中添加一条新记录 记录中id字段的值为1&#xff0c;name字段的值为"monkey"&#xff0c;grade字段的值为98.5 并查看结果 向student表中添加多条新记录 2,"bob"…

水利水库大坝结构安全自动化监测主要测哪些内容?

在大坝安全自动化监测系统建设中&#xff0c;应根据坝型、坝体结构和地质条件等因素选定监测项目&#xff1b;主要监测对象包括坝体、坝基及有关的各种主要水工建筑物、大坝附近的不稳定岸坡和大坝周边的气象环境。深圳安锐科技建议参考下列表格适当调整。 &#xff08;一&am…

预训练对齐:数学理论到工程实践的桥梁

在人工智能和机器学习领域&#xff0c;预训练模型的对齐是一个至关重要的概念。本篇博客源自听了一场黄民烈老师关于大模型对齐的分享&#xff0c;整理内容如下&#xff0c;供大家参考。 数学理论中的预训练对齐 数学理论上&#xff0c;预训练对齐是什么&#xff1f; 序列…

比赛获奖的武林秘籍:04 电子类比赛嵌入式开发快速必看的上手指南

比赛获奖的武林秘籍&#xff1a;04 电子类比赛嵌入式开发快速必看的上手指南 摘要 本文主要介绍了电子类比赛中负责嵌入式开发同学的上手比赛的步骤、开发项目的流程和具体需要学习的内容&#xff0c;并结合自身比赛经历给出了相关建议。 正文 如何开始上手做自己第一个项目…

STM32中的DMA:解锁高效数据传输的秘密武器(内附实例)

目录 引言 理解DMA&#xff1a;数据的高效搬运工 DMA的主要特性 多优先级请求 事件标志 数据对齐 多样化的数据传输路径 广泛的数据源与目标 最大数据长度 DMA寄存器详解 增量与循环模式 DMA中断机制 ​编辑 小实验&#xff1a;DMA-ADC串口发送 引言 在现代嵌入…