由于之前文章已经初步了解过数据库的概念此处就不过多赘述了,直接进入本次主题,此次要介绍的是Mysql数据库,与之前介绍的Oracle数据库相比属于中型数据库,远远小于Oracle的容量体积(从软件的安装包大小就可看出),一个只要几百MB,一个却要好几个G。虽然安全性不如Oracle好,但Mysql相比Oracle操作简单更加易于上手。
要想使用Mysql数据库,也需要进行安装对应的软件,版本推荐Mysql5.0或者Mysql8.0(此处省略安装过程,可自行在官网下载)。此处使用的是mysql8.0版本,安装好程序后可以进行登录连接,Mysql的默认登录名为root,密码可以自定义。使用Windows键加R键输入cmd后进入命令控制台,输入mysql -V 如果弹出mysql的版本信息即为安装成功,否则安装失败。如图:
安装好后即可进行数据库的相关操作,但由于纯命令行的操作不便,可以使用相关的图像化界面工具,此处推荐使用Navicat,下载和安装教程可自行观看B站大学学习。我使用的是版本是Navicat15,若弹出更新,切记千万不要更新,就使用当前版本,否则更新后软件可能不能使用。点击连接,选择MySql如图:
之后自定义连接名,输入连接主机的IP地址和对应的端口号,以及数据库的用户名和密码,然后测试连接,成功后点击确定,如图:
看到mysql的默认数据库后即为连接成功,如图:
由此你可以对数据进行相关可视化操作了,如创建数据库,删除数据库,新建表,插入数据,修改数据,删除数据等。Mysql中数据类型与Oracle中最大的不同是字符串类型Mysql中是使用varchar,而Oracle中是varchar2。Mysql中重要的操作有增删改查以及分组、分页和排序。下面会一一详细介绍:首先创建一个数据库命名为school,指定字符集-utf8,然后创建需要的表student表(学生表),teacher表(教师表),course表(课程表)以及sc表(中间关联表)。各表设计如下:student表:
teacher表:
course表:
sc表:
准备工作到此结束,现在开始对表中数据进行操作,语法与之前Oracle中基本一致,此处就以例子为引重点展现多表以及分组、分页和排序的使用。1.查询选修课程'3-105'且成绩在60到80之间的所有记录:首先把课程'3-105'且成绩在60到80之间的学生学号查询出来,然后在学生表中的学号进行匹配。
SQL语句:
select * from student,
(select * from sc,course where sc.sc_cou_id = course.cou_id and sc.sc_cou_id='3-105' and sc.sc_grade between 60 and 80) t
where student.stu_id = t.sc_stu_id;
查询结果:
2.查询成绩为85、86或88的记录:首先查找成绩在集合85、86或88的学生学号,然后在学生表中的学号进行匹配,查找出学生的信息。
SQL语句:
select * from student,
(select * from sc where sc.sc_grade in(85,86,88)) t
where student.stu_id = t.sc_stu_id;
查询结果:
3.查询'95031'班的学生人数:使用聚合函数count,把班级号为95031的学生进行统计。
SQL语句:
select count(*)人数 from student where student.stu_cla ='95031';
查询结果:
4.查询最低分大于70,且最高分小于90的学号列(分组查询):先根据学号进行分组,查询出每个学号的最高分和最低分,然后在进行添加条件筛选最低分大于70,且最高分小于90的学号。
SQL语句:
select t.sc_stu_id from (select sc.sc_stu_id,min(sc.sc_grade) i ,
max(sc.sc_grade) a from sc GROUP BY sc.sc_stu_id)t
where t.i > 70 and t.a < 90;
查询结果:
5.查询选修编号为'3-105'课程且成绩至少高于选修编号为'3-245'课程的同学的课程号、学号 、成绩并按成绩从高到低次序排列:先查询出选择编号为'3-105'课程的同学信息,在查询出选修编号为'3-245'课程的同学的成绩信息,然后进行条件比较并排序。
SQL语句:
select t1.* from
(select * from sc where sc.sc_cou_id='3-105') t1,
select sc.sc_grade g from sc where sc.sc_cou_id='3-245' order by sc.sc_grade asc limit 0,1) t2
where t1.sc_grade >t2.g;
查询结果:
到此mysql的基本用法和多表查询已经讲述得差不多了,对于多表查询其实就是复杂化的单表查询,重点是查询思路,同一个例子的查询语句可能有多种,上面提出的只是提供一种思路,读者可以下去自己思考和尝试新的查询思路。对于编程就是要敢想敢动手实践,才能体会和学习到更多。