(3)向课程表录入一条课程信息
(05000106,数据库访问技术,48,6,05000105) Insert into course
Values ('05000106','数据库访问技术','48','6','05000105') Go
第三种连接查询 自身连接
查询数据库访问技术这门课程的间接先修课号; 间接先修课:先修课的先修课号 (1)查询数据库访问技术的先修课号 Select cpno From course as c1
Where cname='数据库访问技术'
(2)查询'05000105'这门课程的先修课号 Select cpno From course c2
Where c2 cno='05000105' Select c2.cpno
From course c1,course c2 Where c1.cpno=c2.cno
c1.cname='数据库访问技术' 题目2
查询比数据库程序设计课程学分高的课程的课程号和课程名 (1)查询数据库程序设计的学分
select ccredit From course
Where cname='数据库程序设计'
(2)查询比数据库程序设计课程学分高的课程的课程号和课程名 Select cno.cname,ccredit From course as x2
Where ccredit>7.5 --结合
Select x2.cno,x2.cname From course x1,course x2
Where x1.ccredit 左外连接,保留主表内所有的行 保留副表内符合连接的行 Select 目标列 From 主表1 left outer join 副表2 on (连接条件) where 选择条件 右外连接 From 副表2 right outer join 主表1 on(连接条件) 查询所有学生的选课信息(包含没有选课的) Select student.sno,sname,cno From student left outer join sc on (student.sno=sc.sno) 嵌套查询 父查询:select ?? From?? Where 列 in(连接谓词) 子查询:(select 查询 ) 将表内数据删除 Delete from 表名 有关数据的操作: 数据录入insert 数据查询select 数据更新update 数据删除delete 如果想查看表内数据只能使用select 录入、更新、删除结果只是行受影响 视图的内容 1、将多条查询语句封装在一起,行成视图 用来简化用户的查询操作 2、建立的视图也是表的结构 3、与表的区别:表在数据库中存在结构,存在数据,视图在数据库中只存在结构,没有数据 4、对视图的查询过程:查询语句-视图定义-找到视图基于的表,查找表 5、视图是在表的基础上建立 方法:创建视图 Create view 试图名 As (select 查询语句) (1)创建视图v1,查询所有选课的学生的学号,姓名,选择课程的课程名和成绩 create view v1 as select student.sno,sname,cname,grade from student join sc on(student .sno=sc.sno) join course on (sc.cno=course.sno) 把视图作为虚拟表来使用 Select * from v1 (2)创建视图v2,查询没有选课的学生的学号和姓名 create view v2 as select student.sno,sname from student left join sc on (student.sno=sc.sno) where cno is null (3)创建视图v3,统计每个学生的平均成绩显示结果包含学号,姓名,平均成绩 在分组语句的select中出现的列只能在group by 子句中,或者在聚合函数中 法1:create view v3(学号,姓名,平均成绩) as select student.sno,sname,avg(grade) from student join sc on (student.sno=sc.sno) group by student.sno,sname 法2:create view v3() as select student.sno,sname,avg(grade) '平均成绩' from student join sc on (student.sno=sc.sno) group by student.sno,sname (4)创建视图v4,查询平均成绩在60分以上的学生的学号,姓名和平均成绩? create view v4 (学号,姓名,平均成绩) as select student.sno,sname,avg(grade) from student join sc on (student.sno=sc.sno) group by student.sno,sname having avg(grade)>=60 基于视图的视图的创建 V3(学号,姓名,平均成绩) Select 学号,姓名,平均成绩 From v3 Where 平均成绩 >= 60 V3(学号,姓名,平均成绩) Creat view v41 as Select * From v3