ylbtech-SQL Server:SQL Server-多表的连接与练习(第三方关联表的应用)

SQL Server 多表的连接与练习(第三方关联表的应用)。

1,多表的连接与练习(第三方关联表的应用) 返回顶部
-- =============================================
-- ylb:
-- ylb目的:多表之间的连接,第三方关系的运用
--       练习和使用
-- 13:13 2011/12/7
-- =============================================
USE master
GO

-- Drop the database if it already exists
IF  EXISTS (
 SELECT name
  FROM sys.databases
  WHERE name = N'db'
)
DROP DATABASE db
GO

CREATE DATABASE db
GO
go
use db
go
--1,课程表
create table course
(
 c_no ,) primary key, --编号
 c_name ) not null,  --课程名称
 c_time )  --课时
)
go
--2,学生表
create table stu
(
 s_no ,) primary key, --编号
 s_name ) not null,  --姓名
 age  ) --年龄
)
go
--3,成绩表
create table sco
(
 s_no int not null references stu(s_no), --学生编号
 c_no int not null references course(c_no), --课程编号
 sco int     --成绩
)
go
--联合主键
alter table sco add constraint pk_s_c primary key(s_no,c_no)
go
)
)
)
)
)
)
)
)
select * from course
go
)
)
)
)
)
)
)
)
)
)
)
go
select * from course
select * from stu
go
,,)
,,)
,,)
,,)
go
,,)
,,)
,,)
,,)
go
,,)
,,)
,,)
,,)
go
,,)
,,)
,,)
,,)
go
,,)
,,)
,,)
go
select * from course
select * from stu
select * from sco
go
--一、单表的查询
go
--1、查询年龄最大的三个同学的信息;
--2、在成绩表中,查询课程编号为1号的所有记录

--3、在成绩表中,查询课程编号为1号的纪录,并按成绩降序排序

--4、在成绩表中,查询1号学生的总分,平均分,最高分和最低分,

--5、在成绩表中,查询单科成绩最高的学号,课程编号和成绩

--6、在成绩表中,查询每个学生参加考试的总分及参加考试的数量

--7、在成绩表中,查询每个学生的总分,平均分,最高分,最低分,并在总分降序排序

--8、在成绩表中,查询总分最高的学生的学号,总分

--9、在成绩表中,查询学号为2号的学生的学号,总分,平均分

--10、在成绩表中,查询每一门课程的考试人数,总分,最高分,并按总分升序排序

--二、多表连接查询

--1、查询所有举行考试的课程名称;
select * from course
select * from sco
go
select * from course c inner join sco s
on c.c_no=s.c_no
go
--结果
select distinct c_name from course c inner join sco s
on c.c_no=s.c_no
go
--2、查询所有举行考试的课程名称以及对应的学号和分数;
select c_name,s_no,sco from course c inner join sco s
on c.c_no=s.c_no
go
--3、查询所有参加考试的学生姓名以及其对应的课程编号和分数;
select s_name,c_no,sco from stu st inner join sco s
on st.s_no=s.s_no
go
--4、查询每个参加考试的学生的姓名,考试科目数量,总分,平均分;
select s_name,COUNT(*) '考试科目数量',SUM(sco) '总分',AVG(sco) '平均分'
from stu inner join sco
on stu.s_no=sco.s_no
group by s_name
go
--5、查询总分最高的同学的姓名,和总分
 s_name,SUM(sco) from stu inner join sco
on stu.s_no=sco.s_no
group by s_name
order by SUM(sco) desc

go
--6、查询总分前三名的同学的姓名
 s_name from stu inner join sco
on stu.s_no=sco.s_no
group by s_name
order by SUM(sco) desc
go
--7、查询参加考试的同学的姓名,科目名称及分数;
select s_name,c_name,sco from stu inner join sco
on stu.s_no=sco.s_no
inner join course
on sco.c_no=course.c_no
go
--8、查询 张三同学 的姓名,年龄,课程编号,成绩,及对应的课程名称
select s_name,age,sco.c_no,sco from stu inner join sco
on stu.s_no=sco.s_no
inner join course
on sco.c_no=course.c_no
where s_name='张三'
go
--9、查询 张三同学的姓名参加考试的总分,平均分以及参加考试的数量
select SUM(sco) '总分',AVG(sco) '平均分',COUNT(*) '考试数量' from stu
inner join sco
on stu.s_no=sco.s_no
inner join course
on sco.c_no=course.c_no
where s_name='张三'
go
--10、查询所有学生的姓名,以及其对应的分数;
select s_name,sco from stu
inner join sco on stu.s_no=sco.s_no
go
--11、查询所有的课程名称,以及其对应的学号和成绩;
select c_name,s_no,sco from course
inner join sco on course.c_no=sco.c_no
go
--12、查所有的同学的姓名,其对应的成绩,以及所有课程名称;
select s_name,sco,c_name from stu
inner join sco on stu.s_no=sco.s_no
inner join course on sco.c_no=course.c_no
go
--13、假设,所有同学都参加所有课程的考试,那么总共需要多少份试卷;
select COUNT(*) from course cross join stu

