GaussDB云数据库SQL应用系列-基础使用

news2024/10/5 16:32:42

目录

一、前言

二、前提条件

1、连接数据库实例

2、GaussDB实例正常运行

三、操作示例

1、选择实例并进入SQL执行界面

2、创建数据库用户

3、创建数据库

4、创建SCHEMA

5、创建表(增删改查)

1)创建3张表,并初始化一些数据

2)假设查询场景,并通过SQL 实现

一、前言

随着云计算技术的不断发展,云数据库已经成为了企业信息化建设中不可或缺的一部分。而在众多的云数据库产品中,华为GaussDB以其卓越的性能和稳定性备受用户青睐。

GaussDB云数据库是一款具有高性能、高可用、高安全等特点。它采用了先进的存储技术和算法,可以快速处理大量的数据请求,并保证数据的一致性和可靠性。同时,GaussDB还具有丰富的应用场景。例如,在电商行业中,可以使用GaussDB来存储用户的购物记录和订单信息;在金融行业中,可以使用GaussDB来存储客户的账户信息和交易记录;在物流行业中,可以使用GaussDB来存储货物的运输信息和仓储信息等。

对于初学者来说,学习如何使用GaussDB云数据库也是一个不小的挑战。不过,华为提供了详细的官方资料,可以让用户可以轻松上手。  本次将为大家简单展示一下其CRUD的基础语句操作。   

二、前提条件

1、连接数据库实例

通过“数据管理服务DAS”连接数据库实例(其他连接方式参见往期内容)

2、GaussDB实例正常运行

输入登录密码,点击“测试连接” 显示连接成功,则表示实例正常运行。

三、操作示例

1、选择实例并进入SQL执行界面

默认只有创建实例时的管理员用户可以访问初始数据库

2、创建数据库用户

--新增用户zhangsan

CREATE USER zhangsan WITH PASSWORD "P@ssw0rd";

----新增用户lisi,等价上面的语句,如果创建有“创建数据库”权限的用户,则需要加CREATEDB关键字。

CREATE USER lisi CREATEDB IDENTIFIED BY 'P@ssw0rd';

--查看新增用户

SELECT * FROM pg_user;

 

3、创建数据库

--创建一个新的数据库

CREATE DATABASE Gauss_TEST1

创建完Gauss_TEST1数据库后,可以选择继续在默认的postgres数据库下做后续的体验。当然,也可以使用新用户连接到此数据库执行接下来的创建表等操作,需要赋予其connect的权限(如下图)。

--将数据库的create、connect权限授权给用户zhangsan

GRANT create,connect on database Gauss_TEST1 TO zhangsan

本内容将切换新用户完成后续实验

4、创建SCHEMA

创建SCHEMA:

--创建SCHEMA,为用户zhangsan创建一个同名schema,子命令创建的表S、C、SC的拥有者为zhangsan。

CREATE SCHEMA zhangsan;

5、创建表(增删改查)

1)创建3张表,并初始化一些数据

创建表学生表:

--学生表,Students(SNO, SNAME)代表 (学号,姓名)

drop table students;

create table students(

    sno    INTEGER     NOT NULL,

    sname  varchar(32)

);

插入数据:

--插入数据

insert into students(sno,sname) VALUES (1001,'张三');

insert into students(sno,sname) VALUES (1002,'李四');

insert into students(sno,sname) VALUES (1003,'王五');

insert into students(sno,sname) VALUES (1004,'赵六');

--查看结果

select * from  students;

 

创建课程表:

--课程表,course(CNO, CNAME, CTEACHER) 代表(课号, 课名, 教师)

create table if  not exists course(

    cno      INTEGER     NOT NULL,

    cname    varchar(32),

    cteacher varchar(32)

);

插入数据

--插入数据,

insert into course(cno,cname,cteacher)values(1,'数据库','张老师');

insert into course(cno,cname,cteacher)values(2,'操作系统','李老师');

insert into course(cno,cname,cteacher)values(3,'数据结构','王老师');

insert into course(cno,cname,cteacher)values(4,'python','赵老师');

--查看结果

select * from course;

 

创建学生成绩表:

--学生成绩表,SC(SNO, CNO, SCGRADE) 代表(学号, 课号, 成绩)

drop table sc;

create table sc(

    sno      INTEGER     NOT NULL,

    cno      INTEGER     NOT NULL,

    scgrade  DECIMAL(3,1)

);

