当前位置: 首页 > news >正文

openGauss数据库-头歌实验1-4 数据库及表的创建

一、创建数据库

(一)任务描述

本关任务:创建指定数据库。

(二)相关知识

数据库其实就是可以存放大量数据的仓库,学习数据库我们就从创建一个数据库开始吧。

为了完成本关任务,你需要掌握:
1.OpenGauss 数据库逻辑结构图
1.OpenGauss 数据库的特征;
2.如何连接数据库;
3.如何创建数据库。

(三)数据库逻辑结构图

openGauss 的数据库节点负责存储数据,其存储介质也是磁盘,下面主要从逻辑视角介绍数据库节点都有哪些对象,以及这些对象之间的关系。数据库逻辑结构如下图。

说明:

1.Tablespace,即表空间,是一个目录,可以存在多个,里面存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。
2.Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace上。
3.Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。
4.Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。
5.Block,即数据块,是数据库管理的基本单位,默认大小为8KB。

(四)OpenGauss数据库的特征

以下是 OpenGauss 数据库特征:

1.用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库;
2.openGauss 默认包含两个模板数据库 template0、template1,以及一个默认的用户数据库 postgres。如图所示:

3.用户创建数据库时实际上就是通过拷贝模板数据库(默认 template1)来创建新的数据库,同时,要避免使用客户端或其他手段连接及操作两个模板数据库;
4.openGauss 允许创建的数据库总数目上限为 128 个。数据库系统中会有多个数据库,但是客户端程序一次只能连接一个数据库。也不能在不同的数据库之间相互查询。

(五)如何连接数据库

gsql 是 openGauss 提供的在命令行下运行的数据库连接工具。平台连接数据库的语句如下:

 gsql -d postgres -U gaussdb -W'passwd123@123';


其中 -d 参数代表数据库,-U 参数代表用户名,-W 参数代表密码;
连接成功后,系统会显示“DBNAME=>”。


退出连接使用以下语句:

postgres=> \q


openGauss 常用操作语句:

切换数据库:

\c test 


上述语句代表从当前数据库切换到test数据库。

查看数据库列表:

\l


查看表列表及表信息:

\d

(六)如何创建数据库

创建数据库:

创建一个新的数据库。缺省情况下新数据库将通过复制标准系统数据库 template0来创建,且仅支持使用 template0 来创建。另外需要注意的是,在创建数据库过程中,若出现类似“could not initialize database directory”的错误提示,可能是由于文件系统上数据目录的权限不足或磁盘满等原因引起。

创库语法格式:

CREATE DATABASE database_name[ [ WITH ] { [ OWNER [=] user_name ] |[ TEMPLATE [=] template ] |[ ENCODING [=] encoding ] |[ LC_COLLATE [=] lc_collate ] |[ LC_CTYPE [=] lc_ctype ] |[ DBCOMPATIBILITY [=] compatibilty_type ] |[ TABLESPACE [=] tablespace_name ] |[ CONNECTION LIMIT [=] connlimit ]}[...] ];     

         
上述建表语句中,OWNER 参数可用于指定表的所属用户,TEMPLATE 参数可用于指定模板数据库,ENCODING 参数可用于编码格式,TABLESPACE 参数可用于指定表空间。

创建数据库示例:

--创建一个GBK编码的数据库music(本地环境的编码格式必须也为GBK)。
postgres=# CREATE DATABASE music ENCODING 'GBK' template = template0;
--创建数据库music2,并指定所有者为jim。
postgres=# CREATE DATABASE music2 OWNER jim;
--用模板template0创建数据库music3,并指定所有者为jim。
postgres=# CREATE DATABASE music3 OWNER jim TEMPLATE template0;

(七)编程要求

在右侧命令行中连接 openGauss,并创建一个名为 mydb 的数据库。

连接数据库的用户名为:gaussdb,密码为:passwd123@123。

(八)编程实现

二、创建表

