数据库视频 第七章

时间很快,但是自己学习的很慢,总结的很潦草,如果有建议,欢迎您伸出援助之手帮助我!

基本连接

使用规则

1、SELECT子句列表中,每个目标列前都要加上基表名称
2、FROM子句应包括所有使用的基表
3、WHERE子句应定义一个同等连接
举例

select a.student_Name ,a.student_Sex ,a.born_Date ,b.class_No ,a.address 
from student1_Info a,class_Info b
where a.class_NO =b.class_No 

内连接

语法

SELECT select list
FROM table1 INNER JOIN table2 [ON join_conditions]
[WHERE search_conditions]
[ORDER BY order_expression]

举例:

select A.class_No ,a.director ,b.student_Name ,b.tele_Number 
from class_Info A inner join student_Info B
on a.class_No =b.class_NO 
where B.student_Sex ='男'

外连接

分类

1、左外连接
2、右外连接
3、全(外)连接

select A.class_No ,a.director ,b.student_Name ,b.tele_Number 
from class_Info A  left/right/all outer join student_Info B
on a.class_No =b.class_NO 

内连接消除与另一个表的任何行不匹配的行,而外连接会返回FROM子句中提到的至少一个表或视图中的所有行,只要这些行符合任何搜索条件。

外连接中参与连接的表有主次之分,以主表的每行数据去匹配从表中的数据行,如果符合连接条件,则直接返回到查询结果中;如果主表中的行在从表中没有找到匹配的行,主表的行仍然保留,并返回到查询结果中,相应的从表中的行中被填上空值后也返回到查询结果中.

交叉连接

交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡儿积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。

语法格式:

SELECT select_list
FROM table1 CROSS JOIN table2
[WHERE search _conditions]
[ORDER BY order_expression]

自连接

把一张表看成两张表,查询两张表中相同的数据/

联合查询

SELECT select_list
FROM table_source
[WHERE search_conditions]
{UNION[ALL]
SELECT select_list
FROM table_source
[WHERE search_condition]}
[ORDER BY order_expression]

注意:
使用UNION查询时,连接的两个结果集必须在其目标列表中右相同数目的表达式,且数据内容尽量保持一致。

扫描二维码关注公众号,回复: 2735706 查看本文章

使用子查询

select a.class_No ,a.result  ,b.student_Name 
from result_Info a,student_Info b
where a.class_No =b.class_NO  
and b.class_NO  in (
select student_ID  from class_Info a,student_Info b
where a.class_No =b.class_NO 
)

xml查询

create table student
(
s_id int,
s_data xml
)

insert into student values(
1,
'<学生信息><姓名>马昭晨</姓名><性别>女</性别>'
)

FOR XML子句

通过FOR XML子句并指定模式可以将从数据库系统的表中检索出来的数据自动表示成XML格式。

EXISTS关键字查询

declare @username varchar(20)
declare @pwd varchar(20)
set @username ='麦迪'
set @pwd ='1'
if exists(select *from student_Info where student_ID =@username and student_Name =@pwd )
print '登录成功'
else    
print '登陆失败'

交查询INTERSECT和差查询EXCEPT

select a.成绩编号, a.分数, b.姓名 
from 成绩信息 a,学生信息 b
where a.学生编号=b.学号   

InTERSECT|except 
select  a.成绩编号,a.分数,A.姓名 from
(
select top 10 a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
where a.学生编号=b.学号 order by a.分数 DESC
) A

结束语:
感谢您的阅读!

猜你喜欢

转载自blog.csdn.net/qizhi666/article/details/81327674