找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
navicat是一款客户端工具:
主要用于链接各个类型的数据,进行操作数据库
通过mysql 的账号然后加上服务器的ip 可以通过远程客户端
工具navicat进行访问操作数据库.


1.检查你当前的mysql user表当中有没有root 的%权限
  需要对应的账号具有远程访问权限
  没有白分号权限
  新建一个:
  grant all privileges on *.* to "root"@"%" identified by
  "123456";
  flush privileges; 新建完成之后刷新;

2.获取服务器的ip地址:ifconfig
  192.168.101.129
3.需要关闭 linux 系统的防火墙
  service iptables stop 关闭防火墙

4.打开navicat 选择链接 选择mysql
       


一,navicat 里面有一个 查询功能 点击查询
点击新建查询---在新建查询当中输入sql语句
选择需要运行sql语句---点击右键选择想要运行
navicat注释:
第一种:前面加#
第二种:全选内容,按Ctrl+/
注释是用来屏蔽不想运行的内容
多表链接查询:多个表组成新的表查询




基本链接 使用where 进行链接的
select * from aa,bb where aa.id = bb.id
基本链接加上条件做筛选:
select name,age from aa,bb where aa.id = bb.id
select * from aa,bb where aa.id = bb.id and age = 17
注意:使用基本链接,两张表共有属性的值才会
显示内容,如果两张表的内容不一致则不会显示

内链接:inner join
select * from aa inner join bb on aa.id=bb.id;

左连接:left join
select * from aa left join bb on aa.id=bb.id;    哪个表在前就以哪个表为主表,显示主表所有数据,附表没有的数据会自动NULL填充

右链接:right join
select * from aa right join bb on aa.id=bb.id;      右边表是主表,显示主表所有数据,附表没有的数据会自动填充NULL

硬链接:union
select * from aa union select * from bb;     将bb表内容追加在aa内容下方





1.列出每个部门的平均收入,以及部门名称
select avg(incoming),dept_name from dept inner join emp on dept.dept=emp.dept2 group by dept_name;
2.求出财务部门的收入总和
select sum(incoming) from dept left join emp on dept.dept=emp.dept2 where dept_name="财务";

3.it技术部入职的员工工号
select sid from dept left join emp on dept.dept=emp.dept2 where dept_name in("IT技术");
4.求出财务部门工资大于2000的员工姓名
select name from dept left join emp on dept.dept=emp.dept2 where dept_name in("财务") and incoming>2000;
5.找出销售部门收入最低的员工入职时间
select worktime_start,min(incoming) from dept left join emp on dept.dept=emp.dept2 where dept_name in("销售");
6.找出年龄小于平均年纪的员工姓名
select name from dept left join emp on dept.dept=emp.dept2 where age<(select avg(age) from emp);
7.列出所有部门收入大于9000的部门名称
select dept_name from dept left join emp on dept.dept=emp.dept2 group by dept_name having sum(incoming)>9000;






1.找出销售部门中年纪最大的员工姓名
select name from dept left join emp on dept.dept=emp.dept2 where dept_name in("销售") group by dept_name having max(age);

2.求出收入最低的员工姓名及所属部门
select name,dept_name from dept left join emp on dept.dept=emp.dept2 order by incoming asc limit 1,1;
select name,dept_name from dept left join emp on dept.dept=emp.dept2 where incoming=(select min(incoming) from emp);

3.求出员工收入小于4000元的员工部门编号及部门名称
select dept,dept_name from dept left join emp on dept.dept=emp.dept2 where incoming<4000;

4.列出每个部门当中收入最高的员工姓名,部门名称,收入,并按照收入降序排序
select name,dept_name,incoming from dept left join emp on dept.dept=emp.dept2 where incoming in(select max(incoming) from dept left join emp on dept.dept=emp.dept2 group by dept_name) order by incoming desc;

5.查询财务部低于平均收入的员工号与员工姓名
select sid,name from dept left join emp on dept.dept=emp.dept2 where dept_name="财务" and incoming<(select avg(incoming) from dept left join emp on dept.dept=emp.dept2);
6.列出部门员工数大于1个人的部门名称
select dept_name from dept left join emp on dept.dept=emp.dept2 group by dept_name having count(dept_name)>1;
7.列出部门员工收入不超过7500 且大于3000的员工年纪,及部门编号
select age,dept from dept left join emp on dept.dept=emp.dept2 where incoming<=7500 and incoming>3000;
8.求出入职于20世纪70年代的员工所属部门名称
select dept_name from dept left join emp on dept.dept=emp.dept2 where worktime_start like "197%";
9.查询出张三所在的部门名称
select dept_name from dept left join emp on dept.dept=emp.dept2 where name="张三";
10.列出每一个部门当中年纪最大的员工姓名,部门名称
select name,dept_name from dept left join emp on dept.dept=emp.dept2 where age in(select max(age) from dept left join emp on dept.dept=emp.dept2 group by dept_name)
11.列出每一个部门员工总收入,及部门名称
select sum(incoming),dept_name from dept left join emp on dept.dept=emp.dept2 group by dept_name;
12.列出员工收入大于7000的员工号,部门名称
select sid,dept_name from dept left join emp on dept.dept=emp.dept2 where incoming>7000;
13.找出那个部门当中还没有员工入职
select dept_name from dept left join emp on dept.dept=emp.dept2 where name is null;
14.先按照部门号大小进行排序,在依据入职时间由早到晚进行排序员工信息
select * from dept left join emp on dept.dept=emp.dept2 order by dept,worktime_start asc;
15.求出工资在 7500 到8500 之间,且员工年纪最大的员工姓名以及部门名称
select name,dept_name from dept left join emp on dept.dept=emp.dept2 where incoming>7500 and incoming<8500 and age=(select max(age) from dept left join emp on dept.dept=emp.dept2);
16.求出财务部门工资最高的员工姓名与员工号
select name,sid from dept left join emp on dept.dept=emp.dept2 where dept_name="财务" and incoming in(select max(incoming) from dept left join emp on dept.dept=emp.dept2 group by dept_name);

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册