MySql补充
一、多表查询的方式
内连接查询
SELECT 表1.列, 表2.列
FROM 表1
INNER JOIN 表2 ON 表1.关联列 = 表2.关联列;
左外连接查询 用左外链接左表显示全部信息,同理,右链接也是右表显示全部数据
SELECT 表1.列, 表2.列
FROM 表1
LEFT JOIN 表2 ON 表1.关联列 = 表2.关联列;
右外连接查询
SELECT 表1.列, 表2.列
FROM 表1
RIGHT JOIN 表2 ON 表1.关联列 = 表2.关联列;
笛卡尔积查询(容易出现重复数据)
内连接的简略用法
一对一
其实一对一一张表就可以了
一对多
- 订单与客户:每个订单 (Orders) 可以由一个客户 (Customers) 下单,而一个客户可以有多个订单。
- 产品与类别:多个产品 (Products) 可以归为一个类别 (Categories),而每个类别可以包含多个产品。
- 评论与帖子:多个评论 (Comments) 可以对应到一篇帖子 (Posts),而一篇帖子可以有许多评论。
多对多
- 学生与课程:学生 (Students) 可以选修多门课程 (Courses),每门课程也可以被多位学生选修。
- 标签与文章:一篇文章 (Articles) 可以有多个标签 (Tags),而一个标签可以用于多篇文章。
- 产品与供应商:一个产品可以由多个供应商提供,而一个供应商也可以提供多个产品
二、主键约束与外键约束
三、多表查询之内连接
1.普通内链接
*语法:关键字 ... inner join ... on 条件; *注意: *在inner join关键字之前写表1 *在inner join关键字之后写表2 *on的后面写条件:(表1是dept,表2是emp) dept.did = emp.dno 语句: select * from dept inner join emp on dept.did = emp.dno;
2.隐式内链接(用的最多的)
*语法:select ... from 表1,表2 where 表1.字段 = 表2.字段; *语句:select * from dept,emp where dept.did = emp.dno; *别名:select * from dept d,emp e where d.did = e.dno; *指定字段: select d.dname,e.ename,e.sal from dept d,emp e where d.did = e.dno;