暂无图片
暂无图片
61
暂无图片
暂无图片
暂无图片

以学校数据模型为例,掌握在DAS下使用GaussDB(for openGauss)

原创 kk 2022-11-10
878


目的: 这里以学校数据库模型为例,介绍GaussDB(for openGauss)数据库、表等常见操作,以及SQL语法使用的介绍。

题目

        假设A市B学校为了加强对学校的管理,引入了华为GaussDB(for openGauss)数据库。

在B学校里,主要涉及的对象有学生、教师、班级、院系和课程。本实验假设在B学校数据库中,教师会教授课程,学生会选修课程,院系会聘请教师,班级会组成院系,学生会组成班级。

其关系模型如下:

对于B校中的5个对象,分别建立属于每个对象的属性集合,具体属性描述如下:

l   学生(学号,姓名,性别,出生日期,入学日期,家庭住址)

l   教师(教师编号,教师姓名,职称,性别,年龄,入职日期)

l   班级(班级编号,班级名称,班主任)

l   院系(系编号,系名称,系主任)

l   课程(课程编号,课程名称,课程类型,学分)

上述属性对应的编号为:

l   student(std_id,std_name,std_sex,std_birth,std_in,std_address)

l   teacher(tec_id,tec_name,tec_job,tec_sex,tec_age,tec_in)

l   class(cla_id,cla_name,cla_teacher)

l   school_department(depart_id,depart_name,depart_teacher)

l   course(cor_id,cor_name,cor_type,credit)

对象之间的关系:

l   一位学生可以选择多门课程,一门课程可被多名学生选择

l   一位老师可以选择多门课程,一门课程可被多名老师教授

l   一个院系可由多个班级组成

l   一个院系可聘请多名老师

l   一个班级可由多名学生组成

看到这里是不是觉得很麻烦,不过给出了E-R图可供理解。


具体操作

一、表的创建

        根据B学校的场景描述,本实验分别针对学生(student),教师(teacher),班级(class),院系(school_department)和课程(course)创建相应的表。具体的实验步骤如下所示:

step1:创建学生信息表。

DROP TABLE IF EXISTS student;
复制


        创建student表:

CREATE TABLE student
(
        std_id INT PRIMARY KEY,
        std_name NCHAR(20) NOT NULL,
        std_sex NCHAR(6),
        std_birth DATE,
        std_in DATE NOT NULL,
        std_address VARCHAR(100)
);
复制


step2:创建教师信息表。

DROP TABLE IF EXISTS teacher;
CREATE TABLE teacher
(
        tec_id INT PRIMARY KEY,
        tec_name CHAR(20) NOT NULL,
        tec_job CHAR(15),
        tec_sex CHAR(6),
        tec_age INT,
        tec_in DATE NOT NULL
);
复制


step3:创建班级信息表。

DROP TABLE IF EXISTS class;
CREATE TABLE class
(
        cla_id INT PRIMARY KEY,
        cla_name CHAR(20) NOT NULL,
        cla_teacher INT NOT NULL
);
复制


step4:创建院系信息表。

DROP TABLE IF EXISTS school_department;
CREATE TABLE school_department
(
        depart_id INT PRIMARY KEY,
        depart_name NCHAR(30) NOT NULL,
        depart_teacher INT NOT NULL
);
复制


step5:创建课程信息表。

DROP TABLE IF EXISTS course;
CREATE TABLE course
(
        cor_id INT PRIMARY KEY,
        cor_name NCHAR(30) NOT NULL,
        cor_type NCHAR(20),
        credit numeric
);
复制


二、表数据的插入

    向student表中插入数据。

INSERT INTO student(std_id,std_name,std_sex,std_birth,std_in,std_address) VALUES (1,'张一','男','1993-01-01','2011-09-01','江苏省南京市雨花台区');
复制

实际上这里需要插入很多数据,笔者为了不显得文章臃肿,就只用了一条,下面也是类似。

    向teacher表中插入数据。

INSERT INTO teacher(tec_id,tec_name,tec_job,tec_sex,tec_age,tec_in) VALUES (1,'王五','讲师','男',35,'2009-07-01');
复制

    向class表插入数据。

INSERT INTO class(cla_id,cla_name,cla_teacher) VALUES (1,'计算机',1);
复制

    向school_department表插入数据。

INSERT INTO school_department(depart_id,depart_name,depart_teacher) VALUES (1,'计算机学院',2);
复制

    向course表插入数据。

INSERT INTO course(cor_id,cor_name,cor_type,credit) VALUES (1,'数据库','选修',3);
复制

三、数据查询

    查询B校课程信息表的所有信息。

SELECT * from course;
复制

    例:在教师信息表中查询教师编号大于45的老师的入学年份。(条件查询)

SELECT tec_id, tec_in FROM teacher WHERE tec_id>45;
复制

    修改/更新课程信息表数据。

例:

UPDATE course SET cor_name='python程序设计',cor_type='必修',credit=3.5 WHERE cor_id=1;
SELECT * FROM course WHERE cor_id=1;
复制

        赶紧来试试吧!!




「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论