上一周的作业中,我们已经通过编译和二进制两种方式来进行MySQL和MariaDB数据库的安装,本周来看一下如何使用数据库,本篇主要是通过导入hellodb.sql数据库,进行指定内容的查看。
因笔者上周实验的内容已经清掉,此次直接通过yum安装了MariaDB的10.3.28版本,刚好补充一下设置登录后密*码的方法。开启服务后登录数据库,执行 update mysql.user set password=password("centos") where user='root'; 命令设置root登录密*码,因为是实验,笔者为了方便就设置的比较简单,同时执行 flush privileges; 命令更新权限,退出后,如果不输入密*码是无法登录的(如下图)。
执行 mysql -uroot -p123456 < hellodb_innodb.sql 命令导入数据库,登录数据库后,执行 show databases; 命令可查看已生成hellodb数据库。如果要使用哪个数据库,执行 use 数据库名称; 命令可切换过去;如果想查看当前数据库中有哪些表,执行 show tables; 命令;如果想查看某一个表中的所有信息,执行 select * from 表名; 即可(如下图)。
在此基础上,我们来完成一些小练习:
- 在students表中,查询年龄大于25岁,且为男性的同学的名字和年龄
SQL语言相对比较友好,接近于正常的英语语法,上面说到了查看某一个表的信息要用select,因为是筛选出名字和年龄,直接将*号替换成age和name,中间用逗号隔开,同时大小写可随意;限制条件部分使用where,具体操作如下:
- 以ClassID为分组依据,显示每组的平均年龄
平均值用avg表示,平均年龄即avg(age),因为要对应起来,所以筛选出的信息部分要加上classid。同时是以ClassID为分组依据,因此要加上group by classid,根据指定的条件把查询结果进行"分组"以用于做"聚合"运算(如下图)。
- 显示第2题中平均年龄大于30的分组及平均年龄
上一题我们已经通过聚合运算得到了平均年龄,要得出平均年龄大于30的部分,需要用到having,having可以对分组聚合运算后的结果指定过滤条件(如下图)。
- 显示以L开头的名字的同学的信息
这一题涉及到模糊查询,要用到like,如果后面跟的是任意单个字符,要接上“_”,如果跟的是任意长度的任意字符,要接上“%”,结合本题需跟上“%”,具体操作如下: