SQL查询基本结构

本文介绍了SQL查询的基本结构,包括select、from和where子句。讲解了如何进行单关系查询,例如从大学数据库中获取所有教师的名字,以及如何进行多关系查询,涉及如何在多个关系间匹配信息并筛选条件,以获取教师名字、所在院系及建筑信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

时间:2014.02.23

地点:基地

————————————————————————————————

一、简述

  SQL查询基本结构包括:selectfrom和where。查询源以from字句引出,源即某个关系,在该关系上进行where和select指定的运算,然后产生一个新的关系。

————————————————————————————————

二、单关系查询

  这页是最简单的查询。比如我们在大学数据库中需要查询所有教师的名字,即从关系instructor中找出name属性,形成一个新关系。于是可以用SQL表示为:

select name
from instructor
在关系模型的形式化定义中,关系是一个集合,对的,是集合,集合中应该不会出现重复的名字。而在实践中,有时我们需要去除重复,而上述语句并不能做到,它只是简单列出name属性,为此当想要强行删除重复时只需在select后加入关键字distinct即可,即:

select distinct name
from instructor
而select后则用来显示指明不去除重复,当然不去除重复是默认行为。

  select字句还可以带+ - * /运算符的算术表达式,运算对象可是常熟或元组的属性,比如:

select ID,name,dept_name,salray*1.1
from instructor;
  where字句则提供谓词条件,只有满足条件的元组才能被重关系中选出形成新的关系,比如:

select name
from instructor
where dept_name='Comp.Sci.' and salary>7000;
SQL可以在where字句中使用逻辑连词and or not。逻辑连词的运算对象可以是各类比较运算符。

如此总来的说,在编写SQL语句时,我们

1.先用select表明目的,需要一个什么模式的新关系

2.再用from字句表明来源,即旧的关系
3.最后用where字句表明筛选条件

————————————————————————————————

三、多关系查询

 当我们需要从多个关系中或许信息时我们需要用到多关系查询,比如你在大学数据库中想要找到所有教师的名字,以及他们所在的院和院所属的建筑,于是你会发现在instructor关系只能获取教师名name和所在院明dept_name,而院楼名则在关系department中的building属性中。同单关系查询,我们的select from where作用还是一样,我们把所有要访问的关系都列在from字句中,并在where字句中指定匹配条件,啊,在select一下,新的关系就形成了。

select name,instructor.dept_name,building
from instructor,department
where instructor.dept_name=department.dept_name
这里还要注意dept_name出现在from列出两个关系中,因此需要关系名做前缀来说明来自哪个关系。
典型的SQL查询模式如下:

select A1,A2,A3......,An
from r1,r2,r3......rm
where P;
Ai代表属性,ri代表关系,P为谓词,省略where字句则默认谓词是true

另外需要说明的是,通过from字句所定义的关系是一个笛卡尔积关系,啊,什么事笛卡尔积关系,就是某一个关系的元组都和其余关系的每一个元组结合一下,假如r1有3个元组,r2有2个元组,r3有5个元组那么笛卡尔积关系有2*3*5=60个元组。通常这样的笛卡尔积关系是无意义的,而且很庞大。因此where字句常被用来限制笛卡尔积所建立的无意义组合。譬如我们需要把instructor关系和teach关系中元组具有相同ID值的进行匹配,我们只需用where条件从笛卡尔积中筛选出来即可。

select name,course_id
from instructor,teachers
where instructor.ID=teachers.ID




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值