插入数据

--插入数据

insert into sc(sno,cno,scgrade)values(1001,1,98);

insert into sc(sno,cno,scgrade)values(1001,2,90);

insert into sc(sno,cno,scgrade)values(1002,3,95);

insert into sc(sno,cno,scgrade)values(1002,4,88);

insert into sc(sno,cno,scgrade)values(1003,1,97);  

insert into sc(sno,cno,scgrade)values(1004,4,99);

--查看结果

select * from sc;

 

2)假设查询场景,并通过SQL 实现

示例1:所有参加"数据库"课程考试的同学成绩登记错误, 现需要每人增加1分

--所有参加"数据库"课程考试的同学成绩登记错误, 每人增加1分。

update sc set scgrade= scgrade+1

where cno in (select cno from course where cname ='数据库')

--查看更新结果

select *

  from  SC

 where cno in (select cno from course where cname ='数据库')

 

示例2:获取拥有1门课程以上考试成绩的学生信息

--获取拥有1门课程以上考试成绩的学生信息(学号、姓名、课程号、课程名称、考试成绩)

select  t2.sno

       ,t3.sname

       ,t4.cno

       ,t5.cname

       ,t4.scgrade      

 from

  (select * from

    (select sno

           ,cno

           ,ROW_NUMBER() OVER(PARTITION BY sno ) as num1

       FROM SC) t1

      WHERE  t1.num1>1) t2

left join students t3

on t2.sno=t3.sno

left join sc t4

on t2.sno=t4.sno

left join course t5

on t4.cno=t5.cno

order by sno

 

示例补充:上述SQL语句中用到子查询in 、窗口函数row_number()、用到左连接left join 。

  • IN: 子查询(Subquery)是指在一个查询语句中嵌套另一个查询语句,并将该查询语句的结果作为主查询语句的条件或结果之一。在SQL中,子查询通常使用IN关键字来实现。IN关键字用于指定一个值列表,它可以被用来匹配主查询中的某个列的值。
  • ROW_NUMBER:为各组内值生成连续排序序号,其中,相同的值其序号也不相同
  • Left join :两张表关联, 以左表为主表,用于从两个或多个表中获取数据。它的作用是返回左表中的所有行,同时返回与右表匹配的行。如果右表中没有与左表匹配的行,则返回NULL值。

——结束。

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

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

相关文章

Revit技巧 | 楼梯总画不好?原来是这些技巧你没有掌握

Revit技巧 | 楼梯总画不好?原来是这些技巧你没有掌握 楼梯在我们BIM考试中是重点和难点,根据我们对历年考考题的分析,楼梯部分涉及到的考点为: 栏杆扶手样式的设置; 楼梯踏步数的设置; 楼梯踏板宽度的设…

Adapt Learning使用教程(Adapt Framework/Adapt Authoring)(二)

此文章在上一章的环境配置下操作的,如果还没配置参考我的上一篇文章:Adapt Learning使用教程(Adapt Framework/Adapt Authoring)(一) 。环境配置好了之后,就该从GitHub上拉取代码啦&#xff0c…

如何入门Python——学习Python的指南针

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【JOSEF约瑟 应用于输配电路、变压器 JDP-1004双位置继电器 端子排】

名称:双位置继电器;品牌:JOSEF约瑟;型号:JDP-1440;触点容量:250V2A;功率消耗:≤5W;额定电压:220V/110V;外形尺寸:868573特…

LeetCode——矩阵中移动的最大次数

目录 1、题目 2、题目解读 3、代码 1、题目 2684. 矩阵中移动的最大次数 - 力扣(Leetcode) 给你一个下标从 0 开始、大小为 m x n 的矩阵 grid ,矩阵由若干 正 整数组成。 你可以从矩阵第一列中的 任一 单元格出发,按以下方式遍…

面了一个00后测试工程师,问啥啥不会开口就要15k,我也是麻了····

在深圳这家金融公司也待了几年,被别人面试过也面试过别人,大大小小的事情也见识不少,今天又是团面的一天, 一百多个人都聚集在一起,因为公司最近在谈项目出来面试就2个人,无奈又被叫到面试房间。 整个过程我…

一体化医学影像平台PACS源码,影像存档与传输系统源码

