建立数据库
目录
实验目的
- 了解云服务器的使用操作,学习华为Gauss数据库的相关知识、基本操作和部署过程。
- 了解虚拟机环境下高斯数据库的部署。
- 完成学籍与成绩管理系统表格的创建。
实验内容
购买ECS服务器,安装Gauss数据库
实验过程
按照实验指导书购买指定规格的云服务器
购买成功
登陆ecs,选择使用cloudshell方法
进入cloudshell界面,输入账户密码登陆成功:
切换python版本为指定版本
安装libaio包
下载数据库安装包
创建xml配置文件
加载lib库,成功

解压下载好的安装包并查看
准备安装环境并采用交互模式执行
安装过程中创建omm账户互信
成功安装
切换到omm账户并查看服务器状态,启动数据库服务
连接数据库
实验结束
实验结论
根据实验指导书的步骤完成了ecs上高斯数据库的部署,初步学习了数据库的基本操作和数据操作,主机名采用学生的姓名首字母缩写bityjh命名。本实验的全部要求已经完成。
了解IAM账号
实验过程
打开iam管理界面
创建新的iam组stu
对用户组授权
创建用户
创建完成
实验结论
成功创建iam用户组并创建了iam用户,对其权限进行了管理。
安装openEuler虚拟机并连接
实验过程
安装实验资源中提供的virtualbox虚拟机软件
导入虚拟机镜像
导入完成
打开提示错误
反复重装十余次,无效
尝试网络上提供的多种设置方式,均失败
尝试使用vm16.0创建虚拟机,网卡不兼容,无法连接主机和公网,反复添加和删除网卡无效,失败
尝试使用hyperv创建Windows虚拟机后安装vbox再导入虚拟机,vbox提示不支持的设置,反复设置均存在此不兼容情况,失败
为修复vbox不能打开的情况,我从2022.5.2 01:00到2022.5.2 13:28进行了一系列尝试,均失败。考虑可能是电脑上安装的软件过多,文件存在冲突,而vbox本身又是一款兼容性和稳定性都欠佳的软件,故推测有一定合理性。
Vbox导入虚拟机在2022.3.17是可以运行的,并且完成了实验要求的连接(使用putty)和配置数据库等过程,但没有截图。
使用新硬盘,分配了一个分区安装了另外的win10系统继续完成本实验。
打开虚拟机
使用putty连接
查看网络状态
切换到omm账户
连接数据库
再次遇到问题,提示数据库损坏,无法打开
只能搜到这个错误命令是数据库损坏,问工作人员也没回我,多次尝试虚拟机重新下载导入问题依旧。
重新下载了几次虚拟机包,重新导入发现可以正常运行了,猜测是网络波动下载文件损坏?
启动数据库并查看状态
连接数据库
成功,本实验完成
实验结论
经过反复尝试,最终完成了本实验,完成了虚拟机上安装openGauss数据库、连接虚拟机、连接数据库等要求。功能测试正常,以下为实验中遇到的问题:
- 为修复vbox不能打开的情况,我从2022.5.2 01:00到2022.5.2 13:28进行了一系列尝试,均失败。考虑可能是电脑上安装的软件过多,文件存在冲突,而vbox本身又是一款兼容性和稳定性都欠佳的软件,故推测有一定合理性。
- Vbox导入虚拟机在2022.3.17是可以运行的,并且完成了实验要求的连接(使用putty)和配置数据库等过程,但没有截图。
- 在安装新系统后,又出现了数据库无法打开的新问题,搜到这个错误代码是数据库损坏,完全按照指导书进行操作但是出现了各种问题。虚拟机重新下载导入了好几次还是出现这一故障。
- 经过多次尝试,终于重新下载的虚拟机镜像导入后可以正常运行,考虑是网络波动之前几次下载的文件损坏,而第一次使用的三月份下载的镜像可能由于固态硬盘存在一定不稳定因素导致数据损坏。
在ECS上创建数据库
实验过程
连接数据库
创建joe模式,设置搜索路径
创建表
向表中插入数据
查看表中数据
实验结束
实验结论
根据实验指导书的步骤完成了ecs上数据库的创建,初步学习了数据库的基本操作和数据操作,主机名采用学生的姓名首字母缩写bityjh命名。本实验的全部要求已经完成。
建立"学籍与成绩管理系统"表格
实验过程
连接数据库并创建sys模式
根据要求创建表,代码如下
CREATE TABLE xs
(
xm CHAR(8) NOT NULL PRIMARY KEY,
xh CHAR(10) NOT NULL,
ydh CHAR(2),
bj CHAR(8),
chrq DATE,
xb CHAR (2),
UNIQUE(xh)
);
创建成功
CREATE TABLE kc
(
kcbh CHAR(3) NOT NULL PRIMARY KEY,
kc CHAR(20) NOT NULL,
lx CHAR(10),
xf NUMERIC(5,1)
);
CREATE TABLE js
(
xm CHAR(8) NOT NULL,
jsbh CHAR(10) NOT NULL PRIMARY KEY,
zc CHAR (6),
ydh CHAR(2)
);
CREATE TABLE xyb
(
ydh CHAR (2) NOT NULL PRIMARY KEY,
ymc CHAR (30) NOT NULL
);
CREATE TABLE sk
(
kcbh CHAR (3) NOT NULL,
bh CHAR (10) NOT NULL,
primary key(kcbh,bh)
);
CREATE TABLE xk
(
xh CHAR (10) NOT NULL,
kcbh CHAR (3) NOT NULL,
jsbh CHAR (10) NOT NULL,
cj NUMERIC (5,1),
PRIMARY KEY (xh,kcbh,jsbh)
) ;
在datastudio中查看表
添加外键
ALTER TABLE js
ADD FOREIGN KEY (ydh) REFERENCES xyb(ydh);
ALTER TABLE xs
ADD FOREIGN KEY (ydh) REFERENCES xyb(ydh);
ALTER TABLE sk
ADD FOREIGN KEY (kcbh) REFERENCES kc(kcbh);
ALTER TABLE sk
ADD FOREIGN KEY (bh) REFERENCES js(jsbh);
ALTER TABLE xk
ADD FOREIGN KEY (xh) REFERENCES xs(xh);
ALTER TABLE xk
ADD FOREIGN KEY (kcbh,jsbh) REFERENCES sk(kcbh,bh);
查看所有表
\dt
创建索引
CREATE INDEX Student_class ON xs(bj);
CREATE INDEX Student_class_ydh ON xs(bj,ydh);
CREATE INDEX ydh_teacher_zc ON js(zc,ydh);
CREATE INDEX kc_notpass ON xk(kcbh,cj) where cj<60;
查看索引
\di
以上在ecs上的创建过程完成。
接下来在虚拟机上重复这一过程:
使用高斯数据库的导出ddl和数据功能获得创建数据库所需的sql语句。
代码如下:
有选择和顺序地粘贴到putty中执行。
解释:不直接使用\i命令执行是因为生成的ddl有问题,把所有的限制关系包括外键等放在创建表的过程中,而上面的实验创建过程中是最后添加外键关系,这是因为如果先创建外键关系,按照ddl生成的顺序存在循环限制,有四张表因为存在外键限制不能直接生成,最终只有两张表能够正确生产,而其他表无法生成。因此使用手动粘贴的方式保证顺序和内容能够正确运行。
-- Name: sys; Type: Schema; Schema: ;
CREATE SCHEMA sys;
SET search_path = sys ;
-- Name: js; Type: Table; Schema: sys;
SET search_path = sys;
CREATE TABLE js (
xm character(8) NOT NULL,
jsbh character(10) NOT NULL,
zc character(12),
ydh character(2),
CONSTRAINT js_ydh_fkey FOREIGN KEY (ydh) REFERENCES sys.xyb(ydh)
)
WITH (orientation=row, compression=no);
ALTER TABLE js ADD CONSTRAINT js_pkey PRIMARY KEY (jsbh);
--Data for Name: js; Type: Table; Schema: sys;
INSERT INTO sys.js (xm,jsbh,zc,ydh)
VALUES ('王三 ','9903 ','副教授 ','02');
INSERT INTO sys.js (xm,jsbh,zc,ydh)
VALUES ('王四 ','9904 ','讲师 ','03');
INSERT INTO sys.js (xm,jsbh,zc,ydh)
VALUES ('王五 ','9905 ','教授 ','04');
INSERT INTO sys.js (xm,jsbh,zc,ydh)
VALUES ('王六 ','9906 ','副教授 ','05');
INSERT INTO sys.js (xm,jsbh,zc,ydh)
VALUES ('没课 ','9909 ','教授 ','02');
INSERT INTO sys.js (xm,jsbh,zc,ydh)
VALUES ('王二 ','9902 ','教授 ','01');
-- Name: kc; Type: Table; Schema: sys;
SET search_path = sys;
CREATE TABLE kc (
kcbh character(3) NOT NULL,
kc character(20) NOT NULL,
lx character(10),
xf numeric(5,1)
)
WITH (orientation=row, compression=no);
ALTER TABLE kc ADD CONSTRAINT kc_pkey PRIMARY KEY (kcbh);
--Data for Name: kc; Type: Table; Schema: sys;
INSERT INTO sys.kc (kcbh,kc,lx,xf)
VALUES ('1 ','数据库 ','必修 ',3.0);
INSERT INTO sys.kc (kcbh,kc,lx,xf)
VALUES ('2 ','数据结构 ','必修 ',5.0);
INSERT INTO sys.kc (kcbh,kc,lx,xf)
VALUES ('3 ','离散数学 ','必修 ',4.0);
INSERT INTO sys.kc (kcbh,kc,lx,xf)
VALUES ('4 ','大学物理 ','选修 ',4.0);
INSERT INTO sys.kc (kcbh,kc,lx,xf)
VALUES ('5 ','模拟电路 ','选修 ',4.0);
-- Name: sk; Type: Table; Schema: sys;
SET search_path = sys;
CREATE TABLE sk (
kcbh character(3) NOT NULL,
bh character(10) NOT NULL,
CONSTRAINT sk_bh_fkey FOREIGN KEY (bh) REFERENCES sys.js(jsbh),
CONSTRAINT sk_kcbh_fkey FOREIGN KEY (kcbh) REFERENCES sys.kc(kcbh)
)
WITH (orientation=row, compression=no);
ALTER TABLE sk ADD CONSTRAINT sk_pkey PRIMARY KEY (kcbh, bh);
--Data for Name: sk; Type: Table; Schema: sys;
INSERT INTO sys.sk (kcbh,bh)
VALUES ('1 ','9902 ');
INSERT INTO sys.sk (kcbh,bh)
VALUES ('2 ','9903 ');
INSERT INTO sys.sk (kcbh,bh)
VALUES ('3 ','9904 ');
INSERT INTO sys.sk (kcbh,bh)
VALUES ('4 ','9905 ');
INSERT INTO sys.sk (kcbh,bh)
VALUES ('5 ','9906 ');
-- Name: xk; Type: Table; Schema: sys;
SET search_path = sys;
CREATE TABLE xk (
xh character(10) NOT NULL,
kcbh character(3) NOT NULL,
jsbh character(10) NOT NULL,
cj numeric(5,1),
CONSTRAINT xk_xh_fkey FOREIGN KEY (xh) REFERENCES sys.xs(xh),
CONSTRAINT xk_kcbh_fkey FOREIGN KEY (kcbh, jsbh) REFERENCES sys.sk(kcbh, bh)
)
WITH (orientation=row, compression=no);
ALTER TABLE xk ADD CONSTRAINT xk_pkey PRIMARY KEY (xh, kcbh, jsbh);
--Data for Name: xk; Type: Table; Schema: sys;
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000003','3 ','9904 ',72.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000004','3 ','9904 ',73.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000005','1 ','9902 ',90.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000006','3 ','9904 ',68.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000007','3 ','9904 ',89.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000008','1 ','9902 ',79.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000009','5 ','9906 ',79.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000010','4 ','9905 ',64.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000011','3 ','9904 ',87.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000012','2 ','9903 ',60.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000013','1 ','9902 ',73.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000014','4 ','9905 ',73.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000015','4 ','9905 ',78.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000016','4 ','9905 ',75.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000017','3 ','9904 ',91.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000018','1 ','9902 ',80.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000019','2 ','9903 ',66.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000020','4 ','9905 ',79.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000021','3 ','9904 ',61.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000022','3 ','9904 ',78.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000023','2 ','9903 ',70.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000024','1 ','9902 ',79.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000025','3 ','9904 ',74.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000026','5 ','9906 ',99.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000027','1 ','9902 ',77.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000028','3 ','9904 ',77.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000029','2 ','9903 ',79.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000030','3 ','9904 ',82.0);
INSERT INTO sys.xk (xh,kcbh,jsbh,cj)
VALUES ('1100000002','4 ','9905 ',20.0);
-- Name: xs; Type: Table; Schema: sys;
SET search_path = sys;
CREATE TABLE xs (
xm character(8) NOT NULL,
xh character(10) NOT NULL,
ydh character(2),
bj character(8),
chrq timestamp(0) without time zone,
xb character(8),
CONSTRAINT xs_ydh_fkey FOREIGN KEY (ydh) REFERENCES sys.xyb(ydh)
)
WITH (orientation=row, compression=no);
ALTER TABLE xs ADD CONSTRAINT xs_xh_key UNIQUE (xh);
CREATE INDEX student_class ON sys.xs USING btree (bj) TABLESPACE pg_default;
ALTER TABLE xs ADD CONSTRAINT xs_pkey PRIMARY KEY (xm);
--Data for Name: xs; Type: Table; Schema: sys;
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('张三 ','1100000003','03','18012001','1990-01-03 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu1 ','1100000004','04','18012001','1990-01-04 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu2 ','1100000005','05','18012001','1990-01-05 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu3 ','1100000006','01','18012001','1990-01-06 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu4 ','1100000007','02','18012001','1990-01-07 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu5 ','1100000008','03','18012001','1990-01-08 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu6 ','1100000009','04','18012001','1990-01-09 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu7 ','1100000010','05','18012001','1990-01-10 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu8 ','1100000011','01','18012001','1990-01-11 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu9 ','1100000012','02','18012001','1990-01-12 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu10 ','1100000013','03','18012001','1990-01-13 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu11 ','1100000014','04','18012001','1990-01-14 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu12 ','1100000015','05','18012001','1990-01-15 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu13 ','1100000016','01','18012001','1990-01-16 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu14 ','1100000017','02','18012001','1990-01-17 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu15 ','1100000018','03','18012001','1990-01-18 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu16 ','1100000019','04','18012001','1990-01-19 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu17 ','1100000020','05','18012001','1990-01-20 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu18 ','1100000021','01','18012001','1990-01-21 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu19 ','1100000022','02','18012001','1990-01-22 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu20 ','1100000023','03','18012001','1990-01-23 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu21 ','1100000024','04','18012001','1990-01-24 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu22 ','1100000025','05','18012001','1990-01-25 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu23 ','1100000026','01','18012001','1990-01-26 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu24 ','1100000027','02','18012001','1990-01-27 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu25 ','1100000028','03','18012001','1990-01-28 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu26 ','1100000029','04','18012001','1990-01-29 00:00:00','男 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('stu27 ','1100000030','05','18012001','1990-01-30 00:00:00','女 ');
INSERT INTO sys.xs (xm,xh,ydh,bj,chrq,xb)
VALUES ('张二 ','1100000002','02','888 ','1990-01-02 00:00:00','男 ');
-- Name: xyb; Type: Table; Schema: sys;
SET search_path = sys;
CREATE TABLE xyb (
ydh character(2) NOT NULL,
ymc character(30) NOT NULL
)
WITH (orientation=row, compression=no);
ALTER TABLE xyb ADD CONSTRAINT xyb_pkey PRIMARY KEY (ydh);
--Data for Name: xyb; Type: Table; Schema: sys;
INSERT INTO sys.xyb (ydh,ymc)
VALUES ('01','计算机 ');
INSERT INTO sys.xyb (ydh,ymc)
VALUES ('02','自动化 ');
INSERT INTO sys.xyb (ydh,ymc)
VALUES ('03','光电 ');
INSERT INTO sys.xyb (ydh,ymc)
VALUES ('04','车辆 ');
INSERT INTO sys.xyb (ydh,ymc)
VALUES ('05','外国语 ');
创建成功,查看六张表:
分别查看六张表的字段以及主外键等约束
实验结论
依照实验要求建立了"学籍与成绩管理系统"表格,建立了表之间的参照关系,添加了适当的索引。表字段完整类型正确,满足了实验要求。
实验收获与体会
通过本次实验对虚拟机环境配置,ecs上高斯数据库部署以及高斯数据库的操作有了初步的认识。
本次实验最大的难点在于华为提供的软件和虚拟机镜像的兼容性都欠佳,只能安装在vbox和特定版本的VMware上,即便是在vbox中运行nat网卡也经常失效,反复安装调试乃至重装占据了90%以上的时间。并且datastudio存在bug,在我的电脑上运行不能够显示数据库的外键,但是使用\d+命令进行命令行操作以及添加数据的时候能够观察到存在外键约束是可以看到外键已经成功建立的。
浙公网安备 33010602011771号