第三章 SQL

更名运算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,找出工资最高的所有教师(可能不只有一位教师具有相同的工资)。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42882887/article/details/88598151
今日推荐