mysql图书管理系统(39-48)源代码

-- 八、    多表连接查询

mysql图书管理系统(39-48)源代码_第1张图片mysql图书管理系统(39-48)源代码_第2张图片

内连接 inner join

-- 39、    用条件连接查询每个读者的借书证编号、姓名、类别、可借数量、借期。

SELECT r.借书证编号, r.姓名, c.类别, c.可借数量, c.借期
FROM 读者 r
JOIN 读者类别 c ON r.读者类别编号 = c.读者类别编号;

SELECT r.借书证编号, r.姓名, c.类别, c.可借数量, c.借期
FROM 读者 r
JOIN 读者类别 c ON r.读者类别编号 = c.读者类别编号;

mysql图书管理系统(39-48)源代码_第3张图片

select 借书证编号,姓名,类别,可借数量,借期

from 读者,读者类别

where 读者.读者类别编号=读者类别.读者类别编号;

-- 40、    用条件连接查询“机械工业出版社”图书的借阅信息,包括:图书条码号、书名、出版社、借出日期。

select 图书.图书条码号,书名,出版社,借出日期

from 图书,图书详情,借阅

where 出版社='机械工业出版社' and 图书.图书条码号=借阅.图书条码号 and 图书详情.ISBN=图书.ISBN;

1、 select a.图书条码号,c.书名,c.出版社,b.借出日期 FROM 图书 a JOIN 借阅 b ON b.图书条码号=a.图书条码号 JOIN 图书详
情 c ON c.ISBN=a.ISBN WHERE c.出版社 ="机械工业出版社";

2、select tushu.图书条码号, tuxiang.书名, tuxiang.出版社, jieyue.借出日期
from 图书详情 tuxiang,
     图书 tushu,
     借阅 jieyue
where (tuxiang.ISBN = tushu.ISBN
  and jieyue.图书条码号 = tushu.图书条码号)
  and 出版社 = '机械工业出版社';

-- 41、    用内连接查询读者中有哪些人是教师,显示每个读者的借书证编号、姓名、类别、可借数量、借期。

select a.借书证编号,a.姓名,b.类别,b.可借数量,c.借出日期
FROM 读者 a JOIN 读者类别 b ON b.读者类别编号 = a.读者类别编号
    JOIN 借阅 c ON c. 借书证编号 = a.借书证编号 WHERE b.类别 = '教师';
select a.借书证编号,a.姓名,b.类别,b.可借数量,c.借出日期
FROM 读者 a JOIN 读者类别 b ON b.读者类别编号 = a.读者类别编号
    JOIN 借阅 c ON c. 借书证编号 = a.借书证编号 WHERE b.类别 = '教师';

mysql图书管理系统(39-48)源代码_第4张图片

-- 42、    用内连接查询借阅了“高等数学”的读者姓名、电话、借书证号、可借数量

select 姓名, 电话, a.借书证编号, 可借数量
from 读者类别 b join 读者 c join 借阅 a
    on b.读者类别编号 = c.读者类别编号 and c.借书证编号 = a.借书证编号 and a.图书条码号 in
(select 图书条码号 from 图书 join 图书详情 on 图书.ISBN = 图书详情.ISBN where 图书详情.书名 = '高等数学');
 select a.姓名,a.电话,c.借书证编号,b.可借数量,d.ISBN

   FROM 读者 a

   inner  JOIN 借阅 c ON c.借书证编号=a.借书证编号

   inner  JOIN 图书 d ON d.图书条码号=c.图书条码号

   inner   JOIN 读者类别 b ON b.读者类别编号=a.读者类别编号

     WHERE d.ISBN='964-223-154-3';

mysql图书管理系统(39-48)源代码_第5张图片

-- 43、    用内连接查询“信息工程学院”读者的借阅信息,包括:借书证号、姓名、部门、图书条码号、ISBN、书名、出版社、借出日期。

select a.借书证编号,a.姓名,a.部门,b.图书条码号,b.借出日期,c.ISBN,d.书名,d.出版社

FROM 读者 a

inner JOIN 借阅 b ON b.借书证编号=a.借书证编号

inner JOIN  图书 c ON c.图书条码号=b.图书条码号

inner JOIN 图书详情 d ON d.ISBN=c.ISBN

WHERE a. 部门 ='信息工程学院';


-- 自连接:即将同一个表的不同行连接起来
-- 自连接必须为表指定两个别名,使之在逻辑上成为两张表。
-- 44、    用自连接查询相同姓名读者的信息。

 SELECT * FROM 读者 a JOIN 读者 b ON a.姓名 = b.姓名 AND a.借书证编号 != b.借书证编号;

mysql图书管理系统(39-48)源代码_第6张图片

2、 SELECT * FROM 读者 a JOIN 读者 b ON a.姓名 = b.姓名 ;

mysql图书管理系统(39-48)源代码_第7张图片

-- 外连接
-- 45、    用外连接查询每个读者的个人信息及其借阅的图书条码号和借出日期、归还日期(含未借阅过的读者信息)。

select 读者.*,借阅.图书条码号,借阅.借出日期,借阅.归还日期

from 借阅

right join 读者 on 读者.借书证编号= 借阅.借书证编号;

mysql图书管理系统(39-48)源代码_第8张图片

-- 46、    用外连接查询每个读者借阅图书情况(含未借阅过的读者信息和未被借阅过的图书信息)。

select  读者.借书证编号,姓名,图书.图书条码号,借出日期,归还日期,ISBN
from 读者 left join 借阅  on 读者.借书证编号=借阅.借书证编号
         left join 图书 on 图书.图书条码号=借阅.图书条码号
union
select  读者.借书证编号,姓名,图书.图书条码号,借出日期,归还日期,ISBN
from 读者 right join 借阅  on 读者.借书证编号=借阅.借书证编号
right join 图书 on 图书.图书条码号=借阅.图书条码号;

mysql图书管理系统(39-48)源代码_第9张图片

-- 完全连接
-- 47、    用交叉连接查询所有读者可能的借阅情况。

SELECT *
FROM 读者 , 借阅 ;

--  UNION联合查询(并):查询结果的结构一致时可将两个查询进行并(UNION)操作。要求查询属性列的数目和顺序都必须相同,对应属性列的数据类型兼容。
-- 48、    查询借阅了0000001或0000019的读者的姓名,不包含重复的记录行。
 

select distinct 姓名 from 读者 left join 借阅 on 读者.借书证编号 = 借阅.借书证编号 where 图书条码号 = '0000001'

union

select 姓名 from 读者 left join 借阅 on 读者.借书证编号 = 借阅.借书证编号 where 图书条码号 = '0000019';

你可能感兴趣的:(MySQL数据库,mysql,数据库)