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;
运行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本