前言
这篇文章我们讲一下MySql数据库的,内连接,外链接(左连接,右连接)和别名的使用
数据库
主表
CREATE TABLE movice(
mvid INT PRIMARY KEY AUTO_INCREMENT,
mvname VARCHAR(100) NOT NULL,
mvtype INT NOT NULL
)
INSERT INTO movice VALUES(DEFAULT,'熊出没原始森林',1);
INSERT INTO movice VALUES(DEFAULT,'反贪风暴',2);
INSERT INTO movice VALUES(DEFAULT,'喜剧之王',3);
INSERT INTO movice VALUES(DEFAULT,'没有绝对安全的系统',4);
字表
CREATE TABLE TYPE(
tid INT PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(40) NOT NULL
)
INSERT INTO TYPE VALUES(DEFAULT,'国漫');
INSERT INTO TYPE VALUES(DEFAULT,'犯罪');
INSERT INTO TYPE VALUES(DEFAULT,'喜剧');
INSERT INTO TYPE VALUES(DEFAULT,'科技');
添加外键约束
ALTER TABLE movice ADD CONSTRAINT fk_mvid_tid FOREIGN KEY(mvid) REFERENCES TYPE(tid)
内连接(INNER JOIN)
关键字:
- INNER JOIN
- ON
查询语句:
SELECT * FROM movice m INNER JOIN TYPE t ON m.mvtype=t.tid
效果:把连个表中的数据全差出来
外链接(左外链接,右外链接)
关键字:
- left join
- right join
详解:
外连接包含左右连接
左连接的结果是除了匹配条件的数据还包含左边表中的所有数据
右连接的结果是除了匹配条件的数据还包含右边表中的所有数据
左连接
查询语句:
SELECT m.mvname,tname FROM movice m LEFT JOIN TYPE t ON m.mvtype=t.tid AND m.mvid=2
效果:
左连接
查询语句:
SELECT m.mvname,tname FROM movice m RIGHT JOIN TYPE t ON m.mvtype=t.tid AND m.mvid=2
效果:
Mysql别名
使用MySQL别名来提高查询的可读性。
MySQL支持两种别名,称为列别名和表别名。
两种方式:as 关键字和 空格
Mysql的执行顺序
- from
- join
- on
- where
- group by(开始可以使用select的别名,后面的也行)
- avg,sum…
- having
- select
- distinct
- order by
- LIMIT
1.列别名
SELECT m.mvname AS mname,tname FROM movice m INNER JOIN TYPE t ON m.mvtype=t.tid
我们给 mvname添加了一个别名,输出后原表的 name 字段变为现在的别名字段 mname;
2. 表别名
SELECT m.mvname AS mname,tname FROM movice m INNER JOIN TYPE t ON m.mvtype=t.tid
我们给 movice 表起了个别名叫m,给TYPE 表起了个别名叫t。