(一)任务描述

本关任务:在数据库中创建一个表。

(二)相关知识

我们知道数据库就是存储数据的地方,那数据库中的数据到底存放在哪里呢?数据库中的数据是存放在一张一张的表中的。
你可以想象数据库就像一个文件夹,而表你可以理解为一个excel表格,其实他们本来就挺像。

那要完成本关任务,你需要掌握:如何在指定数据库中创建表。

如何在指定数据库中创建表

我们先来了解一下在数据库中创建表的规则:

CREATE TABLE 表名
(字段名,数据类型,字段名,数据类型,.....
) 


首先创建数据库,如下:

create database mydb; 


然后选择数据库:

\c mydb; 


最后创建 tb1 表:

CREATE TABLE tb1
(c_sk             integer,c_id             char(5),c_name              char(6),c_sex               char(8)
);


上述建表语句中, c_sk 、c_id、c_name 和 c_sex 代表表的字段名,integer、char(5)、char(6) 和 char(8) 分别是这四字段名称的数据类型。

当结果显示如下信息时,表示表创建成功:

 CREATE TABLE


也可以输入 \d 命令查看数据库下的表列表;

\d+ 可以查看表的具体信息。

(三)编程要求

在右侧命令行中操作,创建数据库 testdb,在 testdb 下创建表 t_emp,表结构如下:

(四)编程实现

 

三、使用主键约束

(一)任务描述

本关任务:创建表并且添加主键约束。

(二)相关知识

主键,是表中一列或者多列的组合,主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一的标识表中的每一条记录,可以结合外键来定义与不同数据表之间的关系。
怎么理解主键呢?我们知道数据库中的表可以存放很多数据,如果把表中的每一个数据比作一个人的话,那么表的主键就可以看做是人的身份证。

为了完成本关任务,你需要掌握:怎么给表中的字段添加主键约束。

(三)添加主键约束

有两种方式可以添加主键约束:
1.在定义列的同时指定主键;
2.在定义完字段之后再指定主键。

(1) 在定义列的同时指定主键:

CREATE TABLE tb1(id int PRIMARY KEY,name varchar(32),deptId int,salary float
); 


指定 id 列为主键。

(2) 在定义完所有列之后指定主键。

CREATE TABLE tb1(id int ,name varchar(32),deptId int,salary float,PRIMARY KEY(id)
); 

(3)多字段联合主键

在开发中还有一种情况很常见,就是将几个字段联合在一起作为主键,那这个在代码中怎么实现呢?
举个例子,我们将员工的名字和部门 ID 联合起来作为主键:

CREATE TABLE tb1(id int ,name varchar(32),deptId int,salary float,PRIMARY KEY(id,name)
);  


语句执行后,会将name和id字段组合成为表tb1的多字段组合主键。

(四)编程要求

在数据库MyDb中,创建两张表t_user1,t_user2,表结构如下,请为两张表分别创建主键约束,t_user1的主键为userId,t_user2的主键为联合主键,将字段name和phone作为t_user2的联合主键。

表t_user1

表t_user2

(五)编程实现

四、添加常见约束 

(一)任务描述

本关任务:编写一个能计算数组平均值和最大值的小程序。

(二)相关知识

在数据库的使用过程中我们经常要限制字段的取值,比如有些字我们不能让它为空,我们就需要添加非空约束,本关我们就来学习如何添加这些常用的约束。

为了完成本关任务,你需要掌握:
1.怎么添加唯一约束;
2.怎么添加非空约束;
3.怎么添加默认约束;
4.怎么设置字段的值自动增加。

怎么添加唯一约束

唯一约束(Unique Constraint)要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。

定义部门表的部门名称唯一,SQL语句如下:关键词 UNIQUE。

 CREATE TABLE t_dept(id INT PRIMARY KEY,name VARCHAR(22) UNIQUE,location VARCHAR(50)
);

怎么添加非空约束

关键词:NOT NULL;

