MySQL多表查询、子查询加练习

本文详细介绍了MySQL的多表查询,包括内连接和外连接,并深入讲解了子查询的应用,如单行单列、多行单列及多行多列的查询实例。此外,还提供了丰富的查询练习题,涵盖了员工信息、职务、部门等全面的数据操作。
摘要由CSDN通过智能技术生成

(一)多表查询

01内连接

  • 隐式内连接

SELECT e1.`dept_id`,e1.`Name`,e1.`salary`,d1.`NAME`
FROM   emp e1,
      department d1 
WHERE  e1.dept_id=d1.id;
  • 显式内连接

SELECT emp.id,emp.`Name`,emp.`salary`,emp.`dept_id`,department.`NAME`
FROM  emp INNER JOIN department ON emp.`dept_id`=department.`id`
WHERE emp.`Name`='唐僧';

02外连接

  • 左外连接

INSERT INTO department (NAME) VALUES ('销售部');
SELECT * FROM department;
-- 使用内连接查询
SELECT *
FROM  department d1 INNER JOIN emp e1 ON d1.`id`=e1.`dept_id`;
-- 使用左外连接查询
SELECT *
FROM  department d1 LEFT OUTER JOIN emp e1 ON d1.`id`=e1.`dept_id`; 
  • 右外连接

(二)子查询

#创建部门表
CREATE TABLE department(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20)	
);
INSERT INTO department (NAME) VALUES ('开发部'),('市场部'),('财务部');
SELECT * FROM department;

#创建员工表
CREATE TABLE emp(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	gender VARCHAR(1),
	salary INT,
	join_date DATE,
	dept_id INT,
	CONSTRAINT emp_dept_fk FOREIGN KEY (dept_id) REFERENCES department(id)
);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('孙悟空','男',7200,'2013-02-24',1);
INSERT INTO emp(NAME,gender,salary,join_date,dept_id) VALUES('猪八戒','男 ',3600,'2010-12-02',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值