2.SQL语言进阶
0.实验数据
表1.course表
表2.student表
表3.sc表
1.SQL连接
- 内连接
- select * from student,sc where student.sno=sc.sno;//相等连接,也可以用!=,<=等来连接
- select * from student inner join sc using(sno);
- select * from student inner join sc on student.sno=sc.sno;
- 外连接
- 左外连接: select * from student left join using(sno);
- 右外连接: select * from student right join using(sno);
- 全连接:mysql 貌似不支持,不过可以使用union进行间接实现
- 笛卡尔积
- select * from student,sc;
- 自连接
- student表自己连接自己
- select * from student s1,student s2 where s1.sno=s2.sno;//为表创建了两个别名
2.子查询
- 子查询的分类
- 1.嵌套子查询----先执行子查询把结果返回给,父查询
- 2.相关联子查询--父查询把数据按照行一次传递给子查询,子查询判定是否满足子查询条件后,返回boolean值给父查询,父查询决定是否保留这条数据,直到所有的数据处理完毕。(比较难)
- 嵌套子查询
- 1.Books表,列:ClassID,bookName,publish,price
- Q1:查询所有价格高于平均价格的图书名,出版社和价格
- select bookName,publish,price from Books where price>(select avg(price) from books);
- 2.sc表,列:sno(学号),cno(课程号),grade
- Q1:查询只有一人选修的课程
- select cno from sc group by cno having count(*)=1;
- 相关联子查询
- 1.sc表,列:sno(学号),cno(课程号),grade
- Q1:查询只有一人选修的课程(相关子查询-理解为没有和别人选同一门的课程)
- select cno from sc scx where cno not in (select cno from sc where sno!=scx.sno);
- 2.sc表,列:sno(学号),cno(课程号),grade
Q2:查询每个科目的前两名
- select * from sc where (select count(*) from sc scx where sc.cno=cno and grade>sc.grade)<2 order by cno,sno;
- In与Exists选择
- 1.select * from A where id in (select id from B)
- 当B表的数据集必须小于A表的数据集时,用in优于exists
- 2.select * from A where exists (select 1 from B where B.id = A.id)
- 当A表的数据集系小于B表的数据集时,用exists优于in。
参考文献
http://blog.csdn.net/ghyg525/article/details/28272007
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Courier New"; color: #006699; background-color: #ffffff }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Courier New"; background-color: #ffffff }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Tahoma }
span.s1 { }
span.s2 { color: #000000 }
span.s3 { color: #808080 }
span.s4 { color: #006699 }
table.t1 { border-collapse: collapse }
td.td1 { width: 627.5px }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Courier New"; background-color: #ffffff }
span.s1 { color: #006699 }
span.s2 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Tahoma }
span.s1 { }
2.SQL语言进阶的更多相关文章
- SQL Server 进阶 01 数据库的设计
SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...
- SODBASE CEP学习(四)续:类SQL语言EPL与Storm或jStorm集成-使用分布式缓存
流式计算在一些情况下会用到分布式缓存,从而实现(1)想把统计或计算结果保存在分布缓存中.供其他模块或其他系统调用. (2)某一滑动时间窗体上计数.比如实时统计1小时每一个Cookie的訪问量.实时统计 ...
- 2016 - 3 - 12 SQLite的学习之SQL语言入门
1.SQL语句的特点: 1.1 不区分大小写 1.2 每条语句以;结尾 2.SQL语句中常用关键字: select,insert,update,from,create,where,desc,order ...
- SQL 语言 - 数据库系统原理
SQL 发展历程 从 1970 年美国 IBM 研究中心的 E.F.Codd 发表论文到 1974 年 Boyce 和 Chamberlin 把 SQUARE 语言改为 SEQUEL 语言,到现在的 ...
- SQL语言
SQL语言的分类:DDL DML DQL DCL SQL中的操作无非就是(增删改查) DDL:Data Query Language,数据查询语言! 主要是用来定义和维护数据库的各种操作对象,比如库. ...
- SQL语言分类
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHER ...
- SQL语言概述
功能概述 DDL,数据库定义语言,创建,修改,删除数据库,表,视图,索引,约束条件等 DML,数据库操纵语言,对数据库中的数据进行增,删,改,查 DCL,数据库定义语言,对数据库总数据的访问设置权限 ...
- MySQL中的SQL语言
从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 :CRE ...
- atitit.java解析sql语言解析器解释器的实现
atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...
随机推荐
- 支付宝WAP支付接口开发
支付宝WAP支付接口开发 因项目需要,要增加支付宝手机网站支付功能,找了支付宝的样例代码和接口说明,折腾两天搞定,谨以此文作为这两天摸索的总结.由于公司有自己的支付接口,并不直接使用这个接口,所以晚些 ...
- libusb 开发者指南-牛胜超(转)
源:libusb 开发者指南 libusb Developers Guidelibusb 开发者指南 原作者:Johannes Erdfelt翻译者:牛胜超 Table of Contents目录 P ...
- wordpress-标签
来源1:http://www.graphicrating.com/2009/01/18/my-wordpress-cheat-sheet/ 来源2:http://www.cnblogs.com/asq ...
- UVa 573 - The Snail
题目大意:有一只蜗牛位于深一个深度为h米的井底,它白天向上爬u米,晚上向下滑d米,由于疲劳原因,蜗牛白天爬的高度会比上一天少f%(总是相对于第一天),如果白天爬的高度小于0,那么这天它就不再向上爬,问 ...
- Bzoj 1936
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1396 题解:待更 代码:待更 开始时间: 结束时间:
- 在DataGrid中实现Button Command
Command="{Binding butCommand}"会默认查找ListViewItems中对象的属性,而你的ListViewItems中对象应该不包括butCommand属 ...
- Leetcode 181. Employees Earning More Than Their Managers
The Employee table holds all employees including their managers. Every employee has an Id, and there ...
- Intent的属性及Intent-filter配置——Action、Category属性与intent-filter属性
Intent的Action.Category属性都是一个普通的字符串,其中Action代表该Intent所要完成的一个抽象“动作”,而Category则用于为Action增加额外的附加列别的信息.通常 ...
- html中object标签详解
定义和用法 object标签定义一个嵌入的对象.请使用此元素向您的 XHTML 页面添加多媒体.此元素允许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操作数据的代码. &l ...
- 利用PHPCMS V9站群功能建立分站
hosts文件就在C:\Windows\system32\drivers\etc\hosts下 用一套CMS软件系统,做多个网站,统一管理,用户可以互通,这就是所谓的站群功能.这对于运营和维护都能节省 ...