SQL简介

SQL 类似relational model 已经用了非常久的年份,是一个标准的语言。

是申明性的语言,基于关系代数。

关于SQL术语

SQL语句

下面所有的sql语句基于的relational model都是自学笔记(6)中的大学申请系统

基本select

Table variable

table variable主要影响的是from 语句后面,相当于是对table进行简写,这样可以在where语句中使用。

Union

  • 上面的 as name 是为了将attribute的名字统一,否则sql会自行选取一个当作attribute的名字。
  • 如果是union 后面加 all ,则结果中会有duplicate存在

intersect

Except

上面的sql语句是从Apply中查询申请cs但是没有申请ee的学生的ID

Subqueries in WHERE clause

这是我感觉有点难度的地方,需要结合实际问题好好体会subquery的用法。

subquery是内嵌的,用的正确恰当会非常powerful!

in操作

比如下面的subquery语句,选出major是cs同学的ID和Name,这样的结果就不会有duplicate

如果用下面的sql查询语句,就可能有重复的value,因为某个学生可能申请了很多学校!

duplicate有时候是很重要的 也很tricky,值得我们引起注意!

下面的这个sql查询语句效果等同于之前用的except例子!

exist

老师上课说exist是查询存在不存在(我怎么感觉和in是一码事情)!

网上查了下

当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用。in 和 exists的区别如下:

1、运用情况不同

sql中in适用于子查询得出的结果集记录较少,主查询中的表较大且又有索引的表,。sql中exist适用于外层的主查询记录较少,子查询中的表大,又有索引的时候。

2、驱动顺序不同

IN是先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。exists是以外层表为驱动表,先被访问。

3、对NULL值处理不同。

IN不对NULL进行处理,exists会对NULL值进行处理。

4、底层原理不同

in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。

All

all关键词用来查询subquery的条件是否满足在主查询语句下

比如下面的查询语句,用来查出最高gpa学生(返回学生的名字和gpa)

Subqueries in FROM and SELECT clauses

这节课开始有点难度了,需要仔细看老师的例子。下面的查询语句可以转换成

下面这样 将 subquery放在from中!

The JOIN family of operators

inner join

格式如下:

去掉inner后只剩join,效果同 innter join一样。注意如果直接用","相当于是把两个table做一个cross-product,即笛卡尔积。

natural join

natural join 自动会把相同的attribute合并

老师建议用  table join table using(attribute)的形式形成我们所需要的关系

left outer join

指即便左边的table没有对应的tuple,也会加入到我们的结果中

在上面的例子中,即便student中没有申请,也会加入我们的结果list!

right outer join

和left outer join 类似 只不过换了一个边

full outer join

结合了left和right outer join  可以理解为  left outer join Union right outer join

Aggregation

NULL

Inserting new data (2 methods)

Deleting existing data

Updating existing data

StanfordDB class自学笔记 (7) SQL相关推荐

  1. MySQL自学笔记2--select的5个子句

    MySQL自学笔记 使用的MySQL自带命令客户端,其中具体的操作是在自建的数据库下room303表中进行的,表中的列有:id.name.age.email.tel.salary.riqi.class ...

  2. SpringMVC自学笔记

    SpringMVC自学笔记 视频:BV1aE41167Tu 官方文档:https://docs.spring.io/spring-framework/docs/current/reference/ht ...

  3. 字节跳动大佬的Python自学笔记.pdf

    1. 字节跳动大佬的Python自学笔记 这是我的一个朋友自学资料包,通过这个资料包自学拿到了字节跳动的Offer, 下面是他之前入门学习Python时候的学习资料,非常全面,从Python基础.到w ...

  4. JAVA自学笔记07

    JAVA自学笔记07 1.构造方法 1) 例如:Student s = new Student();//构造方法 System.out.println(s);// Student@e5bbd6 2)功 ...

  5. JAVA自学笔记24

    JAVA自学笔记24 1.能使用同步代码块就使用同步代码块,除非锁对象是this,就可以考虑使用同步方法.静态方法的锁是类的字节码对象. 2.JDK5新特性 1)接口Lock void Lock()/ ...

  6. 怎么用vc采集ni卡数据_SystemLink自学笔记(6):SystemLink架构和数据服务

    1. SystemLink架构和数据服务 1.1. 架构和特点 现在在对SystemLink的功能有了一个大概的了解后,可以进一步从它的整体架构学习这门新技术了.NI官网给出了白皮书,原文是英文资料, ...

  7. MySQL 笔记3 -- SQL 语言

    MySQL 笔记3 – SQL 语言 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 一. SQL语言规范 S ...

  8. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  9. 字节、阿里等大厂的技术如何?看看这些Java程序员的自学笔记

    这份笔记涉及JVM.JAVA集合.JAVA多线程并发.JAVA基础.Spring原理.微服务.Netty与RPC.网络.日志.Kafka.RabbitMQ.Hbase.MongoDB.设计模式.负载均 ...

  10. 深入理解弹性盒布局(fiex-box)——Web前端系列自学笔记

    文章目录 弹性盒布局 弹性盒布局概述 弹性盒布局属性 display flex-flow justify-content align-items order flex align-self 总结 弹性 ...

最新文章

  1. 华为云域名注册_关于域名购买的常识介绍,想建站的必看
  2. 自用 x86 GetProcAddress + GetModuleHandle
  3. Tutorial on Variational AutoEncoders
  4. 大小端模式,stm32采用小端模式
  5. node mysql 事件循环_NodeJs 的 Event loop 事件循环机制详解
  6. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现
  7. day22-面向对象之封装
  8. 美国伯克利大学计算机研究生学几年,美国加州大学伯克利分校计算机CS研究生申请条件一览...
  9. python 近期用到的基础知识汇总(四)
  10. Hadoop Hive
  11. 间接寻址级别不同_「计算机组成原理」:常见的指令寻址方式
  12. Atitit 项目风险管理 目录 1. 技术分险 2 1.1. 全面跟随大公司解决方案 2 1.2. 过度设计 2 1.3. 可读性 扩展性不足 2 1.4. 教条僵化 2 1.5. 技术方案超出了
  13. 单元测试用例编写总结 (白盒测试)
  14. 041创建MDI程序
  15. 计算机相关知识——阻塞和非阻塞,同步和异步等相关概念
  16. MFC OnFileNew OnFileOpen过程分析代码(一)
  17. SQL入门之第十七讲——子查询
  18. 日期相隔月数计算MONTHS_BETWEEN
  19. PCI Express 协议基础
  20. 轻型在线办公—eyeOS

热门文章

  1. 提高 分类器 准确率的几种方法总结
  2. NoSql数据库Redis的在ubuntu下的部署使用
  3. spark sql cache时发现的空字符串问题
  4. jQuery知识点学习整理
  5. QTP自动例子的源码分析--OpenOrder
  6. KDD China技术峰会回顾:大牛云集,教你如何基于大数据 手握人工智能未来
  7. 黄聪:基于jQuery+JSON的省市区三级地区联动
  8. Gradle Guide
  9. arguments.callee 调用自身
  10. 记录一下自己简单的想法