1.内连接查询在流通总库的数据库类书的ISBN、书名、作者和出版社信息
1)内连接
合并具有同一列的两个以上的表的行, 结果集中不包含一个表与另一个表不匹配的行
select 字段列表
from 表a inner join 表b
on 关联条件
where 其他字句;
2)外连接
查询所有的数据时,就一定会用到外连接。
a)左外连接:查询满足条件的数据,并且把查询字段中左表的数据全部查询出来
左表 left join 右表 on 查询条件
b)右外连接(同上)
c)满外连接
left join union right join (MySQL不支持full join)
3)模糊查询like通配符"%"和" _"
- %匹配0或多个字符
- _匹配任意1个字符(必须有一个)
例:查询表中姓名中第二个字为“雨”的人员 (三部分:确定部分和其前后)
name like '_雨%'
题1解
select Books.ISBN, bname, author, press
from Books inner join BookInfo
on Books.ISBN = BookInfo
where bname like '数据库%' and batatus = '0';
##1.内连接 2.数据库类 固不可"=" 3.隐含:“在流通总库”##
错因:"ambiguous" 模棱两可的 ISBN——>Books.ISBN或BookInfo.ISBN
2.左外连接查询分类为4的用户的借阅证号、姓名、单位、及其所借图书的编号、借阅日期,结果按照单位名称升序排列。
题目分析:
- 1.涉及Users,Loan两表
- 2.由预期输出可知全部将Users查询数据显示出来,即将Users作为左表
题2解
select Users.loanNo,lname,unitName,bookNo,borrowDate
from Users left join Loan
on Users.loanNo=Loan,loanNo
where classNo='4'
order by unitName;
3.使用子查询查询与借阅证号为“S06102”的用户在同一单位的所有用户的借阅证号和姓名
子查询:“查询里面有查询”
1)比较运算符:=、>、<、>= 、<= 、!= 、<>
2) 用 ANY,SOME,ALL 修饰的比较运算符
3)使用 [NOT] IN 的子查询
- (not) in : (不)在....范围内
- = :精准匹配(一个值)
题目分析
- 子查询:找出该用户所在单位
- 外查询:借阅证号,姓名
题3解
select loanNo,lname
from Users
where unitName in(select unitName
from Users
where loanNo='S06102');