第三节
掌握数据库操作
之查询
大数据系列课程
学习目标
掌握数据库查询的
SQL
命令(
select
)
单表查询
多表查询
单表查询
不加条件的查询:
查询特定字段,语法
•
select <
字段
1
,字段
2
,
...> from <
表名
>;
示例
•
查询会员表里所有用户的手机号码和可用余额
•
select MobilePhone,LeaveAmount from member;
查询所有字段
语法
•
select * from <
表名
>;
示例
•
查询会员表的所有用户信息。
•
select * from member;
单表查询
按条件进行查询:
多个条件需要同时成立,语法
•
select … from <
表名
> where
表达式
A and
表达式
B and … and
表达式
N;
示例
•
查询会员表中类型为普通用户、且可用余额大于
100000
的
用户
•
select * from member where type=1 and LeaveAmount>100000.00
多个条件不需要同时成立,只需满足其中一个或多个,语法
•
select … from
表名
where
字段
a =
值
a or
字段
b=
值
b or
字段
c=
值
c
;
示例
•
查询会员表里用户
id
为
1
或者
2
或用户名为
Nick
的用户信息
•
select * from member where id=1 or id=2 or RegName=‘Nick'
思考
问题一:
对于不同类型的信息该怎么存储呢?是放一个表呢,还是不同类型数据放不同表
。
(
结合仓库去理解
)
放在一个表的缺点:
•
字段过多
•
难以维护
•
表数据庞大
•
数据冗余,重复数据多
问题二:
既然不同类型的数据放在了不同的表,那原本有联系的数据怎么保持原有的联系
呢?
解决方案:
•
设计表的时候两个表之间维持一个关联即可。
多表查询
member
表中的
id
字段与
loan
表(借款标)的借款人编号
MemberID
构
成一个关联,如下图所示:
多表查询
语法:
•
select
要查询的字段
from
表
1,
表
2…
where
关联条件和过滤条件
示例
•
查询
Id
为
1001
的用户的用户名、手机号码、可用余额以及该用户的借
款项目的编号、标题、借款金额
分析和步骤:
•
涉及表:用户表
(member)
、
项目
表
(loan)
;
•
关联关系:
member.Id= loan
.
MemberId
•
过滤条件:
member.Id = 1001
•
查询的字段:会员表
(RegName
,
mobilephone
,
LeaveAmount)
,
项目表
(id
,
Title
,
Amount)
对查询结果进行排序(
order by
)
对结果集进行排序
语法
•
select … from … order by
字段
A asc(desc); select … from … order by
字
段
A asc(desc),
字段
B asc(desc)…;
•
asc
:升序
---ascend
默认的
•
desc
:降序
--descend --
需要写
示例
•
查询用户表里所有普通用户信息,按可用余额升序、降序排列。
•
select * from member where type=1 order by LeaveAmount;
•
select * from member where type=1 order by LeaveAmount desc;
连接查询
语法
INNER JOIN
内连接
又称为等值连接,获取两个表中字段匹配关系的记录
--
关联查询
LEFT JOIN
左连接
(左外链接)
读取左表全部数据,即使右表没有关联数据,左连接会从
左表产生一套完整的记录,和右表匹配的记录。如果右边
没有匹配记录,则右侧结果集字段为null
RIGHT JOIN
右连接
(右外链接)
以右表为基础,与LEFT JOIN相反
--
少
案例
id
u_name
age
1
周杰伦
36
2
胡歌
33
3
吴亦凡
22
4
刘德华
46
5
张杰
35
6
王俊凯
19
7
王源
18
8
易烊千玺
17
9
邓超
25
id
u_id
lover_name
1
1
昆凌
2
4
吴丽倩
3
5
谢娜
4
9
孙俪
表
A
用户信息表
user
表
B
用户对象信息表
user_lover
根据表
A
,表
B
写出以下
SQL
的查询结果集
作业
为管理业务培训信息,建立
3
个表
S(S#,SN,SD,SA)S#,SN,SD,SA
分别代表学号,学员姓名,所属单位,学员年龄
C(C#,CN)C#,CN
分别代表课程编号,课程名称
SCC(S#,C#,G) S#,C#,G
分别代表学号,所选的课程编号,学习成绩
1.
查询选修课程名称为’税收基础’的学员学号和姓名
?
2.
查询选修课程编号为’
C2’
的学员姓名和所属单位
?
谢谢!