尛磊孨

导航

Mysql多表查询

1.备份数据:(生成SQL脚本)

进入cmd到c盘根目录

执行语句:

语法:mysql 用户名 密码 数据库 > 脚本路径与名称

mysqldump -uroot -proot mydb > c:\mydb1.sql

2.恢复数据:

1.我们于进入cmd,连接数据库
mysql -uroot -proot

2.执行脚本:

语法: source 生成和脚本的路径
use 数据库名;
source c:\mydb1.sql

3.在dos命令下直接导入:


语法: mysql 用户名 密码 数据库 < 脚本路径与名称
mysql -uroot proot mydb<c:\mydb1.sql

多表查询:

多表查询有如下几种:
合并结果集;
连接查询
内连接
外连接
左外连接
右外连接
全外连接(MySQL不支持)
自然连接
子查询

-----合并结果集:
---作用:合并结果集就是把两个select语句的查询结果合并到一起
----要求:被合并的两个结果:列数、列类型必须相同。
-----创建表
create table t1(
id int,

name char(4)
);

insert into t1 values(1,'a');
insert into t1 values(2,'b');
insert into t1 values(3,'c');
insert into t1 values(4,'d');
insert into t1 values(5,'e');
select * from t1;

create table t2(
id int,

name char(4)
);

insert into t2 values(4,'d');
insert into t2 values(5,'e');
insert into t2 values(6,'f');
insert into t2 values(7,'g');
insert into t2 values(8,'h');
select * from t1;
select * from t2;

-----union 合并结果后把相同的数据去除

select * from t1 union select * from t2;

------union all 合并结果后所有数据出现

select * from t1 union all select * from t2;

-----------连接查询:

select * from t1,t2;

-----
------使用主外键关系做为条件来去除无用信息

select * from emp,dept where emp.deptno=dept.deptno;

----查询其中列信息
select emp.ename,emp.sal,dept.deptno from emp,dept where emp.deptno=dept.deptno;

----- 使用别名:
select a.ename,a.sal,b.deptno from emp as a,dept as b where a.deptno=b.deptno;

-----标准Sql 语句内连接

select * from emp as e inner join dept as d on e.deptno=d.deptno;

外连接
----外连接的特点:查询出的结果存在不满足条件的可能。
-----左链接

--创建产品表
create table 产品
(
产品编号 int not null,
产品名称 varchar(20) not null
);

------创建产品销量表

create table 产品销量(
产品编号 int not null,
销量 int

);

---左连接-

select * from 产品 left outer join 产品销量 on 产品.产品编号=产品销量.产品编号


-----右连接
select * from 产品 right outer join 产品销量 on 产品.产品编号=产品销量.产品编号;

子查询

select * from emp;
-----查询工资比scott高的

1.查询scott的月薪
select sal from emp where ename='SCOTT';

2.查处高于scott的月薪

select * from emp where sal >3000;

3.合并语句:

select * from emp where sal >(select sal from emp where ename='SCOTT');

-----工资高于30部门所有人的信息

1.查出30部门所有人工资:

select sal from emp where deptno=30;

2.查询高于30部门所有人工资的员工信息

select * from emp where sal>all (select sal from emp where deptno=30);

----查询工资与scott完全相同的信息

1.查询SCOTT的月薪

select sal from emp where ename='SCOTT';

2.查询工资与scott完全相同的信息

select * from emp where sal in (select sal from emp where ename='SCOTT');

posted on 2018-11-15 09:45  尛磊孨  阅读(198)  评论(0编辑  收藏  举报