openGauss数据库-头歌实验1-5 修改数据库

news2024/11/24 15:41:11

一、查看表结构与修改表名

(一)任务描述

本关任务:修改表名,并能顺利查询到修改后表的结构。

(二)相关知识

为了完成本关任务,你需要掌握:
1.如何查看表的结构;
2.如何修改表的名称。

(三)查看数据表基本结构

有强迫症或健忘症的小伙伴们在建好数据库和表以后,通常会怀疑自己刚才是不是敲错了,怎么办?如果不是使用图形界面是不是就没法查看啦?

不存在的,这就告诉你查看口令:\d+
语法规则为:\d+ 表名;

比如本岛主新建了一个名叫t_emp22的表,结构如下:

  CREATE TABLE t_emp22(
    id INT PRIMARY KEY,
    id1 INT DEFAULT 2,
    name VARCHAR(22),
    sex VARCHAR(2) DEFAULT '男'
) ;


现在来看看“现场”,用\d+查表的结构是这样的。

 postgres=> \d+ t_emp22;
                                          Table "gaussdb.t_emp22"
 Column |         Type          |            Modifiers             | Storage  |
 Stats target | Description 
--------+-----------------------+----------------------------------+----------+
--------------+-------------
 id     | integer               | not null                         | plain    |
              | 
 id1    | integer               | default 2                        | plain    |
              | 
 name   | character varying(22) |                                  | extended |
              | 
 sex    | character varying(2)  | default '男'::character varying | extended |   
           | 
Indexes:
    "t_emp22_pkey" PRIMARY KEY, btree (id) TABLESPACE pg_default
Has OIDs: no
Options: orientation=row, compression=no


\d+ 可以查看表的字段信息,包括:字段名、字段数据类型、是否为主键、是否有默认值等。

(四)修改表名

随着表越来越多,有时候你会后悔之前的数据表的名字根本没有认真斟酌过,想要重新命名一下,可以做到吗?

答案是:可以!OpenGauss 是通过 ALTER TABLE 语句来修改表名的。

语法规则为: 

ALTER TABLE 旧表名 RENAME to 新表名; 


举个例子,我们先用 \d 看看我们的数据库中有什么表吧。

3b56ca2adb0144b2bc364fe4c74a2906.png

接下来,我们使用 ALTER TABLE 将 t_emp 改名 为 testtb。

ALTER TABLE t_emp RENAME TO testtb; 

db9280fd1b3f4adba8384d4afaa76012.png

改名成功!t_emp 成功变成了 testtb。

接下来你们可以自行体验一下了!

(五)编程要求

根据提示,在右侧编辑器补充代码:

把数据表 tb_emp 改名为jd_emp;

查看该数据库下数据表的列表;

(六)编程实现

56bf670aadd64ccfa63818c1e44dfc50.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、修改字段数据类型

(一)任务描述

本关任务:修改已有字段的数据类型。

(二)相关知识

为了完成本关任务,你需要掌握如何修改字段的数据类型。

(三)修改字段类型

有时,在我们建好一张表后会突然发现,哎呀!数据貌似写错了!怎么办?要删了表再重新建一个新表吗?还是要删了这个字段再新建一个新的字段?
都不用,OpenGauss 中修改字段类型也有专门的语句。

语法规则为:  

ALTER TABLE 表名 ALTER column_name TYPE data_type  ; 
举个例子:
现在我们要把表 t_emp22 中的字段 name 的数据类型改名为 varchar(25)。
表t_emp22结构如下:

CREATE TABLE t_emp22(
    id INT PRIMARY KEY,
    name VARCHAR(22),
    sex VARCHAR(2) DEFAULT '男'
) ; 


输入命令:

ALTER TABLE t_emp22 ALTER name TYPE  varchar(25); 


小提示: 列存表只支持添加字段ADD COLUMN、修改字段的数据类型ALTER TYPE、设置单个字段的收集目标SET STATISTICS、支持更改表名称、支持更改表空间,支持删除字段DROP COLUMN。

(四)编程要求

根据提示,在右侧编辑器补充代码:

把数据表 tb_emp 字段 name 的数据类型改为varchar(30)。

表 tb_emp 表结构如下:4703cc6771bc4263b69e46ae5db60ccb.png
 

(五)编程实现

e1049c8f7df84672bfb24c3345b81700.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、 添加与删除字段

(一)任务描述

本关任务:在指定表添加新的字段,并删除表中的指定字段。

(二)相关知识

为了完成本关任务,你需要掌握:
1.如何往表中添加一个或者多个新的字段,
2.如何删除指定的字段。

