MySQL数据库基础操作练习(二)连接查询

MySQL数据库基础操作练习(二)连接查询

数据导入
打开数据库连接,右键——>运行SQL文件,选择SQL文件导入,出现
在这里插入图片描述
时,点击关闭,如果选择“开始”,会重新运行该SQL文件。

1、多表连接
连接查询:查询字段来自多张表
select 字段1,字段2
from 表1,表2
where条件
1)等值连接查询
特点:表的先后顺序没有要求;至少需要n-1个连接条件;可以使用别名,防止歧义;可以添加分组、排序、筛选
例如:

select name,age from information,garde  //从information、grade表中查询name、age
where information.id=garde.id  //两张表连接,n-1个条件
--为两张表分别起了一个别名,提高语句简洁度和效率
--防止歧义,该例中两张表都有id字段,使用i.id   g.id 避免歧义
select name,age from information i,garde g
where i.id=g.id     
select name,age from information i,garde g
where i.id=g.id 
--添加筛选条件
and tall>160  
--分组
group by sex
--排序
order by i.grade DESC

2)非等值连接查询
两张表没有相同项或者相同项不能使用
使用between and 连接

SELECT salary,grade_level
FROM employees e,job_grades g
WHERE e.`salary` BETWEEN g.`lowest_sal` AND g.`highest_sal`;

2、内连接、外连接
1)内连接
使用join on 连接
select 字段1,字段2 from 表12
join 表2 on 条件

效果跟等值连接一样;表的位置可以互换;可以起别名;可以添加筛选分组排序;至少n-1个条件

select name,age from information i
join garde g on i.id=g.id 

2)外连接
select 字段1,字段2 from 表1
left(或者right) join 表2
on 条件

查询结果:内连接的结果+主表中有但从表没有的记录(从表的字段用null填充)
左连接与右连接区别:左连接左边是主表,右连接右边是主表
查询的字段来自哪张表,该张表即为主表
查询主表中有但从表中,没有的记录
如:

select name,garde from information i
left join garde g on i.id=g.id
where g.garde>60

3、子查询
嵌套在另一个查询中的查询语句称为子查询,外部的查询称为主查询
select 字段1,字段2 from 表1
where ** in(select 字段1 from 表2)

子查询在括号内;放在条件右侧;先子后主查询顺序

1)单行子查询
结果只有一个,使用单行操作符(> < >= <= = <>)
2)多行子查询
使用多行操作符(any、all、in、not in)
类似俄罗斯套娃,一层套一层
例:
单行子查询

--谁的工资比Abel高
--①先查询Abel的工资
--②查询满足 工资>①的结果
--①
SELECT salary FROM employees WHERE last_name = 'Abel'
--②
SELECT * FROM employees	WHERE salary>SELECT salary FROM employees WHERE last_name = 'Abel'

多行子查询

--查询location_id是1400或1700的部门中的所有员工姓名
--①查询location_id是1400跟1700的部门编号
--查询部门编号满足①的结果的所有员工的姓名
--①
SELECT department_id FROM departments WHERE location_id IN(1400,1700)
--②
SELECT last_name FROM employees WHERE department_id IN(SELECT department_id FROM departments WHERE location_id IN(1400,1700))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值