go
--左外连接
select * from stu
left join sco on stu.s_no=sco.s_no
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

ylb:多表的连接与练习(第三方关联表的应用)的更多相关文章

  1. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  2. 7.Mybatis关联表查询(这里主要讲的是一对一和一对多的关联查询)

    在Mybatis中的管理表查询这里主要介绍的是一对一和一对多的关联查询的resultMap的管理配置查询,当然你也可以用包装类来实现.不过这里不说,做关联查询的步骤可以简单的总结为以下的几步: 1.分 ...

  3. Mysql学生管理系统:表的建立,外键一对多,多对多关系,中间关联表的建立

    学生管理系统 管理员注册/登录/注销 注册班级(班级详细信息) 注册学生信息 查看班级信息/查看老师资料 教师注册/注销  查看教师资料  查看学生资料  根据名称/班级/ 查看学生详细信息--支持模 ...

  4. MySQL--表操作(约束条件foreign key关联表 多对1,多对多,1对1)

    一.所有数据都存放于一张表中的弊端:1.表的组织结构复杂不清晰2.浪费空间3.扩展性极差 解决方案:分表a.分表 + foreign key: 有硬性限制(关联表中的关联字段内容必须来自于被关联表), ...

  5. 2017.11.22 mysql数据库实现关联表更新sql语句

    比如有两张表,其中一张表某个字段的值要关联另一张表进行统计,就要用到mysql的update方法,并且left join另一张表进行联合查询. mysql关联表更新统计 sql语句如下: 代码如下 复 ...

  6. CROSS JOIN连接用于生成两张表的笛卡尔集

    将两张表的情况全部列举出来 结果表: 列= 原表列数相加 行= 原表行数相乘     CROSS JOIN连接用于生成两张表的笛卡尔集. 在sql中cross join的使用: 1.返回的记录数为两个 ...

  7. ora-01445:无法从不带保留关键字的表的连接视图中选择ROWID或采样

    系统要创建一个物化试图,用到很多张表,执行的时候报错:   ora-01445:无法从不带保留关键字的表的连接视图中选择ROWID或采样   网上搜了下,有多种原因和解决方法,最终我选择先尝试一下修改 ...

  8. Oracle 表的连接方式(2)-----HASH JOIN的基本机制2

    Hash算法原理 对于什么是Hash算法原理?这个问题有点难度,不是很好说清楚,来做一个比喻吧:我们有很多的小猪,每个的体重都不一样,假设体重分布比较平均(我们考虑到公斤级别),我们按照体重来分,划分 ...

  9. Oracle 表的连接方式(1)-----Nested loop join和 Sort merge join

    关系数据库技术的精髓就是通过关系表进行规范化的数据存储,并通过各种表连接技术和各种类型的索引技术来进行信息的检索和处理. 表的三种关联方式: nested loop:从A表抽一条记录,遍历B表查找匹配 ...

随机推荐

  1. Magento开发常用方法

    这里是我做Magento开发常用到的方法,现在总结出来,后续会把更多有用的方法总结出来. 1.直接操作数据库 查找数据:$read = Mage::getSingleton("core/re ...

  2. AngularJS快速入门指南04:指令

    AngularJS通过指令将HTML属性进行了扩展. AngularJS指令 AngularJS指令是带有ng-前缀的扩展HTML属性. ng-app指令用来初始化AngularJS applicat ...

  3. WordPress MORE+主题‘prettyPhoto’跨站脚本漏洞

    漏洞名称: WordPress MORE+主题‘prettyPhoto’跨站脚本漏洞 CNNVD编号: CNNVD-201310-284 发布时间: 2013-10-23 更新时间: 2013-10- ...

  4. WCF客户端和服务器时间不一致,导致通道建立失败的问题)

    本文转载:http://www.cnblogs.com/bcbr/articles/2288374.html 最近,经常有客户反应,前天还用的好好的系统,今天就不能用了. 考虑到系统近来没有做过改动和 ...

  5. adb shell top

    PID:进程在系统中的ID CPU% - 当前瞬时所以使用CPU占用率 #THR - 程序当前所用的线程数 UID - 运行当前进程的用户id Name - 程序名称android.process.m ...

  6. Error: ORA-16501: the Data Guard broker operation failed ORA-16625: cannot reach database

    在备库上建配置文件 DGMGRL> create configuration 'sharkdbbork' as primary database is 'sharkdb' connect ide ...

  7. Android与js交互实例

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...

  8. dotNet Linux 学习记录 - Jexus寄宿WCF服务

    让WCF运行在Linux上(寄宿于服务器程序) WCF介绍请自行 bing 搜索 使用的开发工具为vs2017,系统为 Ubuntu16.04 服务器软件为Jexus ( 详情请看:  Jexus官网 ...

  9. 【luogu P1471】方差

    https://www.luogu.org/problem/show?pid=1471 一眼就能看出是线段树/树状数组题目了. 求平均不用说,线段树/树状数组维护区间和即可. 方差怎么求?先变换下方差 ...

  10. sql server按符号截取字符串

    http://www.360doc.com/content/12/0626/13/1912775_220523992.shtml