数据库第七章总结

第一节

  • 基本链接*
    基本链接遵循的基本原则:
    1.Select 子句列表中,每个目标列前都要加上基表名称。
    2.From子句应包括所有使用的基表。
    3.Where子句应定义一个同等连接。

第二节

  • 内连接*
    Select select list ’后边跟的就是表中的列名
    From table1 Inner Join table2[ON join conditions] ’inner join 表示两个表连接
    [where search_conditions] ’Where查询
    [Order By order_expression] ’排序

实践:
select A.班级名,A.班级人数,B.姓名,B.联系方式
from 班级信息 A inner join 辅导员信息 B
ON A.辅导员 =B.辅导员编号
where B.性别=‘男’

第三节

  • 左外连接*
    select A.班级名,A.班级人数,B.姓名,B.联系方式
    from 班级信息 A left outer join 辅导员信息 B ’left outer join为左外链接
    ON A.辅导员 =B.辅导员编号 and A.班级人数>90
    where B.性别=‘男’
    ON和where 后边跟的条件有很大的区别。

  • 右外连接*
    注意主表和从表之间的互换
    select A.班级名,A.班级人数,B.姓名,B.联系方式
    from 班级信息 A right outer join 辅导员信息 B ’主表与从表之间的互换
    ON A.辅导员 =B.辅导员编号

第五 节

  • 全连接*
    实践:select a.班级名,a.班级人数,b.姓名,b.联系方式
    from 辅导员信息 b full outer join 班级信息 a ’全链接关键字
    on a.辅导员 =b.辅导员编号

  • 交叉连接*
    不带Where 子句,返回两个连接的两个表所有数据行的笛卡儿积.

  • 自连接*
    实践这个有点懵:select A.班级名,A.班级人数,B.班级名
    from 班级信息 A,班级信息 B
    where A.班级人数=B.班级人数 and A.班级编号 <>B.班级编号 AND A.班级名 =‘经管4班’

第六节

  • 联合查询*
    连接的两个表中的记录时目标列必须相同,数据类型尽量保持相同。不相同的话运行时可能会出现数据类型转换失败等提示。
    实践:
    select A.成绩编号,A.分数,B.姓名
    from 成绩信息 A,学生信息 B
    where A.学生编号=B.学号 AND A.课程编号 =‘1004’ AND A.考试编号 =‘04’
    union
    select ‘’,sum(分数),‘合计’
    from 成绩信息 A,学生信息 B
    where A.学生编号=B.学号 AND A.课程编号 =‘1004’ AND A.考试编号 =‘04’
    union
    select ‘’,avg(分数),‘平均’
    from 成绩信息 A,学生信息 B
    where A.学生编号=B.学号 AND A.课程编号 =‘1004’ AND A.考试编号 =‘04’
    order by 分数

  • 使用子查询*
    实践:
    select A.成绩编号,A.分数,B.姓名
    from 成绩信息 A,学生信息 B
    where A.学生编号=B.学号 AND A.课程编号 =‘1004’ AND A.考试编号 =‘04’
    and A.分数<( ’<换成IN
    select AVG(分数) from 成绩信息 A, 学生信息 B
    where A.学生编号=B.学号 AND A.课程编号 =‘1004’ and A.考试编号=‘04’
    )

  • 嵌套子查询*
    select A.成绩编号,A.分数,B.姓名
    from 成绩信息 A,学生信息 B
    where A.学生编号=B.学号 AND A.课程编号 =‘1004’ AND A.考试编号 =‘04’
    and B.学号 IN(
    select 学号 from 班级信息 A, 学生信息 B
    where A.班级编号=B.所属班级 and A.辅导员 =(
    select 辅导员编号 from 辅导员信息 where 姓名=‘4’
    )
    )

  • XML查询*
    create table student
    (
    S_ID int,
    S_data xml
    )
    insert into student values(
    1,
    ‘<学生信息><姓名>刘倩</姓名><性别>女(/性别)<班级>计算机科学与技术1班</班级>
    <职位>班长</职位></学生信息>’
    )
    select * from student

  • For xml 子句*
    通过FOR XML子句并指定模式可以将从数据库系统的表中检索出来的数据i自动表示成XML格式。
    FOR XML子句的显示模式: RAW模式、AUTO模式、explicit 模式、和path 模式。
    实践:
    select a.班级名,a.班级人数,b.姓名,b.联系方式
    from 班级信息 a,辅导员信息 b
    where a.辅导员=b.辅导员编号
    for xml auto ’标识大的字体是模式

  • EXISTS关键字查询*
    新建查询实践:
    declare @username varchar(20)
    declare @pwd varchar(20)
    set @username=‘101’
    set @pwd =‘田航’
    if exists(select * from 学生信息 where 学号=@username and 姓名=@pwd)
    print ‘登陆成功’
    else
    print’登陆失败’

  • 交查询INTERECT*
    实践:
    select a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
    where a.学生编号=b.学号 and a.课程编号 =1004 and a.考试编号=‘04’
    intersect
    select a.成绩编号,a.分数,A.姓名 from
    (
    select top 10 a.成绩编号,a.分数,b.姓名 from 成绩信息 a,学生信息 b
    where a.学生编号=b.学号 and a.考试编号=‘04’ order by a.分数 desc
    ) A

  • 差查询 EXCEPT*
    实践:
    select a.成绩编号,a.分数,b.姓名
    from 成绩信息 a,学生信息 b
    where a.学生编号=b.学号 and a.课程编号 =1004 and a.考试编号=‘04’

  • Except ’查询关键字*
    select a.成绩编号,a.分数,A.姓名 from
    (
    select top 10 a.成绩编号,a.分数,b.姓名
    from 成绩信息 a,学生信息 b
    where a.学生编号=b.学号 and a.考试编号=‘01’ order by a.分数 desc
    ) A

发布了53 篇原创文章 · 获赞 6 · 访问量 3360

猜你喜欢

转载自blog.csdn.net/weixin_44031029/article/details/97754696