例如:

CREATE TABLE t_dept(id INT PRIMARY KEY,name VARCHAR(22) NOT NULL,location VARCHAR(50)
); 

怎么使用默认约束

默认约束:即给字段一个默认值。
关键词:DEFAULT;

例如:

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


注意:

如果是添加字符串型默认值要使用单引号,如果是整型则不需要加任何符号;

设置表的属性值自动增加

在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:


关键词:serial,默认情况下初始值和增量都为1。

例如:

CREATE TABLE T1
(id    serial,name  text,primary key(id)); 

(三)编程要求

在数据库mydb中创建表t_user,表结构如下:

提示:若要给字段添加两个或者两个以上的约束,约束之间以空格隔开即可。

(四)编程实现

 

相关文章:

openGauss数据库-头歌实验1-4 数据库及表的创建

一、创建数据库 (一)任务描述 本关任务:创建指定数据库。 (二)相关知识 数据库其实就是可以存放大量数据的仓库,学习数据库我们就从创建一个数据库开始吧。 为了完成本关任务,你需要掌握&a…...

吉利极氪汽车嵌入式面试题及参考答案

inline 的作用 inline 是 C++ 中的一个关键字。它主要用于函数,目的是建议编译器将函数体插入到调用该函数的地方,而不是像普通函数调用那样进行跳转。 从性能角度来看,当一个函数被标记为 inline 后,在编译阶段,编译器可能会将函数的代码直接复制到调用它的位置。这样做…...

pycharm中的服务是什么?

在PyCharm中,服务是指允许在PyCharm中运行的一种功能或插件。服务可以是内置的,也可以是通过插件安装的。 一些常见的PyCharm服务包括: 调试服务:PyCharm提供了全功能的调试工具,可以帮助开发人员通过设置断点、监视变…...

[Unity Demo]从零开始制作空洞骑士Hollow Knight第十七集:制作第二个BOSS燥郁的毛里克

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、制作游戏第二个BOSS燥郁的毛里克 1.导入素材和制作相关动画1.5处理玩家受到战吼相关行为逻辑处理2.制作相应的行为控制和生命系统管理3.制作战斗场景和战斗…...

深度解析阿里的Sentinel

1、前言 这是《Spring Cloud 进阶》专栏的第五篇文章,这篇文章介绍一下阿里开源的流量防卫兵Sentinel,一款非常优秀的开源项目,经过近10年的双十一的考验,非常成熟的一款产品。 文章目录如下: 2、什么是sentinel&…...

Linux系统-日志轮询(logrotate)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 这是Linux进阶部分的最后一大章。讲完这一章以后,我们Linux进阶部分讲完以后,我们的Linux操作部分就…...

机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 随着数据采集技术的发展,时间序列数据在各个领域中的应用越来越广泛。时间序列预测旨在基于过去的时间数据来…...

白杨SEO:百度在降低个人备案类网站搜索关键词排名和流量?怎样应对?【参考】

很久没有写百度或者网站这块内容了,一是因为做百度网站朋友越来越少,不管是个人还是企业;二是百度上用户搜索与百度给到网站的流量都越来越少。 为什么想到今天又来写这个呢?因为上个月有个朋友来咨询我说网站百度排名全没了&…...

前端实现json动画(附带示例)

前端实现json动画(附带示例) 使用lottie制作动画。1.json动画2.实现效果3.git仓库4.运行5.json动画天堂6.代码7. 经常使用的方法 使用lottie制作动画。 1.json动画 废话不多说,直接看效果图2.实现效果 3.git仓库 https://gitee.com/chaiach…...

AI 写作(一):开启创作新纪元(1/10)

一、AI 写作:重塑创作格局 在当今数字化高速发展的时代,AI 写作正以惊人的速度重塑着创作格局。AI 写作在现代社会中占据着举足轻重的地位,发挥着不可替代的作用。 随着信息的爆炸式增长,人们对于内容的需求日益旺盛。AI 写作能够…...

