MySQL数据库操作《下》

一、多表全查(笛卡尔积)

SELECT * FROM emp,dept;	
	
二、内连接
SELECT * FROM emp t1,dept t2 WHERE  t1.dept_id = t2.id;
SELECT * FROM emp t1 (INNER) JOIN  dept t2 ON  t1.dept_id = t2.id;

三、外连接
-- 左连接
SELECT * FROM  emp t1 LEFT  (OUTER) JOIN dept t2 ON t1.dept_id = t2.id;

-- 右连接
SELECT * FROM  emp t1 RIGHT (OUTER) JOIN dept t2 ON t1.dept_id = t2.id;

四、子连接

1、 单行单列:A语句的结果当B语句的条件

-- 查询员工工资小于平均工资的人
SELECT
	 * 
FROM 
	emp 
WHERE 
	emp.`salary` = (SELECT MAX(salary) FROM emp);

2、 多行单列:关键字IN

-- 查询'财务部'和'市场部'所有的员工信息
SELECT
	 * 
FROM 
	emp 
WHERE 
	dept_id 
IN 
	(SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');
	

3、多行多列:采用虚拟表

-- 查询员工入职日期是2011-11-11日之后的员工信息和部门信息
SELECT
	* 
FROM
	dept t1 ,
	(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2  
WHERE
	t1.id = t2.dept_id;
	
五、测试用表
-- 部门表
CREATE TABLE dept(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20)
);
INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');

--  员工表
CREATE TABLE emp (
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10),
	gender CHAR(1),      # 性别
	salary DOUBLE,       # 工资
	join_date DATE,      # 入职日期
	dept_id INT,
	FOREIGN KEY (dept_id) REFERENCES dept(id) # 外键,关联部门表(部门表的主键)
);

你可能感兴趣的:(数据库)