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);
|
|