MySQL可视化软件(Navicat)部署与使用

一:可视化软件(Navicat)

1.什么是可视化软件?

数据可视化软件可将文本和数字数据转换为可视化的图表,图形和表格。 通过将重要数据引入中央界面,它被用作创建应用程序/系统性能或操作仪表板的方法。

2.什么是Navicat?

官网下载Navicat:http://www.navicat.com.cn/download/navicat-for-mysql

Navicat是一个可多重连接的数据库管理工具,它可以连接到MySQL、Oracle、PostgreSQL、SQLite、SQL Server和/或MariaDB数据库,让数据库管理更加方便。Navicat的功能可以满足专业开发人员的所有需求,对数据库服务器的新手来说学习起来也不难。有了极完备的图形用户界面(GUI),Navicat可以简便、安全地创建、组织、访问和共享信息。

Navicat提供三种操作平台:Microsoft Windows、Mac OS X 和Linux。它可以让用户连接到本机或远程服务器、提供一些实用的数据库工具如数据模型、数据传输、数据同步、结构同步、导入、导出、备份、还原、报表创建工具及计划以协助管理数据。
image
Navicat Premium是一套数据库管理工具,结合了其它Navicat成员的功能,Navicat Premium可满足现今数据库管理系统的使用功能,包括存储过程、事件、触发器、函数、视图等。

  • Navicat 该软件是收费的 但是有很多破解版本 自我百度下载即可(正式版只能使用14天)
为了提高开发的效率 但是不能太过于依赖该软件
其实这些软件的底层还是执行的SQL语句来操作数据库的,只不过是将SQL语句封装到软件内。

二:部署MySQL(Navicat)

1.Navicat连接本地MySQL

image

2.连接MySQL,输入密码,在点击测试即可,不需要输入HOST,测试成功,会默认填写。

image

3.查询MySQL内,库和表。

image

4.创建库

image
image

5.创建表

image
image

可视化软件内,也可以选择SQL语句编辑,一些代码,可视化软件完成不了时,可以自己使用,可视化软件提供的SQL语句编辑。

image

6.重新编辑表字段设置

image

7.编写表数据

image

8.创建外键
1.外键设置 Foreign Keys
2.设置填写关联信息与被关联信息
3.先刷新设置的外键,在填写出对应的被关联表的设置的外键id,必须对应数据,不对应报错。

注:
	如果想要把主键关联id,设置成不重复id,需要在表内编辑,选择sql语句手写自行编辑代码,该可视化软件无该快捷键。

image
1
image
2
image

3
image

9.图形化当前库下面所有的表关系

image
image

10.Query编辑SQL语句

image

11.使用可视化软件 将MySQL中SQL文件导出到本地

image

12.使用可视化软件,将本地SQL文件导入到MySQL内

image

三:使用可视化软件实现(MySQL多表查询)

1.做题思路
写多表查询题跟写代码是一样的 先写思路再写sql
不要想着一次性写完 写一点查一点再写一点

学生--成绩--课程--老师

image

2.查询所有的课程的名称以及对应的任课老师姓名
1、查询所有的课程的名称以及对应的任课老师姓名
1.先明确需要用到几张表  老师表与课程表
2.查询的结果也必须来源于两种表

步骤1 先连表
SELECT course.cname,teacher.tname FROM course INNER JOIN teacher ON course.teacher_id = teacher.tid;

image

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;

image

# 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);
posted @ 2022-01-28 21:13  AlexEvans  阅读(1364)  评论(0编辑  收藏  举报