SQL应用题分析

SQL应用题的一般考点:

基本表的查询(单表、多表、嵌入、分组、排序)、向表中插入数据、更新数据、建立视图

关系代数替换sql,使用关系代数来进行查询

基本上就这几点

SQL基本表的插入、更新和建立视图都是死板的,只要记住语句就行

而SQL应用题难点也就在于基本表的查询和使用关系代数

这里分数拿到了,基本上这道大题的分就拿到了

下面我就从这两个方面来进行解题

关系代数:

1、出现“全部”字样需要用除运算

2、遇到数值一般是采用自连接

SQL中:

查询的整体结构如下:

查询分为 单表查询、多表查询、嵌套查询

这里我主要分析嵌入查询,以及何时使用GROUP BY,何时使用NOT IN的运算符,何时使用EXITS、NOT EXITS存在量词

我们步骤: ①分析何时使用GROUP BY  ②分析何时使用NOT IN的运算符 ③分析何时使用EXITS、NOT EXITS存在量词 ④分析嵌套查询  ⑤做题的整体步骤

涉及到两表之间存在相同属性的查询一般是采用等值连接、非等值连接、嵌套查询

在使用in,not in 操作单表或多表的时候可以使用连接查询和嵌套查询互相转换

但是使用int

什么时候会使用到嵌套查询,一般出现时设及到多个表的查询,一般在where语句中进行某个属性的判别的时候会出现

子查询的操作结果是单个属性的时候,一般运算符就是>、>=、<、<=、!=

子查询的操作结果是集合时,一般运算符就是NOT IN、IN、EXITS、NOT EXITS

出现NOT IN、IN一般就是非相关子查询

出现EXITS、NOT EXITS就是一个相关子查询

  • 何时使用GROUP BY
  1. 表的主键是多个属性组成,查询结果出现一个其中的某些属性(不是全部属性),再根据题目中出现的分组词汇“门门课程”,“每个学生”,“各个”.......,基本上就是使用分组
  2. 如果查询结果没有出现部分主键中的属性,而题目中却涉及到了分组词汇,那就可能是需要用到分组
  3. 题目中出现数量词,或者聚集函数词“平均”、“求和”,并且作为条件,并不是查询结果的话,一定是需要使用到分组的

  • 何时使用NOT IN的运算符

出现“没有任何”、“不存在”时使用NOT IN 或NOT EXITS

NOT IN 后接的是不相关子查询,需要对子查询进行全表扫描后对父查询再次进行扫描

  • 何时使用EXITS、NOT EXITS存在量词

NOT EXITS 后接的是相关子查询,需要用到索引查找

NOT EXITS的查询效率比NOT IN高

出现“存在”,“有”,“获得过”,再进行语义能翻译成存在,就需要用到EXITS

注意EXITS与NOT EXITS的返回值是布尔类型,true和false

EXITS与NOT EXITS后接的子查询都是相关子查询

出现“全部”,SQL中没有全部的语句,只能将它转化成为,没有一个、不存在,双重否定表肯定,

出现存在量词时,一般使用IN 或 EXITS

出现全称量词时,一般使用NOT IN 或NOT EXITS

  • 嵌套查询
  • 做题的整体步骤

搭建查询主体结构SELECT.....FROM....WHERE

读取题目,获取最终要查询的属性或称字段,将这些字段写入select子句

在根据这几个属性找到涉及的表,一般多表要么是连接查询,要么是子查询

如果为前者,一般是将这些表写到FROM子句当中,在将连接条件写在WHERE子句当中

到此基本的SELECT的总体框架已经做好,再根据题目来进行增加新的条件

出现条件一般情况下,就在这几个地方:WHERE子句、HAVING子句、嵌套查询

根据语义判断出,需要对某个表中的某个特定的属性涉及到的集合进行讨论的时候,比如查询门门考试都及格的学生学号,根据语义,学生选择的课程有许多,这样在学习表中对于这个学生有多条记录,此时就需要用到组队,又出现门门及格的条件,就需要涉及到HAVING子句,将条件写进HAVING子句当中

注意做等值连接的时候需要写where的,看你好几次没写了,提醒一下!!!

遇到分组与查询表不是一个表时,需要将分组放在子查询中执行

SQL是高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以,具有完全不同底层结构的不同数据库系统,可以使用相同的SQL语言作为数据输入与管理的SQL接口。 它以记录集合作为操作对象,所有SQL语句接受集合作为输入,返回集合作为输出,这种集合特性允许一条SQL语句的输出作为另一条SQL语句的输入,所以SQL语句可以嵌套,这使它具有极大的灵活性和强大的功能,在多数情况下,在其他语言中需要一大段程序实现的功能只需要一个SQL语句就可以达到目的,这也意味着用SQL语言可以写出非常复杂的语句。    结构化查询语言(Structured Query Language)最早是IBM的圣约瑟研究实验室为其关系数据库管理系统SYSTEM R开发的一种查询语言,它的前身是SQUARE语言。SQL语言结构简洁,功能强大,简单易学,所以自从IBM公司1981年推出以来,SQL语言得到了广泛的应用。如今无论是像Oracle、Sybase、DB2、Informix、SQL Server这些大型的数据库管理系统,还是像Visual Foxpro、PowerBuilder这些PC上常用的数据库开发系统,都支持SQL语言作为查询语言。    美国国家标准局(ANSI)与国际标准化组织(ISO)已经制定了SQL标准。ANSI是一个美国工业和商业集团组织,负责开发美国的商务和通讯标准。ANSI同时也是ISO和International Electrotechnical Commission(IEC)的成员之一。ANSI 发布与国际标准组织相应的美国标准。1992年,ISO和IEC发布了SQL国际标准,称为SQL-92。ANSI随之发布的相应标准是ANSI SQL-92。ANSI SQL-92有时被称为ANSI SQL。尽管不同的关系数据库使用的SQL版本有一些差异,但大多数都遵循 ANSI SQL 标准。SQL Server使用ANSI SQL-92的扩展集,称为T-SQL,其遵循ANSI制定的 SQL-92标准。    SQL语言包含4个部分:    数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    数据操作语言(DML),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。    数据查询语言(DQL),例如:SELECT语句。    数据控制语言(DCL),例如:GRANT、REVOKE、COMMIT、ROLLBACK等语句。    SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值