赞
踩
一:可视化软件(Navicat)
1.什么是可视化软件?
数据可视化软件可将文本和数字数据转换为可视化的图表,图形和表格。 通过将重要数据引入中央界面,它被用作创建应用程序/系统性能或操作仪表板的方法。
2.什么是Navicat?
官网下载Navicat:Navicat | 下载 Navicat for MySQL 14 天免费 Windows、macOS 和 Linux 的试用版
Navicat是一个可多重连接的数据库管理工具,它可以连接到MySQL、Oracle、PostgreSQL、SQLite、SQL Server和/或MariaDB数据库,让数据库管理更加方便。Navicat的功能可以满足专业开发人员的所有需求,对数据库服务器的新手来说学习起来也不难。有了极完备的图形用户界面(GUI),Navicat可以简便、安全地创建、组织、访问和共享信息。
Navicat提供三种操作平台:Microsoft Windows、Mac OS X 和Linux。它可以让用户连接到本机或远程服务器、提供一些实用的数据库工具如数据模型、数据传输、数据同步、结构同步、导入、导出、备份、还原、报表创建工具及计划以协助管理数据。
Navicat Premium是一套数据库管理工具,结合了其它Navicat成员的功能,Navicat Premium可满足现今数据库管理系统的使用功能,包括存储过程、事件、触发器、函数、视图等。
为了提高开发的效率 但是不能太过于依赖该软件 其实这些软件的底层还是执行的SQL语句来操作数据库的,只不过是将SQL语句封装到软件内。
二:部署MySQL(Navicat)
1.Navicat连接本地MySQL
2.连接MySQL,输入密码,在点击测试即可,不需要输入HOST,测试成功,会默认填写。
3.查询MySQL内,库和表。
4.创建库
5.创建表
可视化软件内,也可以选择SQL语句编辑,一些代码,可视化软件完成不了时,可以自己使用,可视化软件提供的SQL语句编辑。
6.重新编辑表字段设置
7.编写表数据
8.创建外键
1.外键设置 Foreign Keys 2.设置填写关联信息与被关联信息 3.先刷新设置的外键,在填写出对应的被关联表的设置的外键id,必须对应数据,不对应报错。 注: 如果想要把主键关联id,设置成不重复id,需要在表内编辑,选择sql语句手写自行编辑代码,该可视化软件无该快捷键。
1
2
3
9.图形化当前库下面所有的表关系
10.Query编辑SQL语句
11.使用可视化软件 将MySQL中SQL文件导出到本地
12.使用可视化软件,将本地SQL文件导入到MySQL内
三:使用可视化软件实现(MySQL多表查询)
1.做题思路
写多表查询题跟写代码是一样的 先写思路再写sql 不要想着一次性写完 写一点查一点再写一点 学生--成绩--课程--老师
2.查询所有的课程的名称以及对应的任课老师姓名
1、查询所有的课程的名称以及对应的任课老师姓名 1.先明确需要用到几张表 老师表与课程表 2.查询的结果也必须来源于两种表 步骤1 先连表 SELECT course.cname,teacher.tname FROM course INNER JOIN teacher ON course.teacher_id = teacher.tid;
3.查询平均成绩大于八十分的同学的姓名和平均成绩
查询平均成绩大于八十分的同学的姓名和平均成绩(先明确需要用到两张表) 分解题目执行(提高解题思路) 1.查询平均成绩大于80分的学生id号 按照学生id分组 之后求每个学生的平均成绩 select student_id,avg(num) from score group by student_id; 2.在使用having过滤出平均成绩大于80分的数据 select student_id,avg(num) as avg_num from score group by student_id HAVING avg(num) > 80; 3.完善(查询平均成绩大于八十分的同学的姓名和平均成绩) 将上述的表与学生表按照学生id拼接到一起 SELECT student.sname,t1.avg_num FROM student INNER JOIN ( SELECT student_id, avg( num ) AS avg_num FROM score GROUP BY student_id HAVING avg( num ) > 80 ) AS t1 ON student.sid = t1.student_id;
# 5.查询没有李平老师课的学生姓名 # 1.先查询李平老师教授的课程编号 # (课程的老师id对应老师id) -- select course.cid from course where teacher_id = (select tid from teacher where tname = '李平老师'); # 2.根据课程id号筛选出所有报了学生id号 # (老师教授的课程id 筛选出score内的课程id对应,留下来student_id字段) -- select distinct score.student_id from score where course_id in (select course.cid from course where teacher_id = (select tid from teacher where tname = '李平老师')); # 3.去学生表中根据id号取反筛选学生姓名 -- select student.sname from student where sid not in (select distinct score.student_id from score where course_id in (select course.cid from course where teacher_id = (select tid from teacher where tname = '李平'))); --
# 6.查询没有同时选修物理和体育科技的学生姓名(只要报一门的 两门和一门没报的都不要) # 1.先获取两门课程的id号 -- select course.cid from course where cname in ('物理','体育'); # 2.在去分数表中先筛选出所有报了物理和体育的学生id(两门 一门); -- select * from score where course_id in (select course.cid from course where cname in ('物理','体育')); # 3.如何筛选出只报了一门的学生id 按照学生id分组 然后技数 并过滤出计数结果为1的数据 -- select score.student_id from score where course_id in (select course.cid from course where cname in ('物理','体育')) group by score.student_id having count(score.course_id) = 1; # 4.根据学生id号去student表中筛选学生姓名 -- select student.sname from student where sid in (select score.student_id from score where course_id in (select course.cid from course where cname in ('物理','体育')) group by score.student_id having count(score.course_id) = 1);
# 7.查询挂科超过两门(包括两门)的学生姓名和班级 #1.先筛选出小于60分的数据 -- select * from score where num > 60; # 2.按照学生id分组 然后统计挂科数量 -- select student_id,count(course_id) from score where num < 60 group by student_id; # 3.筛选出挂科超过两门的学生id -- select student_id from score where num < 60 group by student_id having count(course_id) >=2; # 4.先将上述结果放在一边 去连接student和class表 -- select student.sname,class.caption from class inner join student on class.cid = student.class_id where student.sid in (select student_id from score where num < 60 group by student_id having count(course_id) >=2);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。