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语言进阶的更多相关文章

  1. SQL Server 进阶 01 数据库的设计

    SQL Server 进阶 01 数据库的设计 本篇目录 课程内容回顾及介绍 为什么需要规范的数据库设计 设计数据库的步骤 绘制E-R(实体-关系)图 实体-关系模型 如何将E-R图转换为表 数据规范 ...

  2. SODBASE CEP学习(四)续:类SQL语言EPL与Storm或jStorm集成-使用分布式缓存

    流式计算在一些情况下会用到分布式缓存,从而实现(1)想把统计或计算结果保存在分布缓存中.供其他模块或其他系统调用. (2)某一滑动时间窗体上计数.比如实时统计1小时每一个Cookie的訪问量.实时统计 ...

  3. 2016 - 3 - 12 SQLite的学习之SQL语言入门

    1.SQL语句的特点: 1.1 不区分大小写 1.2 每条语句以;结尾 2.SQL语句中常用关键字: select,insert,update,from,create,where,desc,order ...

  4. SQL 语言 - 数据库系统原理

    SQL 发展历程 从 1970 年美国 IBM 研究中心的 E.F.Codd 发表论文到 1974 年 Boyce 和 Chamberlin 把 SQUARE 语言改为 SEQUEL 语言,到现在的 ...

  5. SQL语言

    SQL语言的分类:DDL DML DQL DCL SQL中的操作无非就是(增删改查) DDL:Data Query Language,数据查询语言! 主要是用来定义和维护数据库的各种操作对象,比如库. ...

  6. SQL语言分类

    SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL. 1 数据查询语言DQL数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHER ...

  7. SQL语言概述

    功能概述 DDL,数据库定义语言,创建,修改,删除数据库,表,视图,索引,约束条件等 DML,数据库操纵语言,对数据库中的数据进行增,删,改,查 DCL,数据库定义语言,对数据库总数据的访问设置权限 ...

  8. MySQL中的SQL语言

    从功能上划分,SQL 语言可以分为DDL,DML和DCL三大类.1. DDL(Data Definition Language)数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言 :CRE ...

  9. atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

随机推荐

  1. UIAlertController高级之嵌入其他控件 分类: ios技术 2015-02-02 11:58 96人阅读 评论(0) 收藏

    在编码过程中,我们经常遇到需要这样一个效果,就是弹出框的嵌套; 举个最简单的例子,比如你要选择时间,必然需要一个时间选择器DatePicker.但是这个选择器又是在你点击某按钮时弹出,弹出方式最常见的 ...

  2. angular登录状态检查

    待补充!!!!!!!!!!! 参加链接: http://www.brafox.com/post/2015/javascript/angularjs/angularjs-router-intercept ...

  3. Python中下划线---完全解读

    Python 用下划线作为变量前缀和后缀指定特殊变量 _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核心风格:避免用下划 ...

  4. MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加

    微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MD ...

  5. volatile的理解和使用

    package thread; /** * Created by Administrator on 2017/1/15. */ public class Counter { public volati ...

  6. 1.1.3.托管对象上下文(Core Data 应用程序实践指南)

    管理托管对象的生命周期(lifecycle).还有其它功能:faulting.变更追踪(change tracking).验证(validation)等. faulting:只把用到的那一部分数据从持 ...

  7. php刷新当前页面

    echo "<script language=JavaScript> location.replace(location.href);</script>"; ...

  8. 开篇 Android系统的体系结构

    1.APPLICATIONS (应用程序层) 2.APPLICATION FRAMEWORK(应用程序框架)  android应用程序提供了大量应用程序供开发者使用,当我看开发android应用程序时 ...

  9. lo dash api

    https://lodash.com/docs 用 Lo-Dash 替换 underscore http://segmentfault.com/a/1190000000359484

  10. spring mvc 注解示例

    springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=" ...