更名运算as P42,分组聚集group by ,having子句P49
固有聚集函数:avg,min,max,sum,count
列出每个系的平均工资
列出平均工资超过42000美元的系及其平均工资
找出满足下面条件的所有教师的姓名,他们们的工资至少比Biology系某一个教师的工资高
自然连接natural join P41
列出教授的名字及他们所讲授课程的名字
字符串运算%,_ P43,排列显示次序P44
找出所在建筑中包含子串‘Watson’的所有系名
按salary降序排列出整个instructor关系,如果有教师的工资相同,就让它们按姓名升序排列。
集合运算union,intersect,except P45
找出在2009年秋季开课,或者在2010年春季两个学期都开课的所有课程
使用集合运算自动去除重复,除非加上all,如:union all
嵌套子查询 P50
找出所有在2009年秋季开课,但不在2010年春季开课的课程
空关系测试
找出选修了Biology系开设的所有课程的学生
select S.ID,S.name from student as S where not exits ((select course_id from course where dept_name = 'Biology') except (select T.course_id from takes as T where S.ID = T.ID));
from子句中的子查询
找出系平均工资超过42000美元的那些系中教师的平均工资
select dept_name,avg_salary from (select dept_name,avg(salary) from instructor group by dept_name) as dept_avg(dept_name,avg_salary) where avg_salary>42000;
with定义临时关系
查出所有工资总额大于所有系平均工资总额的系
with dept_total(dept_name,value) as (select dept_name ,sum(salary) from instructor group by dept_name),dept_total_avg(value) as (select avg(value) from dept_total)select dept_name from dept_total ,dept_total_avg where dept_total.value >= dept_total_avg.value;
数据库的修改
1,删除
delete from instructor where dept_name = 'Biology';
删除所有元组
delete from instructor;
2,插入
insert into course values ('CS_437','Database System','Comp.Sci.',4);
3,更新
update instructor set salary = salary*1.03 where salary>100000;
update instructor set salary = salary*1.05 where salary<=100000;
实践习题3.1
a.找出Comp.Sci.系开设的具有3个学分的课程名称。
b,找出名叫Einstein的教师所教的所有学生的标识,保证结果中没有重复。
c,找出教师的最高工资。
d,找出工资最高的所有教师(可能不只有一位教师具有相同的工资)。