SQL-多表操作概述和多表操作-内连接查询

多表操作概述

 数据表

dept

 

 

 emp

 

 

 准备SQL语句

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

INSERT INTO emp VALUES (null,"孙悟空",'',7200.0,"2013-02-24",1);
INSERT INTO emp VALUES (null,"猪八戒",'',3600.0,"2010-12-02",2),(null,"唐僧",'',9000.0,"2008-08-08",2);
INSERT INTO emp VALUES (null,"白骨精",'',5000.0,"2015-10-07",3);
INSERT INTO emp VALUES (null,"蜘蛛精",'',4500.0,"2011-03-14",1);

我们可以使用查询两张表

SQL语句

SELECT * FROM 数据表,数据表;

运行结果

 

 

这种查询称为笛卡尔积 a*b最后得出了数据 dept数据表有3条数据 emp数据表有5条数据 也就是一共出现15条数据

 可以看的出来它的是特别特别冗余 

多表查询就是消除无用的数据

多表查询的分类:

1.内连接查询

2.外连接查询

3.子查询

多表操作-内连接查询

内连接查询

1.隐式内连接:使用where条件消除无用数据

SQL语句

SELECT * FROM 数据表名1,数据表名2 WHERE 数据表名1.字段名=数据表名2.字段

运行结果

 

 还可以使用别名指定字段查询

SQL语句

-- 查询员工的姓名 性别和对应部门姓名
SELECT e.`name`,e.gender,d.name FROM emp e,dept d WHERE e.dept_id=d.id;

运行结果

 

2.显式内连接

语法

SELECT 字段列表 from 表名1 inner join 表名2 on 条件

运行结果

 

  还可以使用别名指定字段查询

SQL语句

SELECT e.name,e.gender,d.name from emp e inner join dept d ON e.dept_id=d.id;

运行结果

posted @ 2022-07-26 17:32  baimingze  阅读(184)  评论(0)    收藏  举报