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

news2024/11/26 16:47:12

一、创建数据库

(一)任务描述

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

(二)相关知识

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

为了完成本关任务,你需要掌握:
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,表结构如下:

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

(四)编程实现

 

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

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

相关文章

Android TextView自动换行文本显示不全解决

某些情况下,TextView自动换行后,会出现每行结尾处显示不全的问题, 如图: 常见解决方案: 设置TextView的“ellipsize”属性为“end” 实测无效!将TextView外部的Layout改为RelativeLayout 实测无效&…

华为 HarmonyOS NEXT 原生应用开发: 动画的基础使用(属性、显示、专场)动画

2024年11月5日 LiuJinTao 文章目录 鸿蒙中动画的使用一、属性动画 - animation属性动画代码示例 二、显示动画 - AnimateTo三、专场动画 鸿蒙中动画的使用 一、属性动画 - animation 属性动画代码示例 /*** 属性动画的演示*/ Entry Component struct Index {State selfWidth:…

信号与噪声分析——第三节:随机过程的统计特征

随机过程的定义: 随机过程是一种数学模型,用来描述系统或现象在时间或者空间上随之变化的不确定性。 一个随机过程的数字特征 1.数学期望(统计平均值): 表示为 数学期望是随机过程在时间 t 上的平均值,通常…

Linux SSH免密登入以及配置脚本

一、ssh原理简单介绍 客户端生成一对公钥和私钥,并将自己的公钥发送到服务器上 其中公钥用来加密,私钥用来解密。 二、ssh免密登入实现步骤详解 我这就以服务器controller和客户端compute来做为例子 2.1、首先在controller上输入ssh-keygen -t rsa …

搜维尔科技:Manus VR数据手套-机器人手部数据采集,推动机器人技术新高度

人工智能机器人培训-构建集成 将实时数据直接传输到ROS并开始控制你的机器人。使用我们的 C Windows 和Linux SDK开发集成,以用于自定义管道。 原始数据:推动机器学习和机器人技术 以CSV格式记录并导出手指运动作为原始数据。为机器学习和机器人应用提…

将HTML项目上传至Gitee仓库(详细教程)

1.登录giett giett地址链接:Gitee - 基于 Git 的代码托管和研发协作平台 2.新建一个giett仓库 创建后得到远程仓库: 3、在本地项目文件夹右击鼠标点击 Open Git Bash Here 4、输入命令 命令:git init,这个目录变成git可以管理的仓库,会出…

重大917该如何复习?难度大不大?重点是啥?

C哥专业提供——计软考研院校选择分析专业课备考指南规划 重大917整体难度不高,认真研究好各年真题,经过系统扎实的复习,相信同学一定能取得好的成绩! 添加图片注释,不超过 140 字(可选) 重庆…

CentOS 7 安装 ntp,自动校准系统时间

1、安装 ntp yum install ntp 安装好后,ntp 会自动注册成为服务,服务名称为 ntpd 2、查看当前 ntpd 服务的状态 systemctl status ntpd 3、启动 ntpd 服务、查看 ntpd 服务的状态 systemctl start ntpdsystemctl status ntpd 4、设置 ntpd 服务开机启…

信息安全工程师(77)常见网络安全应急事件场景与处理流程

前言 网络安全应急事件场景多样,处理流程也需根据具体情况灵活调整。以下将详述几种常见的网络安全应急事件场景及其处理流程。 一、数据泄露事件 场景描述: 数据泄露是指敏感、受保护或机密数据被未经授权的个人复制、传输、查看、窃取或使用。这种事件…

使用Django REST framework构建RESTful API

使用Django REST framework构建RESTful API Django REST framework简介 安装Django REST framework 创建Django项目 创建Django应用 配置Django项目 创建模型 迁移数据库 创建序列化器 创建视图 配置URL 配置全局URL 配置认证和权限 测试API 使用Postman测试API 分页 过滤和排序…

【保姆级教程】使用 oh-my-posh 和 clink 打造个性化 PowerShell 和 CMD

内容预览 ≧∀≦ゞ 终端美化指南—— oh-my-posh 和 clink 篇引言一、准备工作默认终端:Windows Terminal离线安装步骤 包管理器:scoop为什么选择使用 Scoop 安装?scoop 安装 字体下载 二、配置 Windows Terminal三、配置 oh-my-posh安装激活…

「Mac畅玩鸿蒙与硬件17」鸿蒙UI组件篇7 - Animation 组件基础

在应用开发中,动画效果可以增强用户体验。鸿蒙框架提供了 translate、scale 和 rotate 等动画功能,允许对组件进行平移、缩放和旋转等操作。本篇将介绍 Animation 组件的基础知识和示例代码。 关键词 Animation 组件动画效果位置动画自动动画缩放动画 一…

编写第一个 Appium 测试脚本:从安装到运行!

前言 最近接到一个测试项目,简单描述一下,需求就是:一端发送指令,另一端接受指令并处理指令。大概看了看有上百条指令,点点点岂不是废了,而且后期迭代,每次都需要点点点,想想就头大…

vue 使用docx-preview 预览替换文档内的特定变量

在开发合同管理中,需要使用到此功能,就是替换合同模板内的一些字符串,如:甲乙方名称,金额日期等,合同内容不变。效果如下: 使用docx-preview 好处是只预览不可编辑内容。 前端vue import { re…

部署istio应用未能产生Envoy sidecar代理

1. 问题描述及原因分析 在部署Prometheus、Grafana、Zipkin、Kiali监控度量Istio的第2.2章节,部署nginx应用,创建的pod并没有产生Envoy sidecar代理,仅有一个应用容器运行中 故在随后的prometheus中也没有产生指标istio_requests_total。通…

搭建你的私人云盘:使用File Browser与cpolar实现公网传输文件

文章目录 前言1.下载安装File Browser2.启动访问File Browser3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 File Browser是一个开源的文件管理器和文件共享工具,它可以帮助用户轻…

NRF52832学习笔记(41)——添加串口库libuarte

一、背景 由于板子上不支持硬件流控,在使用 app_uart_fifo 库接收串口大数据时,频繁报 APP_UART_COMMUNICATION_ERROR 错误,多次重新初始化后,串口也不再产生中断了。查看官方论坛后决定使用串口异步库 libuarte。 二、简介 Li…

嵌入式硬件工程师的职业发展规划

嵌入式硬件工程师可以按照以下阶段进行职业发展规划: 1. **初级阶段(1-3 年) ** - **技术学习与积累**: **电路基础强化**: 深入学习模拟电路和数字电路知识,能够熟练分析和设计基本的电路,…

2024.11.5- Redis(3)

五 Redis的发布订阅 5.1 介绍 Redis通过publish、subscribe和psubcribe、Unsubscribe和punsubscribe等命令实现发布、订阅和退订功能。这些命令被广泛用于构建即时通信应用,比如网络聊天室(chatroom)和实时广播、实时提醒等。 ​ 角色: -- 客户端通过PUBLISH命令向…

最全Kafka知识宝典之消费端深度剖析

一、Kafka消费者基本特性 消费者与消费者组的关系 消费者用一个消费者组名标记自己 一个发布在Topic上消息被分发给此消费者组中的一个消费者 假如所有的消费者都在一个组中,那么这就变成了队列模型,即这些消费者只有一个消费者会收到消息假如所有的…