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,表结构如下:

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

(四)编程实现

 

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

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

相关文章

图解TCP三次握手:一步步构建网络会话

在互联网通信中,确保数据传输的可靠性至关重要。TCP三次握手的过程正是为了解决这一问题而设计的。在建立连接之前,客户端和服务器需要确认彼此的存在与准备状态,以防止因网络延迟或数据丢失而导致的错误。通过三次握手,双方不仅能…

[ shell 脚本实战篇 ] 编写恶意程序实现需求(恶意程序A监测特定目录B出现特定文件C执行恶意操作D-linux)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

讲讲RabbitMQ 性能优化

大家好,我是锋哥。今天分享关于【RabbitMQ 性能优化?】面试题。希望对大家有帮助; 讲讲RabbitMQ 性能优化 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ 是一个强大的消息代理,广泛用于分布式系统中&#x…

2-139 基于matlab的弹道轨迹仿真

基于matlab的弹道轨迹仿真。设计GUI图形用户界面,对导弹参数根据需求进行设置,直观的实现更改攻角、各级火箭喷射时间等参数后得到对应参数下的导弹弹道图像以及导弹的飞行时间和飞行距离。得到飞行时间集导弹射程。程序已调通,可直接运行。 …

【spark的集群模式搭建】Standalone集群模式的搭建(简单明了的安装教程)

文章目录 1、使用Anaconda部署Python2、上传、解压、重命名3、创建软连接4、配置spark环境变量5、修改 spark-env.sh配置文件6、启动hdfs,创建文件夹7、修改spark-defaults.conf配置文件8、修改workers配置文件9、修改log4j.properties配置文件(可选&…

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

校门外的树(算法:标记法)

思路实现&#xff1a; 1.利用二维数组来存储输入数据 2.开辟一个包含所有范围的数组用来做标记初始为0 3.遍历二维数组&#xff0c;取到每段区间的开始位置和结束位置&#xff0c;在标记数字组中将边界点及边界点内置1 4.遍历标记数组记录0的个数&#xff0c;即可 代码实现…

100M宽带测速只有20M

100M宽带测速只有20M的原因主要有以下几点‌&#xff1a; ‌网络设备不匹配‌&#xff1a;100兆宽带的实际使用需要全千兆路由器、超五类网线以及千兆网卡的支持。如果使用老旧的路由器、五类网线或百兆网卡&#xff0c;可能会导致网速受限。例如&#xff0c;使用普通网线可能…

二、基础语法

入门了解 注释 **作用&#xff1a;**在代码中加一些注释和说明&#xff0c;方便自己或者其他程序员阅读代码 两种格式&#xff1a; 单行注释&#xff1a;// 描述信息 通常放在一行代码的上方&#xff0c;或者一条语句的末尾&#xff0c;对该行代码进行说明 多行注释&#x…

minikube 的 Kubernetes 入门教程--(五)

本文记录 Minikube 在 Kubernetes 上安装 WordPress 和 MySQL。 这两个应用都使用 PersistentVolumes 和 PersistentVolumeClaims 保存数据。 在深入这些步骤之前&#xff0c;先分享来自kubernetes.io教程。 链接>>使用持久卷部署 WordPress 和 MySQL | Kubernetes 获…

向量数据库|第2期|pgvectorscale

向量数据库|第2期|pgvectorscale 大家都听说过pgvector&#xff0c;一个PostgreSQL存储和查询向量的扩展&#xff0c;是PG AI生态当之无愧的最受推崇的工具之一。pgvector向PG中添加了vector类型&#xff0c;以及各种搜索操作符和索引&#xff0c;使其拥有vectors和metadata的完…

【sqlmap使用】

sqlmap简介 sqlmap 目录结构 sqlmap常用参数 sqlmap实现注入 测试注入点&#xff0c;检测到注入点后&#xff0c;直接爆数据库名 python sqlmap.py –u http://172.16.12.2/7/9/strsql.php --data "usernameadmin" --dbs注意sqlmap在使用过程中可能会出现几个需要…

通过源码分析类加载器里面可以加载的类

类列表 每一个ClassLoader里面的类列表&#xff0c;类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…

宝塔使用clickhouse踩坑

前言 最近有个物联网项目&#xff0c;需要存储物联网终端发送过来的信息&#xff08;类似log日志&#xff0c;但又要存储在数据库里&#xff0c;方便后期聚合统计&#xff09;&#xff0c;本来想写文件的奈何客户要求聚合统计&#xff0c;所以只能用数据库才能达到更高的计算效…

parted 磁盘分区

目录 磁盘格式磁盘分区文件系统挂载使用扩展 - parted、fdisk、gdisk 区别 磁盘格式 parted /dev/vdcmklabel gpt # 设置磁盘格式为GPT p # 打印磁盘信息此时磁盘格式设置完成&#xff01; 磁盘分区 开始分区&#xff1a; mkpart data_mysql # 分区名&…

NFTScan Site:以蓝标认证与高级项目管理功能赋能 NFT 项目

自 NFTScan Site 上线以来&#xff0c;它迅速成为 NFT 市场中的一支重要力量&#xff0c;凭借对各类 NFT 集合、市场以及 NFTfi 项目的认证获得了广泛认可。这个平台帮助许多项目提升了曝光度和可见性&#xff0c;为它们在竞争激烈的 NFT 市场中创造了更大的成功机会。 在最新更…

leetcode-5-最长回文子串

题解&#xff1a; 回文串&#xff1a;如果一个字符串正着读和反着读都是一样的那这个字符串就是回文串。 对于一个子串而言&#xff0c;如果它是回文串&#xff0c;并且长度大于 2&#xff0c;那么将它首尾的两个字母去除之后&#xff0c;它仍然是个回文串。 1、初始化字典d…

mysql5安装

1.下载安装包 https://downloads.mysql.com/archives/community/ mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar tar -xvf mysql-5.7.44-1.el7.x86_64.rpm-bundle.tar2.安装依赖 yum -y install perl yum -y install net-tools yum install numactl libaio libaio-devel -y也可…

【工具变量】“宽带中国”试点城市名单匹配数据集(2000-2023年)

参照秦文晋&#xff08;2022&#xff09;的《网络基础设施建设对数字经济发展的影响研究——基于"宽带中国"试点政策的准自然实验》一文中的做法&#xff0c;将选为“宽带中国”试点城市的虚拟变量作为核心解释变量&#xff0c;当一个城市被批复成为“宽带中国”试点…

php内置服务停止shell小工具,用来停止指定的端口的php内置服务进程

最近vscode总是喜欢闪退&#xff0c;这导致了上面启动的php内置服务变成了无法管理状态&#xff0c;所以就有了这个工具来停止相关的PHP内置服务进程. 将下面的代码保存到本地合适的位置&#xff0c;并命名为 stop.sh #!/bin/bash # Author: tekintian # Date: 2024-11-02 …