多表连接查询

多表连接查询:从多个表中获取数据。如:table1有bookid,bookname,category,而bookname需要从图书信息表中获取数据,category需要从图书类别表中获取数据。

同时,不限制于2个表。

--语法:
table_reference
[inner] join |{left|right} [outer] join
on conditionl_expr

 

通过查看图书信息表和图书类别表,获取图书编号、图书名称、图书类别。

select book_id,book_name,category from bookinfo 

inner join bookcategory on bookinfo.book_category_id = bookcategory.category_id;

 

 

一、内连接:查询表连接时表与表之间匹配的数据行。即:两张表之间数据行匹配时,同时满足on条件才会被筛选出来。

select colunn_list
from t1
[inner] join t2 on join_condition1
[inner] join t3 on join_condition2
...
where where_conditions;

例子:由于图书借阅统计的需要,想要查询未归还图书的图书编号,图书名称,身份证号,姓名,电话,归还日期,是否归还。

分析:

1.涉及到3张表:图书信息表、读者信息表、借阅信息表

2.图书编号在图书信息表、借阅信息表都有

3.身份证号在读者信息表、借阅信息表都有

4.图书名称在图书信息表

5.姓名,电话,归还日期,是否归还,在借阅信息表中

select  borrowinfo.book_id,book_name,borrowinfo.card_id,name,tel,return_date,status

from borrowinfo

inner join bookinfo on borrowinfo.book_id = bookinfo.book_id

inner join readerinfo on borrowinfo.card_id = readerinfo.card_id

where borrowinfo.status = '否';

--book_id存在2个表,需要指出哪一个表
--borrowinfo表,和bookinfo内连接
--borrowinfo表,和readerinfo 内连接

通过起别名,简化sql

select  t1.book_id,book_name,t1.card_id,name,tel,return_date,status

from borrowinfo t1

join bookinfo t2 on t1.book_id = t2.book_id

join readerinfo t3 on t1.card_id = t3.card_id

where t1.status = '否';
--inner join中的inner可省略

二、外连接:查询多个表相关联的行。左(外)连接,显示左表的全部记录,右(外)连接,显示右表的全部记录。

select column_list
from t1
left|right [outer] join t2 on join_condition1;

例子:查询图书类别表中所有类别下,都有哪些图书。

分析:涉及2个表:图书类别表、图书信息表

select book_id ,book_name ,bookcategory from bookcategory t1 

left join bookinfo t2 on  t1.category_id = t2.book_category_id;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值