(三)添加字段

因为甲方的业务需求是不停变化的,所以在数据库操作中,添加字段可是常有的事。一个完整的字段包括:字段名、数据类型和完整性约束。

增加单列语法规则为:

alter table table_name ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ … ] ] 

增加多列语法规则为:

 alter table  table_name ADD ( { column_name data_type [ compress_mode ] } [, …] )


其中列约束column_constraint为:

[ CONSTRAINT constraint_name ]
    { NOT NULL |
      NULL |
      CHECK ( expression ) |
      DEFAULT default_expr  |
      UNIQUE index_parameters |
      PRIMARY KEY index_parameters }
    [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ] 

常用约束含义:

NOT NULL 约束:确保某列不能有 NULL 值。

DEFAULT 约束:当某列没有指定值时,为该列提供默认值。

UNIQUE 约束:确保某列中的所有值是不同的。

PRIMARY Key 约束:唯一标识数据库表中的各行/记录。

其中列的压缩可选项compress_mode为:

 [ DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS ]


举个例子:
现在我们要在表 t_emp22 中增加字段 addr varchar(100)。
表t_emp22结构如下:

CREATE TABLE t_emp22(
    id INT PRIMARY KEY,
    name VARCHAR(22),
    sex VARCHAR(2) DEFAULT '男'
) ; 


输入命令:

ALTER TABLE t_emp22 ADD  COLUMN  addr varchar(25); 

删除字段

有添加的需求就会有删除的需求。删除一个字段就是将数据表中的某个字段从表中移除。

语法规则为: 

 ALTER TABLE table_name DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]


从表中删除一个字段,和这个字段相关的索引和表约束也会被自动删除。如果任何表之外的对象依赖于这个字段,必须声明CASCADE ,比如视图。
DROP COLUMN命令并不是物理上把字段删除,而只是简单地把它标记为对SQL操作不可见。随后对该表的插入和更新将在该字段存储一个NULL。因此,删除一个字段是很快的,但是它不会立即释放表在磁盘上的空间,因为被删除了的字段占据的空间还没有回收。这些空间将在执行VACUUM时而得到回收。

举个例子:
现在我们要把字段name从上表t_emp22中删除。

ALTER TABLE  t_emp22  DROP COLUMN IF EXISTS name

(四)编程要求

根据提示,在右侧编辑器补充代码:

在数据表 tb_emp 中添加字段 country,数据格式为 varchar(20);

删除数据表 tb_emp 中的字段 salary。

数据表结构如下:2762f42b010b400e9b6834d1c3e8f241.png

(五)编程实现

20cef2c41e414736af9c465be65b72a9.png

 

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

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

相关文章

linux 磁盘配额 quota

增加一个facl的的知识点: linux中默认的文件系统支持facl,如果是新挂载的分区,则不支持facl应用。需要在挂载文件系统时使用-o acl选项来启用facl支持。如下图显示 在/etc/fstab添加defaults,acl 1.启用磁盘配额功能:修改/etc/f…

进程和线程概念

进程 进程是系统进程资源分配和调度的一个独立单位。 进程的状态与转换 就绪 -> 阻塞 -> 执行 另外还有一个挂起操作,可将进程转入静止状态,知道激活操作,程序将恢复原有状态。 线程 线程更加轻量,作为调度和分派的基本…

三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库

官网文档:https://fastapi.tiangolo.com/zh/tutorial/sql-databases/ SQL (关系型) 数据库 FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 这里我们将看到一个使用SQLModel的示例。 SQLModel是在SQLAlchemy和Pydantic的基础…

Java 并发编程学习笔记

