面试的时候被问到数据库的关联查询,有点懵,现在整理一下。
这里我使用的是mysql数据库进行展示
1. 数据库表格建立与数据导入
CREATE TABLE car_sheet ( id INT NOT NULL, car_name VARCHAR ( 100 ) NOT NULL );
INSERT INTO car_sheet ( id, car_name ) VALUES ( 1, 'baoma' );
INSERT INTO car_sheet ( id, car_name ) VALUES ( 1, 'benchi' );
INSERT INTO car_sheet ( id, car_name ) VALUES ( 2, 'dazhong' );
INSERT INTO car_sheet ( id, car_name ) VALUES ( 2, 'sikeda' );
INSERT INTO car_sheet ( id, car_name ) VALUES ( 3, 'xuefulan' );
CREATE TABLE user_sheet ( id INT NOT NULL, user_name VARCHAR ( 100 ) NOT NULL );
INSERT INTO user_sheet ( id, user_name ) VALUES ( 1, 'xiaohong' );
INSERT INTO user_sheet ( id, user_name ) VALUES ( 2, 'xiaohua' );
INSERT INTO user_sheet ( id, user_name ) VALUES ( 3, 'panghai' );
INSERT INTO user_sheet ( id, user_name ) VALUES ( 4, 'dahai' );
2. 数据库表查询展示
select * from car_sheet;
select * from user_sheet;
3. left join(左关联)查询
3.1 左边表数据条数少于右边表
select * from user_sheet u left join car_sheet c on u.id=c.id ;
这里需要说明一下,就是左关联的时候,左表为主表所有的数据都需要显示,右表只是显示符合条件的数据。
但是这里我们看到左表的数据重复显示了,这就说明了当右表中的多条数据对应左表中的一条数据的时候,左表是会重复来对应右表的。
当左表中的数据在右表中没有对应的时候,左表的数据还是会显示,但是右表区域就会显示null。
3.2 左边表数据条数多于右边表
select * from car_sheet c left join user_sheet u on u.id=c.id ;
如上图所示,我们会发现,右表中的数据如果和左表的数据没有关联的话就不会显示。
4. right join(右连接)查询
与左连接结果相反,参考左连接即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。