MySql表连接

前言

这篇文章我们讲一下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

效果:把连个表中的数据全差出来
MySql表连接

外链接(左外链接,右外链接)

关键字

  • left join
  • right join

详解
外连接包含左右连接
左连接的结果是除了匹配条件的数据还包含左边表中的所有数据
右连接的结果是除了匹配条件的数据还包含右边表中的所有数据

左连接

查询语句

SELECT m.mvname,tname FROM movice m LEFT JOIN TYPE t ON m.mvtype=t.tid AND m.mvid=2

效果
MySql表连接

左连接

查询语句

SELECT m.mvname,tname FROM movice m RIGHT JOIN TYPE t ON m.mvtype=t.tid AND m.mvid=2

效果
MySql表连接

Mysql别名

使用MySQL别名来提高查询的可读性。
MySQL支持两种别名,称为列别名和表别名。
两种方式:as 关键字和 空格

Mysql的执行顺序

  1. from
  2. join
  3. on
  4. where
  5. group by(开始可以使用select的别名,后面的也行)
  6. avg,sum…
  7. having
  8. select
  9. distinct
  10. order by
  11. 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

上一篇:jstack处理Java中CPU100%的思路流程


下一篇:Extjs4 Combobox 联动始终出现loading错误的解决的方法