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 @   baimingze  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示