一、数据库数据查询——连接查询
若一个查询同时涉及两个以上的表,则称之为连接查询。连接查询是关系数据库中最主要的查询,包括等值连接查询、外连接查询等等。
1.等值连接查询:即连接运算符为=时
例题:
(1).列出选修了‘数学’或者‘数据库’的学生学号、姓名、所在院系、选修课程号及成绩;
select student. sno, sname, sdept,sc.cno, grade
from student, sc, course
where (cname=’数学’or cname='数据库')
and sc.cno=course.cno and student.sno=sc.sno;
(2).按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;
select
student.sno学号, sname姓名, sdept院系,
已修学分=(SUM(case when grade>60 then ccredit else 0 end))
from student, sc, course
where student.sno =Sc.sno
and sc.cno =course .cno
group by student.sno,sname,sdept
2.外连接查询:左外连接查询,右外连接查询,全外连接查询
例题:
分别使用左外连接、右外连接、全外连接查询student表和sc表中学生的姓名,课程号和成绩
--左外连接查询
select sname, cno, grade
from student left outer join sc on (student.sno=sc.sno) ;
--右外连接查询
select sname, cno, grade
from sc right outer join student on (student.sno=sc. sno);
--全外连接查询
select sname, cno, grade
from student full outer join sc on (student. sno=sc.sno) ;
创建表的代码:
--创建studnet表
create table student
(sno char(9) primary key,
sname char(20) unique,
ssex char(2) check(ssex in('男','女')),
sage smallint,
sdept char(20))
go
--创建courset表
create table course
(cno char(4) primary key,
cname char(40),
cpno char(4),
ccredit smallint
)
go
--创建sc表
create table sc
(sno char(9),
cno char(4),
grade smallint check(grade between 0 and 100),
primary key(sno,cno),
foreign key(sno) references student(sno),
foreign key(cno) references course(cno),
)
go