C#-类:索引器

索引器作用:可以让我们以中括号的形式访问自定义类中的元素。 规则自己定,访问时和数组一样 适用于,在类中有数组变量时使用,可以方便的访问、进行逻辑处理 可以重载,结构体也支持索引器 一:索引器的语法…...

Neo4j Cypher WHERE子句详解 - 初学者指南

Neo4j Cypher WHERE子句详解 - 初学者指南 前言1. WHERE子句基础1.1 WHERE子句的本质1.2 示例数据 2. 基本用法2.1 节点属性过滤2.2 关系属性过滤 3. 高级过滤技巧3.1 字符串匹配3.2 正则表达式3.3 属性存在性检查 4. 列表和范围操作4.1 IN操作符4.2 范围查询 5. 空值处理5.1 默…...

【CSS】标准怪异盒模型

概念 CSS 盒模型本质上是一个盒子,盒子包裹着HTML 元素,盒子由四个属性组成,从内到外分别是:content 内容、padding 内填充、border 边框、外边距 margin 盒模型的分类 W3C 盒子模型(标准盒模型) IE 盒子模型(怪异盒模型) 两种…...

栈详解

目录 栈栈的概念及结构栈的实现数组栈的实现数组栈功能的实现栈的初始化void STInit(ST* pst)初始化情况一初始化情况二 代码栈的插入void STPush(ST* pst, STDataType x)代码 栈的删除void STPop(ST* pst)代码 栈获取数据STDataType STTop(ST* pst)代码 判断栈是否为空bool ST…...

硬盘 <-> CPU, CPU <-> GPU 数据传输速度

1. 硬盘 <-> CPU 数据传输速度 import time import os# 定义文件大小和测试文件路径 file_size 1 * 1024 * 1024 * 100 # 100 MB 的文件大小 file_path "test_file.bin"# 创建一个测试文件并测量写入速度 def test_write_speed():data os.urandom(file_si…...

数据编排与ETL有什么关系?

数据编排作为近期比较有热度的一个话题&#xff0c;讨论度比较高&#xff0c;同时数据编排的出现也暗示着数字化进程的自动化发展。在谈及数据编排时&#xff0c;通常也会谈到ETL&#xff0c;这两个东西有相似点也有不同点。 数据编排和ETL&#xff08;提取、转换、加载&#x…...

来了解一下!!!——React

React 是一个用于构建用户界面的 JavaScript 库&#xff0c;特别适合用于创建单页面应用程序&#xff08;SPA&#xff09;。它由 Facebook 维护&#xff0c;并且拥有一个活跃的社区&#xff0c;这使得 React 成为了目前最流行的前端框架之一。以下是关于 React 的一些重要信息和…...

用vite创建项目

一. vite vue2 1. 全局安装 create-vite npm install -g create-vite 2. 创建项目 进入你想要创建项目的文件夹下 打开 CMD 用 JavaScript create-vite my-vue2-project --template vue 若用 TypeScript 则 create-vite my-vue2-project --template vue-ts 这里的 …...

json-server的使用(根据json数据一键生成接口)

一.使用目的 在前端开发初期&#xff0c;后端 API 可能还未完成&#xff0c;json-server 可以快速创建模拟的 RESTful API&#xff0c;帮助前端开发者进行开发和测试。 二.安装 npm install json-server //局部安装npm i json-server -g //全局安装 三.使用教程 1.准备一…...

半波正弦信号的FFT变换

目录 Hello&#xff0c; 大家好&#xff0c;这一期我们谈谈半波正弦信号的FFT变化长什么样子。本文硬件使用GFARM02硬件模块[1]&#xff0c;文章最后有其淘宝链接。核心器件为STM32F103RCT6&#xff0c;为Cortex-M3核&#xff0c;采用的CMSIS版本为CMSIS_5-5.6.0。 如图1所示&…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...