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) # 外键,关联部门表(部门表的主键)
);

猜你喜欢

转载自blog.csdn.net/mollen/article/details/82389940