navicat 工具

一、navicat 是连接工具(可视化工具)

navicat 介绍 :Navicat是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL,创建、管理和维护数据库

1、下载安装包rar

2、解压navicat压缩包

3、进入navicat  for   mysql文件夹

一般注册密钥会在文件夹里

4、点击exe安装

5、输入密钥:

NAVH-WK6A-DMVK-DKW3

6、跳转到主界面

7、创建快捷方式

右击exe发送到桌面快捷方式

8、连接:pi地址:192.168.10.128

IP在服务器输入ifconfig查询

1.点击连接:填写连接参数 

连接名自定义,建议写IP好找。端口号3306,。数据库账号密码。

2.点击连接:出现报错原因:

1、防火墙是否关闭:service  iptables  stop

2、数据库是否开启:service mysqld start

3、数据库的ip地址、账号、密码检查是否正确

4、检查是否授权成功

授权:grant all  privileges  on  *.* to  root@'%' identified by'123456';

刷新权限:flush  privileges ;

设置中文:右击属性: default charset=utf8;(字符集:utf8--UTF-8 unicode 排序规则:utf8_general_ci)

二、建表语句

CREATE table dept(dept1 VARCHAR(6),dept_name VARCHAR(20)) default charset=utf8;

INSERT into dept VALUES ('101','财务');

INSERT into dept VALUES ('102','销售');

INSERT into dept VALUES ('103','IT技术');

INSERT into dept VALUES ('104','行政');

CREATE table emp (sid VARCHAR(6),name VARCHAR(20),age TINYINT(2),woektime_start VARCHAR(10),incoming SMALLINT(10),dept2 VARCHAR(6))default charset=utf8;

insert into emp VALUES ('1789','张三',35,'1980/1/1',4000,'101');

insert into emp VALUES ('1674','李四',32,'1983/4/1',3500,'101');

insert into emp VALUES ('1776','王五',24,'1990/7/1',2000,'101');

insert into emp VALUES ('1568','赵六',57,'1970/10/11',7500,'102');

insert into emp VALUES ('1564','荣七',64,'1963/10/11',8500,'102');

insert into emp VALUES ('1879','牛八',55,'1971/10/20',7300,'103');

insert into emp VALUES ('1880','老九',55,'1971/10/20',8000,'105');

drop table dept ;

drop table emp ;

select * from dept;

select * from emp ;

dept表:部门表

emp表:员工表

部门表:部门编号  ,部门名称

员工表:员工编号,姓名,年龄、工作时间、工资、部门编号

多表

左连接、右连接、内连接、左独有数据、右独有数据

一、分析表

emp表:员工表

员工编号、姓名、年龄、入职时间、工资、部门编号

独有的数据103

dept表:部门表

部门编号、部门名名称

通过相同的列名连接

多表查询:

内连接、左连接、右连接、左独有数据、右独有数据、全外连接

二、多表详解

1、内连接(普通内连接、隐藏内连接)

定义:左边有的数据,右边也有数据,关联起来只显示两个表共有的数据

案例:左表:123   右表124        内连接:显示:左边12,右边12 ,其中3,4不显示

普通内连接:

格式:inner join

select   *  from  表1  INNER JOIN 2  on  表1.关联字段=表2.关联字段 ;

select   *  from  dept  INNER JOIN emp  on  dept.dept1=emp.dept2 ;

隐藏内连接:

格式:

select  *  from   表1,表2   where  表1.关联字段=表2.关联字段;

方法:

select  *  from   dept,emp  where  dept.dept1=emp.dept2;

左连接:left join

以做左表为主(左表全部显示),右表右关联的关联,没有关联就不显示

案例: 左表:123   右表124        内连接:显示:左边123,右边12 ,其中4不显示

格式:

select   *  from  表1  left JOIN 表2 on  表1.关联字段=表2.关联字段 ;

方法:select   *  from  dept  left JOIN emp  on  dept.dept1=emp.dept2 ;

右连接:right  join

以做右表为主(右表全部显示),左表有关联的关联,没有关联就不显示

案例: 左表:123   右表124        内连接:显示:左边12,右边124 ,其中3不显示

格式:

select   *  from  表1  right JOIN 表2 on  表1.关联字段=表2.关联字段 ;

方法:select   *  from  dept  right JOIN emp  on  dept.dept1=emp.dept2 ;

左独有数据:

左表中独有的数据

是在左连接后接条件(接右表的字段为null就可以)

格式:

select   *  from  表1  right JOIN 表2 on  表1.关联字段=表2.关联字段  where   右表字段   is  null;

方法:

select   *  from  dept  left JOIN emp  on  dept.dept1=emp.dept2 where name is  null;

右独有数据:

右表中独有的数据

是在右连接后接条件(接左表的字段为null就可以)

格式:

select   *  from  表1  right JOIN 表2 on  表1.关联字段=表2.关联字段  where   左表字段   is  null;

方法:

select   *  from  dept  right JOIN emp  on  dept.dept1=emp.dept2 where dept1 is  null;

