学习云数据库RDS的基本用法(体验学生课程成绩管理)

举报
zekelove 发表于 2021/12/21 08:10:31 2021/12/21
【摘要】 参加了《数据库全栈成长计划》的学习,从中学习了数据库的基础知识,GaussDB(for MySQL)云数据库的特性和应用场景,了解数据库相关的系统结构,数据库安全性,数据备份迁移等内容。通过创建学生表、课程表、成绩表,体验表的查询,创建主键和联合索引,创建视图和函数的过程,通过SQL查询计划可以了解执行效率。

参加了《数据库全栈成长计划》的学习,从中学习了数据库的基础知识,GaussDB(for MySQL)云数据库的特性和应用场景,了解数据库相关的系统结构,数据库安全性,数据备份迁移等内容。

RDS(Relational Database Service,关系型数据库服务)是一种基于云计算平台的即开即用、稳定可靠、弹性伸缩、便捷管理的在线关系型数据库服务。

购买数据库实例

免费领取活动页:https://activity.huaweicloud.com/free_test/index.html

打开华为云官网:https://www.huaweicloud.com/   

1.登录账号,进入“控制台”,点击左侧服务列表-数据库-云数据库 RDS,或者在搜索框输入“RDS”

2.点击“云数据库 RDS”

3.点击“购买数据库实例”

计费模式:按需计费

实例名称:rds-test

数据库引擎:MySQL

数据库版本:5.7

虚拟私有云:选择已创建好的虚拟私有云

数据库端口:默认 3306

安全组:选择已创建好的安全组(在安全组添加数据库端口规则)

管理员密码:Huawei@123456

确认密码:Huawei@123456

其余默认即可,点击“立即购买”成功后,返回实例管理列表,看到运行状态“正常”,说明数据库实例已经创建成功了。

登录数据库实例

点击左侧“实例管理”,打开数据库实例列表。

在创建好的实例名称“rds-test”最后面点击“更多”,点击“登录”

输入数据库用户名和密码,点击“测试连接”,提示连接成功,点击“登录”,进入管理控制台

创建数据库

点击“新建数据库”,输入名称后点击“确定”

数据库名称:自定义 dbtest

创建数据库表

点击创建好的数据库右侧的“新建表”;或者点击“数据库名称”,点击“新建表”。

表名:自定义student

点击下一步,创建列

输入列名,类型,长度;点击“添加”,创建多个列。

点击“下一步”直到完成。

点击“SQL窗口”,通过脚本创建表。

输入创建表的脚本,点击“执行SQL”,创建表成功。

--学生表
create table student(sno int,sname varchar(100),ssex char(4),sage int);
--课程表
create table course(cno int,cname varchar(20),credit int);
--成绩表
create table elective(sno int,cno int,grade decimal(5,1));

插入数据

向创建好的表中插入数据,在“SQL查询”窗口执行脚本如下:

-- student表插入
insert into student values (1,'张三','男',19);
insert into student values (2,'李四','男',19);
insert into student values (3,'王五','男',23);
insert into student values (4,'赵六','男',22);
insert into student values (5,'小明','男',19);
-- course表插入
insert into course values (101,'数学',5);
insert into course values (102,'英语',6);
insert into course values (103,'物理',5.5);
insert into course values (104,'化学',3);
insert into course values (105,'生物',5);
-- elective表插入
insert into elective values (1,101,80),(1,102,80.5),(1,103,60),(1,104,55),(1,105,90);
insert into elective values (2,101,83),(2,102,60.5),(2,103,70),(2,104,55),(2,105,99);
insert into elective values (3,101,50),(3,102,80.5),(3,103,80),(3,104,59),(3,105,90);
insert into elective values (4,101,80),(4,102,40.5),(4,103,60),(4,104,59),(4,105,60);
insert into elective values (5,101,60),(5,102,70.5),(5,103,70),(5,104,89),(5,105,66);
insert into elective values (6,101,50),(6,102,80.5),(6,103,60),(6,104,59),(6,105,83);

查询数据

查询学生编号为10的学生的姓名信息

select sname from student where sno = 10;

设置主键

如果创建表的时候没有添加主键,就会存在数据重复。

将 student 表中的学生编号设置为主键。

ALTER table student add PRIMARY KEY (sno);

创建索引

为 elective 表中的学生编号和课程编号创建 UNIQUE 索引。

alter table elective add unique key sno_cno(sno,cno);

创建视图

创建一个视图,显示学生的姓名、课程名称以及获得的分数。

CREATE VIEW v_student_course AS 
SELECT
	stu.sname,cos.cname,el.grade
FROM
	student stu,
	course cos,
	elective el
WHERE
	stu.sno = el.sno
AND cos.cno = el.cno

创建函数

编写一个函数返回某个学生的分数总和。

CREATE FUNCTION GetAvgGradeById (id INT) RETURNS INT
BEGIN
	RETURN (
		SELECT
			avg(el.grade) as grade
		FROM
			student stu,
			course cos,
			elective el
		WHERE
           stu.sno = el.sno
		 AND cos.cno = el.cno
		 AND stu.sno = id
    GROUP BY stu.sname
	);
END

查看SQL执行计划

查询数学这门课程学生的平均成绩,并查看执行计划。

SELECT
	avg(el.grade) as grade
FROM
	student stu,
	course cos,
	elective el
WHERE
     stu.sno = el.sno
	AND cos.cno = el.cno
	AND cos.cname = '数学'

温馨提示

文章内容如果写的存在问题欢迎留言指出,让我们共同交流,共同探讨,共同进步~~~

文章如果对你有帮助,动动你的小手点个赞,鼓励一下,给我前行的动力。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200