参考资料: JAVA并发专题 - 终有救赎的专栏 - 掘金 Java并发编程学习路线(建议收藏��) | Java程序员进阶之路x沉默王二 面试题目: JUC第一讲:Java并发知识体系详解 面试题汇总(P6熟练 P7精通…

Docker篇(基础命令)

目录 一、启动与停止 二、镜像相关的命令 1. 查看镜像 2. 搜索镜像 3. 拉取镜像 4. 删除镜像 三、容器创建与启动容器 1. 查看容器 2. 创建容器 交互式方式创建容器 守护式方式创建容器 3. 容器启动与停止 四、容器操作命令 1. 文件拷贝 2. 目录(文件…

qt QColorDialog详解

1、概述 QColorDialog是Qt框架中的一个对话框类,专门用于让用户选择颜色。它提供了一个标准的颜色选择界面,其中包括基本的颜色选择器(如调色板和颜色轮)、自定义颜色输入区域以及预定义颜色列表。QColorDialog支持RGB、HSV和十六…

算法练习:904. 水果成篮

题目链接:904. 水果成篮。 题目意思就是可以选取两个种类的水果不能超过两个种类,该种类个数没有限制, 但是一旦超过两个种类的水果就要停止计数。 示例中数组编号就是就是种类,就是不能出现三个不同编号的数。 1.暴力解法&…

JAVA WEB — HTML CSS 入门学习

本文为JAVAWEB 关于HTML 的基础学习 一 概述 HTML 超文本标记语言 超文本 超越文本的限制 比普通文本更强大 除了文字信息 还可以存储图片 音频 视频等标记语言 由标签构成的语言HTML标签都是预定义的 HTML直接在浏览器中运行 在浏览器解析 CSS 是一种用来表现HTML或XML等文…

深度学习:卷积神经网络中的im2col

im2col 是一种在卷积神经网络(CNN)中常用的技术,用于将输入图像数据转换为适合卷积操作的矩阵形式。通过这种转换,卷积操作可以被高效地实现为矩阵乘法,从而加速计算。 在传统的卷积操作中,卷积核&#xff…

【论文阅读】Associative Alignment for Few-shot Image Classification

用于小样本图像分类的关联对齐 引用:Afrasiyabi A, Lalonde J F, Gagn C. Associative alignment for few-shot image classification[C]//Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part V 16. Spri…

HCIP-HarmonyOS Application Developer V1.0 笔记(五)

弹窗功能 prompt模块来调用系统弹窗API进行弹窗制作。 当前支持3种弹窗API,分别为: 文本弹窗,prompt.showToast;对话框,prompt.showDialog;操作菜单,prompt.showActionMenu。 要使用弹窗功能&…

【办公类-04-04】华为助手导出照片视频分类(根据图片、视频的文件名日期导入“年-月-日”文件夹中,并转移到“年-月”文件中整理、转移到“年”文件夹中整理)

背景需求 最近带班,没有时间整理照片,偶尔导一次,几个月的照片。发现用电脑版“华为手机助手“中的WLAN连接”与华为手机的“华为手机助手”连接,速度更快、更稳定,不会出现数据线连接时碰碰就断网的问题 1、先打开电…

人工智能技术:未来生活的“魔法师”

想象一下,未来的某一天,你醒来时,智能助手已经为你准备好了早餐,你的智能家居系统根据你的心情和日程安排调整了室内的光线和音乐,而你的自动驾驶汽车已经在门口等你。这不是科幻小说,这是人工智能技术为我…

Golang | Leetcode Golang题解之第538题把二叉搜索树转换为累加树

题目: 题解: func getSuccessor(node *TreeNode) *TreeNode {succ : node.Rightfor succ.Left ! nil && succ.Left ! node {succ succ.Left}return succ }func convertBST(root *TreeNode) *TreeNode {sum : 0node : rootfor node ! nil {if n…

信号带宽和上升沿的关系:【图文讲解】

目录 1:什么是信号带宽 2:带宽计算公式 3:实际应用 这里讨论的信号,是指数字信号,默认为方波信号。 方波是一种非正弦曲线的波形,具有明确的“高”和“低”两个电平值,且占空比(…

大数据新视界 -- 大数据大厂之 Impala 性能优化:从数据压缩到分析加速(下)(8/30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

SpringAI QuickStart

Spring AI 官方文档:Spring AI Spring AI 是一个面向 AI 工程的应用框架,其目标是将 Spring 生态系统的可移植性和模块化设计等设计原则应用到AI 领域,并推动将 POJO 作为应用的构建块应用于 AI 领域。 其特点是跨 AI 供应商支持的便携式 A…

Matplotlib | 条形图中的每个条形(patch)设置标签数据的方法

方法一 不使用子图对象如何给形图中的每个条形设置数据 plt.figure(figsize(8, 4)) sns.countplot(xWorkout_Frequency (days/week), datadf)plt.title(会员每周锻炼频率分布) plt.xlabel(锻炼频率 (每周次数)) plt.ylabel(人数)# 获取当前活动的轴对象 ax plt.gca()# 循环遍…

浅析Android Handler机制实现原理

0. 背景描述 Android系统出于对简单、高效的考虑,在设计UI体系时采用了单线程模型,即不会在多个线程中对同一个UI界面执行操作。简单是指单线程模型可以不用考虑和处理在多线程环境下操作UI带来的线程安全问题,高效是指单线程模型下无需通过…