ESSAY / NOTE

mysql:select join demo

select join demo 举个例子 -- 学生表 CREATE TABLE student ( SNO INT, SNAME VARCHAR(10), ICNO INT ); -- 食堂IC卡表 CREATE TABLE IC ( ICNO INT, ICNAME VARCHAR(10), ICMoney INT ); INSERT INTO student VALUES(1, '张三', 1 ); INSERT INTO student VALUES(2, '李四', 2 ); INSERT INTO student VALUES(3, '王五', NULL); INSERT INTO IC VALUES(1, '张三', 500 ); INSERT INTO IC VALUES(2, '李四', 250 ); INSERT INTO IC VALUES(3, '赵老师', 600); 假如我要查询, 学生的 饭卡的余额情况。 使用 内连接 SELECT student.SNO, student.SNAME, IC.ICNAME, IC.ICMoney FROM student JOIN IC ON (student.ICNO = IC.ICNO); +------+-------+--------+---------+ | SNO | SNAME | ICNAME | ICMoney | +------+-------+--------+---------+ | 1 | 张三 | 张三 | 500 | | 2 | 李四 | 李四 | 250 | +------+-------+--------+---------+ 2 rows in set (0.00 sec) 假如我要查询, 学生的 饭卡的余额情况。 同时, 那么 没有办理饭卡的 (也就是 不在食堂吃饭的 ) 我也要查询出来。 使用 外连接 SELECT student.SNO, student.SNAME, IC.ICNAME, IC.ICMoney FROM student LEFT JOIN IC ON (student.ICNO = IC.ICNO); +------+-------+--------+---------+ | SNO | SNAME | ICNAME | ICMoney | +------+-------+--------+---------+ | 1 | 张三 | 张三 | 500 | | 2 | 李四 | 李四 | 250 | | 3 | 王五 | NULL | NULL | +------+-------+--------+---------+ 3 rows in set (0.00 sec) 又例如, 我要查询, 食堂饭卡的余额情况。 无论是 老师, 还是学生。 使用 外连接 mysql> SELECT -> student.SNO, -> student.SNAME, -> IC.ICNAME, -> IC.ICMoney -> FROM -> student -> RIGHT JOIN IC -> ON (student.ICNO = IC.ICNO); +------+-------+--------+---------+ | SNO | SNAME | ICNAME | ICMoney | +------+-------+--------+---------+ | 1 | 张三 | 张三 | 500 | | 2 | 李四 | 李四 | 250 | | NULL | NULL | 赵老师 | 600 | +------+-------+--------+---------+ 3 rows in set (0.00 sec)