(1)语句格式
select后面接指定查询的列。
all,distinct,all显示全部查询结果,distinct对结果进行去重。
from 字句指查询的对象,比如表,试图,临时制造的关系。
where是查询的条件对结果进行限定。
group by对查询结果进行分组,分组依据为列名1,取值相同的分到一组。
having 只跟在group后面,筛选出符合条件的组。
order by 对查询结果按照指定列升序或者将序。
(2)语句细节
①select字句
select * from T;表示选择表T中的所有信息
select tname,sal*0.95 from T;可以直接在后面用算数表达式得出数据
更名as可选,select ,from中都可以使用,如
select tname,sal*0.05 as tax,sal*0.95 as income
from T;
②from字句
①from后面有多个表时,是笛卡尔积不是自然连接。
where字句可以认为是连接条件。
--例:列出教授“哲学”课程的老师的教工号及姓名 select T. tno , tname from T , TC , C where T.tno = TC.tno and TC.cno = C.cno and cname = ‘哲学’;
②为了防止select后的内容混淆,from中常用到更名操作,利用这种方法我们可以把两个相同的表连接起来,如找爸爸的爸爸。这里sno在结果虚表中有两个所以要分清楚是哪一个。
select a.sno, sname from s as a, sc as b where a.sno=b.sno and cno=‘c1’
(3)查询语句执行顺序
每一步都会生成一个虚表,先执行from产生的虚表进入where进行条件筛选,然后进行分组,这里开始使用select中的别名(where中不能用),分完组之后生成的虚表进入having进行组的筛选此时分组使用聚合函数,最后order by进行组内排序(可以用别名),order by是最后进行分组的。