全外连接:(union)

(1)左独有+内连接+右独有

方法:

select   *  from  dept  INNER JOIN emp  on  dept.dept1=emp.dept2 

UNION

select   *  from  dept  left JOIN emp  on  dept.dept1=emp.dept2 where name is  null

UNION

select   *  from  dept right JOIN emp  on  dept.dept1=emp.dept2  where   dept1  is null;

(2)左连接+右独有数据

方法:

select   *  from  dept  left JOIN emp  on  dept.dept1=emp.dept2 

UNION

select   *  from  dept right JOIN emp  on  dept.dept1=emp.dept2  where   dept1  is null;

(3)右连接+左独有数据

方法:

select   *  from  dept right JOIN emp  on  dept.dept1=emp.dept2 

UNION

select   *  from  dept  left JOIN emp  on  dept.dept1=emp.dept2 where name is  null;

=========================

练习:

(1)列出每个部门的平均收入及部门名称; 

结果:avg(incoming)emp表,dept_name  dept表

条件:  group  by  dept_name

语句:

select  avg(incoming),dept_name  from  dept a left  JOIN

emp b  on  a.dept1=b.dept2 group  by  dept_name

2.财务部门的收入总和; 

结果:sum(incoming)

条件:dept_name="财务"

方法1:

select sum(incoming)  from dept a  INNER JOIN  emp  b on  a.dept1=b.dept2 where  dept_name="财务"

方法2:

select  sum(incoming) from  emp  where dept2=(select  dept1  from dept  where  dept_name="财务")

3.It技术部入职员工的员工号

结果:sid

条件:dept_name="IT技术"

select  sid  from   dept a  INNER JOIN  emp b  on a.dept1=b.dept2

where  dept_name="IT技术"

子查询:

(一)

定义:一个查询嵌套另一查询

(二)分类

1、标量子查询(一行一列)

2、列子查询(一列值)

3、行子查询(一行值)

4、表子查询(一个表)

(三)实操

1、标量子查询(一行一列)

案例:财务部门的收入总和; 

步骤:

a、将财务部门的编号求出在dept中,

b、根据编号在到emp找通过收入总和

方法:

select  sum(incoming)  from  emp  where  dept2=(select  dept1  from dept  where  dept_name="财务")

2、列子查询(一列值)

求出销售和财务的收入总和?

方法

select  sum(incoming)  from  emp  where  dept2 in(select  dept1  from dept  where  dept_name="财务" or dept_name="销售" )

条件是一列值

3、行子查询(一行值)

条件是一行值:(一行多列)

语句:

select  age,incoming,dept2  from  emp where  name="张三";

select * from emp where (age,incoming,dept2)in (select  age,incoming,dept2  from  emp where  name="张三")

以上三种都是接在where  后面

4、表子查询(一个表)

一般接from后面

求出来的条件是一个表

案例:

select  SUM(s.incoming) from (select   *  from  dept  INNER JOIN emp  on  dept.dept1=emp.dept2 where  dept_name="财务") as s

求出每个部门最大年龄的姓名和部门编号?

select  name,dept_name  from dept  INNER JOIN emp  on dept.dept1=emp.dept2 where (age,dept_name) in(select   max(age),dept_name  from  dept  INNER JOIN emp  on  dept.dept1=emp.dept2 group  by   dept_name)

1、求财务部门最低工资的员工姓名;

方法:

select  min(incoming)  from  emp where dept2=(select dept1 from dept  where  dept_name="财务");

 2、找出销售部门中年纪最大的员工的姓名

select  name  from  dept INNER JOIN  emp on dept.dept1=

emp.dept2 where  age=(select  max(age)  from  emp where dept2=(select dept1 from dept  where  dept_name="销售"))and dept_name="销售";

3.查找张三所在的部门名称;

结果:dept_name

条件:name=张三

Select dept_name  from dept  where dept1=(select  dept2  from  emp  where  name="张三")

问题:

  1. 讲下左连接和右连接的区别?

  2. 子查询

  3. 什么叫子查询

  4. 排序

  5. 分组

  6. 表3-5行 limit  2,3

  7. 找出姓张的同学 like“张%”

  8. 修改男生=60 改成80分

  9. 建一个学生表  id  ,name

  10. 插入数据

  11. 添加表字段  sex

  12. 创建一个库dcs

  13. sql脚本,还原

  14. 常用的sql函数

  15. 数据定义?

  16. 什么是数据库? 是存放数据的电子仓库。以某种方式存储百万条,上亿条数据,供多个用户访问共享。

  17. 函数去重

Select DISTINCT(dept_name),dept1 from dept inner join emp on dept.dept1=emp.dept2 where incoming<4000;

常见的关系型数据库软件:

1.db2 IBM公司

2.oracle 甲骨文公司

3.mysql     oracle 公司

4、sql  server

常见的非关系型数据库软件:

1.hbase(列模型)

2.redis(键值对模型)        #电商类的系统用的特别多 ,缓存方式

3.mongodb(文档类模型)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值