数据库实验2

-- 实验2
# 1. 在studentsdb数据库中使用SELECT语句进行下列操作:

# (1)查询stuinfo表中每个学生的学号、姓名、出生日期信息。
select stuinfo.学号, 姓名, 出生日期
from stuinfo;
# (2)查询stuinfo表中学号为 2020002的学生的姓名和籍贯。
select 姓名, 籍贯
from stuinfo
where 学号 = '2020002';
# (3)查询stuinfo表中出生日期在95年以后的所有女同学的姓名和出生日期。
select 姓名, 出生日期
from stuinfo
where stuinfo.性别 = '女'
  and stuinfo.出生日期 > (1995 - 01 - 01);
# 2. 使用select语句完成下列操作:

# (1)在grade表中查询分数在70-80范围内的学生的学号、课程编号和成绩。
select s.学号, g.课程编号, g.分数
from stuinfo s,
     grade g
where g.学号 = s.学号
  and g.分数 between 70 and 80;
# (2)在grade表中查询课程编号为002的学生的平均成绩。
select avg(分数)
from grade g
where g.课程编号 = '002';
# (3)在grade表中查询选修了课程编号为003的人数。
select count(1)
from grade
where grade.课程编号 = '003';
# (4)查询stuinfo表中所有同学的姓名和出生日期,查询结果按出生日期从大到小的顺序排序。
select 姓名, 出生日期
from stuinfo
order by 出生日期;
# (5)查询所有姓张的学生的学号和姓名。
select 姓名, 学号
from stuinfo
where 姓名 like '张%';

# (6)对stuinfo表,查询学生的学号、姓名、性别、出生日期和籍贯信息,查询结果先按照性别的由小到大排序,性别相同的按学号由大到小排序。
select 学号, 姓名, 性别, 出生日期, 籍贯
from stuinfo
order by 性别, 学号 desc;
# (7)查询grade表中每个学生的平均成绩。
select 学号, avg(分数)
from grade
group by 学号;
# 四、实验思考
#
# 1. 查询所有没有选修课程的学生的学号、姓名。
select 学号,姓名
from stuinfo
where 学号 not in(
    select s.学号
    from stuinfo s,grade g
    where g.学号=s.学号
    );
# 2. 查询选课人数大于等于3人的课程编号、课程名称、人数。
select c.课程编号,c.课程名称,count(g.学号)
from course c right join grade g on c.课程编号=g.课程编号
group by c.课程编号, c.课程名称
having count(g.学号)>=3;

# 3. 在查询的FROM子句中实现表与表之间的连接有哪几种方式?
 -- 4种 内连接 左外连接  右外连接 全外连接

你可能感兴趣的:(数据库,oracle,sql)