PACS影像存档与传输系统源码 PACS即影像存档与传输系统,是医学影像、数字化图像技术、计算机技术和网络通讯技术相结合的产物,是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。 是基于DICOM标准的医学影像管理系统&…

分布式锁-Redis

一、为什么要有锁的概念 1.假如现在我们有这么一个场景: 用户在淘宝app上购买商品,用户提交订单的时候提交了,多点击了几次。 不管用户点击几次,只要用户一直停留在一个页面,那么就必须生成一个订单。 1.1 如果我们的服务是单体服务的话 比如现在我们的…

单片机中GPIO八种工作模式详细分析

今天给大家讲解一下 GPIO 基础,参考资料: STM32F1xx 官方资料: 《STM32中文参考手册V10》-第8章通用和复用功能IO(GPIO和AFIO) GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接&#xff…

2023护网蓝初面试题汇总

一、描述外网打点的流程? 二、举几个 FOFA 在外网打点过程中的使用小技巧? 三、如何识别 CND ? 四、邮件钓鱼的准备工作有哪些? 五、判断出靶标的 CMS ,对外网打点有什么意义? 六、 Apache Log4j2…

云原生之深入解析Kubernetes常见的多集群方案

一、前言 Kubernetes 从 1.8 版本起就声称单集群最多可支持 5000 个节点和 15 万个 Pod,实际上应该很少有公司会部署如此庞大的一个单集群,很多情况下因为各种各样的原因我们可能会部署多个集群,但是又想将它们统一起来管理,这时…

QT圆形进度条(QT桌面项目光照强度检测)

文章目录 前言一、编程思路二、核心代码实现总结 前言 本篇文章我们讲解QT实现圆形进度条,并实现动态的效果。 一、编程思路 实现QT圆形进度条其实是非常简单的,思路就是画两个圆弧。 这里大家就会觉得很奇怪了为什么画两个圆弧就能实现圆形进度条了呢…

极智AI | AIGC时代中AI巨头之间的博弈

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来谈谈 AIGC时代AI巨头之间的博弈。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 下图是开复老师在 《AI 未来》演讲中一页…

举办各种活动可以选云仓酒庄的雷盛红酒205

初次品尝红酒的人,可能跟初次品茶一样,这种酸涩的味道为什么会吸引这么多人魂牵梦绕。就像初生的婴儿,只有啼哭着面对世界,不解的望着新世界,只有时间的沉淀,实践的积累才会慢慢懂得,品酒也是这…

[Nacos] Nacos Server处理注册请求 (六)

文章目录 InstanceController.register()1.获取到请求中指定属性的值2.通过请求参数组装出instance3.将instance写入到注册表3.1 创建一个空的service临时的实例3.1.1 重写计算校验和3.1.2 将service写入到注册表3.1.2.1 将service写入注册表3.1.2.2 初始化service内部健康检测…

软考数据库详细知识点整理(全)

目录 第一章 计算机系统基本知识 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构 1.3 可靠性、性能、安全 …

MySQL数据库---笔记3

MySQL数据库---笔记3 一、储存引擎1.1、MySQL体系结构1.2、存储引擎简介1.3、存储引擎特点1.3、存储引擎选择 二、索引 一、储存引擎 1.1、MySQL体系结构 MySQL体系结构图 连接层 最上层是一些客户端和链接服务,主要完成一些类似于连接处理、授权认证、及相关的安…

MySQL索引优化实战EXPLAIN解析

先来介绍一下具体的业务场景 当用户登录后,需要查看能够学习的课程,不同的用户看到的课程是不同的,课程存在权限,权限是被下面lesson_user_permissions表控制的,其中sys_user_id 和 lesson_id 作为联合主键 另外还有一…

Prompt Engineering | 对话聊天prompt

😄 使用LLM来搭建一个定制的聊天机器人,只需要很少的工作量。 ⭐ 本文将讲解如何利用聊天格式与个性化或专门针对特兹那个任务或行为的聊天机器人进行多伦对话。 文章目录 1、提供对话的早期部分,引导模型继续聊天2、示例:构建一个…

基于ZeroTier虚拟网络搭建分流策略及创建IPv6网络

假设无数个成员(移动设备、终端、Docker),需要劫持所有请求,并根据它们请求所访问的域名解析出IPv6或者IPv4地址来进行有效的选择性访问 说的直白一点点就是:分流策略 这里例一下需要做的工作,来看一下&am…