oracle数据库
第一章数据库
一、
1.数据库(DB) :
(1)特性:共享性,独立性,完整性,减少数据冗余。
2.数据库管理系统(DBMS):功能:
(1)数据定义功能:语言,
(2)数据操作功能:查询,插入,修改,删除,
(3)数据控制功能:提供数据的安全性,完整性,并发性,
(4)数据库建立维护功能
3.数据库系统(DBS):
(1)组成:DBS=DB+DBMS
(2)分类:客户/服务器模式(c/s) 三层客户/服务器模式(b/s)
二、数据模型(抽象)
- 分类:
(1)概念模型:(信息模型)
能力:(1)、具有对现实世界的抽象和表达能力
(2)、完整精确的语义表达能力
(3)、易于理解和修改
(4)、易于向DBMS所支持的数据模型转换
(2)逻辑模型:分类:(1)、层次模型(2)、网状模型(3)、关系模型 - 三要素:(1)数据结构:静态特征(2)数据操作(3)数据完整性约束
- 层次模型 网状模型 关系模型
(1)、层次模型:采用树状结构,有且仅有一个根结点,一对多
(2)、网状模型:(3)、关系模型:二维表, - 关系数据库:
(1)、基本概念:
关系,元组(行,不可重复出现,顺序可变),属性(列,顺序可任意更改),域,关系模式,候选码,主关键字(primary key,唯一识别的),外关键字(foreign key)
(2)、关系运算:
1)、选择:从行中选,单目运算
2)、投影:从列中选,单目运算
3)、连接:双目运算
三、数据库系统结构 - 三级模式结构:
(1)、外模式(子模式,用户模式)
(2)、模式(概念模式,逻辑模式)
(3)、内模式(存储模式) - 二级映像功能:
(1)、外模式/模式映像
(2)、模式/内模式映像
四、数据库设计:
1.概念结构设计:
E-R模型即实体-联系模型
组成:实体,属性,实体型,实体集,联系(实体之间联系1:1,1:n,n:n)。
2.逻辑结构设计:E-R图
习题:
1.下面不属于数据模型要素的是(C)
A:数据结构B:数据操作C:数据控制D:完整性约束
2.数据库(DB)数据库系统(DBS)和数据库管理系统(DBMS)的关系是(B)
A:DBMS包含DBS和DB B:DBS 包含DBMS 和DB C:DB包括DBS和DBMS D:DBS 就是DBMS也就是DB
3.如果关系中某一属性组的值能唯一地标识一个元组,则称之为(D)
A:候选码B:外码C:联系D:主码
4.以下对关系性质的描述中,(B)是错误的。
A:关系中每个属性值都是不可分解的
B:关系中允许出现相同的元组
C:定义关系模式是可以随意指定属性的排列顺序
D:关系中元组的排列顺序可任意交换
5.数据库设计中概念设计的主要工具是(A)
A:E-R图 B:概念模型 C:数据模型 D:范式分析
6.数据模型由(数据结构)(数据操作)(完整性约束)组成
7.实体之间的联系分为(一对多)(一对一)(多对多)3类
8.数据库系统的三级模式包括(外模式)(内模式)(模式)
9.数据库的特性包括(独立性)(共享性)(完整性)(减少数据冗余)
10.假设学生成绩信息管理系统在需求分析阶段收集到以下信息:
学生信息:学号,姓名,性别,出生日期
课程信息:课程号,课程名,学分
该业务系统有以下规则:
(1)一名学生可以选修多门课程,一门课程可被多名学生选修
(2)学生选修的课程要在数据库中记录课程成绩
1)根据以上信息画出合适的E-R图
2)将E-R图转换为关系模式,并用下划线标出每个关系的主码说明外码
11.设图书馆借阅系统在需求分析阶段搜集到以下信息:
图书信息:书号,书名,作者,价格,复本量,库存量
学生信息:借书证号,姓名,专业,借书量
该业务系统有以下约束:
一个学生可以借阅多种图书,一种图书可被多个学生借阅
学生借阅的图书要在数据库中记录索书号借阅时间
(1)根据以上信息画出合适的E-R图
(2)将E-R图转换为关系模式,并用下划线标出每个关系的主码说明外码。
第二章ORACLE 11g数据库
1.ORACLE 11g数据库的特性:(1)可管理性 (2)PL/SQL新特性(3)增强应用开发能力
(4)高可用性(5)网格计算
2.习题:
3.下列操作系统中,不能运行Oracle11g 的是(B)
A:Windows B: Macintosh C:Linux D:UNIX
4.关于SQLPLUS 的叙述正确的是(A)
A:SQLPLUS 是ORACLE 数据库的专用访问工具
B:SQLPLUS 是标准的SQL访问工具,可以访问各类关系数据库
C:DB包括DBS+DBMS
D:DBS 就是DBMS,也是DB
5.SQLPLUS 显示student表结构的命令是(B)
A:LIST student B:DESC student C:SHOW DESC student D: SHOW STRUCTURE student
6.将SQLPLUS 的显示结果输出到E:\dp.txt的命令是(D)
A: SPOOL TO E:\dp.txt B:SPOOL ON E:\dp.txt C: SPOOL E:\dp.txt D:WRITE TO E:\dp.txt
7.SQLPLUS 执行刚输入的一条命令用(A)
A:正斜号(/)B:反斜号(\)C:感叹号(!)D:句号(.)
8.在SQLPLUS 工具中,可以运行(SQL语句)和(SQLPLUS命令)
9.使用SQLPLUS (describe)命令可以显示表结构的信息
10.使用SQLPLUS 的(get)命令可以将文件的内容调入缓冲区,并且不执行。
11.使用SQL*PLUS 的(save)命令可以将缓冲区的内容保存到指定文件中。
第三章创建数据库 - 体系结构:
(1)逻辑结构 :
1)表空间(默认的表空间):example 表空间 (实例表空间)system 表空间(系统表空间)sysaux表空间(辅助系统表空间)temp表空间(临时表空间 )undotbs 表空间 (重做表空间)users表空间
2) 段 盘区 数据块(数据库中最小的,最基本的存储单位)3) 表4) 索引5) 用户6) 方案
(2) 物理结构:数据文件 控制文件(二进制) 日志文件 初始化参数文件和其他文件。
(3) 总体结构 :实例 内存结构:(1)系统全局 SGA (数据块缓存区,字典缓存区,重做日志缓冲区,共享池) 进程:用户进程,服务器进程,后台进程
习题:
2.(C)是Oracle 数据库的最小存储分配单元
A:表空间 B:盘曲 C:数据块 D:段
2.当数据库创建时,(A)会自动生成。
A:SYSTEM 表空间 B:TEMP 表空间 C:USERS 表空间D:TOOLS表空间
3.每个数据库可以有(A)控制文件
A:3个B:7个C:8个D:10个
4.每个数据库至少有(B)重做日志文件
A:1个B:2个C:3个D:任意个
5.解析后的SQL语句在SGA(A)是循环使用的。
A:数据缓冲区 B:字典缓冲区 C:重做日志缓冲区D:共享池
6.在全局存储区SGA中(C)是循环使用的。
A:数据缓冲区 B:字典缓冲区 C:重做日志缓冲区D:共享池
7.当数据库运行在归档模式下,如果发生日志切换,为了不覆盖旧的日志信息,系统将启动(C)进程。A:LGWR B:DBWR C:ARCH D:RECO
8.(D)进程用于将修改后的数据从内存保存到磁盘数据文件中。
A:PMON B:SMON C:LGWR D:DBWR
9.一个表空间物理上对应一个或多个(数据)文件。
10.Oracle 数据库系统的物理存储结构主要由(数据文件)(控制文件)和(日志文件)3类文件组成。
11.用户对数据库的操作如果产生日志信息,则该日志信息首先存储在(日志缓冲区)中然后由(lgmr)进程保存到(日志文件)。
12.在Oracle实例系统中,进程分为(用户进程)(服务器进程)(后台进程)。
第四章创建和使用表
一、1.表的基本概念:(1)表和表结构:1)表 2)表结构 3)记录 4)字段 5)空值 6)关键字
2.数据类型:数值型,字符型:char nchar varchar2,日期型,
3.表结构设计
二、习题
1.在商品表(goods)中,需要通过商品号(gid)字段唯一标识一条记录,应建立(A)约束
A:主键B:外键C:唯一约束条件D:检查约束条件
2.在商品表(goods)中,为使每件商品有唯一名称,在商品名称(gname)字段应建立(C)约束。A:主键B:外键C:唯一约束条件D:检查约束条件
3.在学生表(student)中某一条记录的总分(tc)字段暂时不具有任何值,其中将保存(B)
A:空格B:null C:0 D:不确定的值,由字段类型决定
12.在成绩表(score)中的学号(sno)字段,在另一个学生表(student)中是主键,该字段应建立(D)约束。A:主键B:检查约束条件C:唯一约束条件D:外键
13.(表空间)是Oracle 最大的逻辑存储结构。
14.在安装Oracle系统时,一般会自动创建6个默认的表空间分别(system表空间)(sysaux表空间)(temp表空间)(undotbs1表空间)(users表空间)(example表空间)
15.表空间的管理类型可以分为(数据字典管理)(本地化管理)
16.表空间的状态属性有(online)(offline)(read write)(read only)4种状态。
第五章PL/SQL基础
一、SQL语言
1.分类:1)数据定义语言(DDL):创建表(create)修改表(alter)删除表(delete)
2)数据操作语言(DML):插入记录(insert)修改记录(update)删除记录(delete)
3)数据查询语言(DQL):查询(select)
4)数据控制语言(DCL):grant,revoke
2.SQL语言的特点:
1)高度分过程化
2)应用于数据库的语言
3)面向集合的操作方式
4)既是自含式语言又是嵌入式语言
5)综合统一
6)语言简洁,易学易用
3.在PL/SQL中的数据定义语言:
(1)创建表:create table 表名 (字段名,字段类型,not null/null,primary key)
(2)修改表:alter table 表名 { add(添加一列) drop column(删除列)
(3)删除表:drop table 表名
4.在PL/SQL中的数据操作语言:
(1)插入语句:语法格式:insert into表名 values ()
例子:
1).向employee表中插入一行:1001,刘松涛,男,1972-10-07,公司集体宿舍
答:insert into employee values('1001','刘松涛','男','公司集体宿舍',);
2).向student表中插入数据
答:insert into student values('121002','刘鹏翔','男',TO_DATE('19920858','YYYYMMDD'),'计算机','20125',52);
(2)修改语句:
Update 表名 set 列名(新增的)where 条件
例子:
1)在employee 表中 将刘松涛的员工号改为1021,员工地址改为东大街34号。
答:update employee set eid =’1021’ ,address =’东大街34号’ where ename = ‘刘松涛’;
2)在student表中,将所有学生的学分增加2分。
答:update student set tc= tc+2;
(3)删除语句:
1.delete语句 : 语法格式:delete from 表名 where
例子: 1).在employee表中删除员工号为1021的行
答:delete from employee where eid=’1021’;
2.Truncate table 语句:语法格式:truncate table表名
5.在PL/SQL中的数据查询语言:
语法格式:select 字段 from 表名 { where(条件),group by(分组),having (分组条件表达式),order by (排序表达式)
(1).投影查询:
1)投影指定的列
例子:查询student表中的所有学生的学号,姓名,班号。
答:select sno,sname,sclass from student ;
2)投影全部列
例子:查询student表中所有列
答:select *from student;
3)修改查询结果的列标题:
例子:查询student 表中所有学生的sno,sname 和speciality 并将结果中各列的标题分别改为学号,姓名,专业。
答:select sno as 学号 ,sname as 姓名,speciality as 专业from student ;
4)计算列值:(±*/)
例子:列出goods表中的商品号,商品名称,商品总值
答:select gid as 商品号 , gname as 商品名称,price * stockqt as 商品总值from goods;
5)去掉重复行:(关键字:distinct)
例子:查询student 表中sclass 列消除结构中的重复行。
答:select distinct sclass from student;
(2)选择查询:
1):表达式比较:
例子:1)查询student 表中班号为201205或性别为女生的学生
答:select * from student where sclass = ‘201205’ or ssex=‘女’;
2)查询goods表中价格为3000元以上的商品。
答:
select * from goods where price > 3000;
3
):指定范围:
例子:1)查询score 表成绩为86,92,95的记录。
答:select * from score where grade in(86,92,95);
2)查询goods 表中价格在1500元到4000元之间的商品。
答:select * from goods where price between 1500 and 4000;
3)查询student表中不在1992年出生的学生情况。
答:select * from student where sbirthday TO_DATE(’19920101’,’YYYYMMDD’)AND TO ``_DATE(‘19971231’,’YYYYMMDD’);
4):模式匹配:
例子:1)查询student表中姓林的学生情况
答:select * from student where sname like ‘林%’;
2)查询goods表中商品名称含有Inspiron 的商品。
答:select * from goods where gname like ‘%inspiron%’;
5):空值判断:
例子:查询已选课但未参加考试的学生情况。
答:select * from score where grade is null;
(3):分组查询和统计计算:
1.聚合函数:(1)count例子:
1)求学生的总人数。
答:select count() as 总人数 from student ;
2)查询201236班学生的总人数。
答: select count() as总人数 from student where sclass = ‘201236’;
(2)sum 和 avg 函数:例子:
1)查询goods表库存量的总合。
答 :select sum (stockqt) as 库存量总和 from goods;
2)查询1004课程的平均分。
答:select avg (grade)as 平均分 份额、from score where cno=’1004’;
(3)max 和 min函数:例子:
1)查询8001课程的最高分,最低分和平均成绩。
答:select max(grade)as 最高分,min(grade)as最低分,avg(grade)as平均成绩 from score where cno=’8001’;
2.group by子句:例子:
1)查询各个班级的人数。
答:select sclass as班级 ,count()as人数 from student group by sclass;
2)查询各类商品的库存量。
答:select gclass as商品类型代码 ,sum(stockqt)as库存量 from goods group by gclass;
3)查询各门课程的最高分,最低分和平均成绩。
答:select cno as 课程号,max(grade)as最高分,min(grade)as 最低分,avg(grade)as平均成绩from score where not grade is null group by cno;
4)求选修各门课程的平均成绩和选秀人数。
答:select cno as 课程号,avg (grade)as 平均成绩,count ()as 选修人数 from score group by cno;
当where 语句与group by 语句,having语句,order by 语句在一个查询语句中按这个顺序进行。
3.having 语句:例子:
1)查询平均成绩在90分以上的学生的学号和平均成绩
答:select sno as 学号,avg(grade)as 平均成绩from score group by sno having avg (grade)>90;
2)查询选修课程3门以上且成绩在85以上的学生的情况。
答:select sno as学号,count(cno)as 选修课程数 from score where grade>=85group by sno having count ()>=3;
3)查询至少有5名学生选修且以8开头的课程号和平均分数。
答:select cno as 课程号,avg(grade)as 平均分数 from score where cno like ‘8%’ group by cno having ()>5;
3.排序查询:例子:
1)将商品类型代码为10的商品按价格排序
答:select from goods where gname=‘10’ order by price;
2)将201236班级的学生按出生日期降序排序。
答:select from student where sclass =‘201236’ order by sbirthdaydesc;
5.习题:
(1).以下语句执行出错的原因是(B)
A:不能对grade(学分)计算机平均分
B:不能在group by 子句中使用别名
C:group by 子句必须有分组内容
D:score 表没有sno 列
(2).统计表中记录数,使用(C)聚合函数。
A:sum B:avg C:count D:max
(3).在select 语句中使用关键字(D)去掉结果集中的重复行
A:all B:merge C:count D:max
(4).查询course 表的记录数,使用语句(A)
A:select count(cno)from course
B:select count (tno) from course
C: select max (credit) from course
D: select avg (cridit) from course
(5).在DLL语句中,(create table)语句可以创建表,(alter table )语句可以修改表,(drop table)语句可以删除表
(6).在DML语句中,(insert)语句可以在表中插入记录(update)语句可以修改表记录,(delete)语句可以在表中删除记录
(7)Select语句(select )(from)(where)(group by)(having)(order by)6个子句
(8)Where 子句可以接受(from)子句输出的数据,having 子句可以接收(from)子句(where)子句或(order by)子句输出的数据。
(9)查询score 表中学号为121004,课程号为1201的学生成绩。
答:select grade as 成绩from sroce where sno='121004’and cno=‘1201’;
(10)列出goods 表的商品名称,商品价格和打7折后的商品价格
答:select gname as 商品名称,price as 商品价格,price0.7as 打7折后的商品价格 from goods;
(11) 查询student 表中姓周的学生情况
答:select * from student where sname like’周%’;
(12)查询通信专业的最高学分的学生的情况
答:select max (tc)as最高学分 from student where speciality=‘通信’;
(13)查询1004课程的最高分,最低分,和平均成绩
答:select max (grade)as最高分,min(grade)as 最低分,avg(grade) as 平均成绩 from score where cno=‘1004’;
(14)查询至少有3名学生选修且以4开头的课程号和平均分数
答:select cno as 课程号,avg(grade)as 平均分数from score where cno like ‘4%’ group by cno having count()>=3;
(15)将计算机专业的学生按出生时间升序排列
答:select * from student where speciality=‘计算机’ order by sbirthday;
(16)查询各门课程最高分的课程号和分数,并按分数降序排列。
答:select cno as 课程号,max(grade)as最高分 from score group by cno order by max(grade) desc;
第六章PL/SQL高级查询
1.连接查询:
(1).使用连接谓词指定的连接:连接条件由比较运算符在where子句中给出。
1)等值连接:结果包含所有
例子:查询学生的情况和选修课程的情况
答:select student.,score. from student, score where student.sno=score.sno;
2)自然连接:去除相同的数据
例子:查询学生的情况和选修课程的情况
答:select student.*,score.cno,score.grade from student, score where student.sno=score.sno;
查询选修了“数学电路”且成绩在80分以上的学生姓名。
答:selecta.sno a.sname,b.cname,c.grade from student a,score b,course c where a.sno=b.sno and b.cno=c.cno and b. cname=‘数学电路’ and c.grade >=80;
3)自然连接:例子:查询选修了“1201”课程的成绩高于学号为“121002”的成绩的学生姓名 。
答:select a.sname from score.a,score.b where a.cno=’1201’and a.grade.b.grade and b.sno=’121002’ and b.cno=’1201’ order by a.grade desc;
(1)使用join关键字指定的链接:在from子句中用join 关键字,用on 子句指定连接条件
1)、内连接按照on 所指定的连接条件合并两个表,返回满足条件的行。内连接是系统默认的,可省略inner 关键字
例子:查询学生的情况和选修课程的情况。
答:select * from student inner join score on student.sno = score.sno;
查询选修了数据库系统课程且成绩在84分以上的学生情况。
Select a.sno,a.name,c.cname,b.grade from student a join score b on a.sno = b.sno join course c on b.cno = c.cno where c.cname= ‘数据库系统’ and b.grade >=84;
2)、外连接:左外连接,右外连接,完全外连接。
例子:采用左外连接查询教师任课情况。表名字+Left join +表名字+on
Select teacher .tname ,course.cname from teacher left join course on (teacher.tno = course.tno);
采用右外连接查询教师任课情况。
Select teacher .tname ,course.cname from teacher right join course on (teacher.tno = course.tno);
采用全外连接查询教师任课情况。
Select teacher .tname ,course.cname from teacher full join course on (teacher.tno=course.tno);
3)、交叉连接(cross join)
例子:采用交叉连接查询教师和课程所有可能组合。
Select teacher.tname,course.cname
From teacher cross join course;
3.集合查询:运算符:union(并 不包括重复行)union all (并,包括重复行)intersect (交) minus(差)
1)使用union操作符
例子:查询性别为女及选修了课程号为4002的学生
Select sno,sname,sex
From student
Where sex=’女’;
Union
Select sno,sname,sex
From student,score
Where student.sno=score.sno and cno=’4002’;
查询所有女教师和女学生的姓名,性别,和出生日期
Select snames,sex,sbirthday
From student
Where ssex=’女’
Union
Select tname,tsex,tbirthday
From teacher
Where ssex=’女’;
2)使用union all 操作符
例子:查询性别为女及选修课程号为4002的学生,不消除重复行。
Select sno,sname,sex
From student
Where sex=’女’;
Union all
Select sno,sname,sex
From student,score
Where student.sno=score.sno and cno=’4002’;
3)使用intersect 操作符
例子:
1)查询即选修了课程号为8001又选修了课程号为4002的学生的学号,姓名和性别。
```php
Select sno, sname,ssex
From student,score
Where student.sno=score.sno and cno=’8001’
intersect
Select sno,sname,ssex
From student,score
Where student.sno=score.sno and cno=’4002’
2)查询即选修了课程号含有数据库又选修了课程名含有数学且性别为男的学号,姓名,性别和班号。
```php
Select sno,sname,ssex,sclass
From student ,score,course
1. List item
Where student.sno=score.sno and course.cno= score.cno
And cname like ‘%数据库%’and ssex=‘男’
Iintersect
Select sno,sname,ssex,sclass
From student ,score,course
Where student.sno=score.sno and course.cno= score.cno
And cname like ‘%数学%’and ssex=‘男’
3)查询即选修了课程号为8001又未选修课程号为4002的学生的学号,姓名,性别
```php
Select ssex,sno,sname
From student ,score
Where student.sno=score.sno and
Cno =’8001’
Minus
Select ssex,sno,sname
From student ,score
Where student.sno=score.sno and
Cno =’4002’;
4)查询及选修了英语又未选修数字电路的学生的姓名,性别,出生日期和班号。
Select sname,ssex,sbirthday,sclass
From student,course,score
Where student.sno=score.sno and course.cno=score.cno
And cname=’英语’
Minus
Select sname,ssex,sbirthday,sclass
From student,course,score
Where student.sno=score.sno and course.cno=score.cno
And cname=’数字电路’
4.子查询:
1)、in子查询:
例子:查询选修了课程号为8001的课程的学生情况。
Select *
From student
Where sno in(
Select sno
From score
Where cno= ‘8001’)
查询未选修数字电路课程的学生情况。
Select *
From student
Where sno not in (
Select sno
From score
Where cno in
( select cno
From course
Where cname=‘数字电路’
)
)
查询选修某课程的学生人数多于4人的教师姓名。
Select tname as教师姓名
From teacher
Where tno in(
Select tno
From course,score
Where course.cno=score.cno
Group by tno
Having count(tno)>4)
查询在计算机专业任课的教师情况。
select *
From teacher
Where tno in (
Select tno
From teacher,student,course,score
Where teacher.tno=course.tno
and student.sno=score.sno
and course.cno=score.cno
And speciality =’计算机’
)
2)、比较子查询:
例子:查询比所有计算机专业学生年龄都小的学生
Select*
From student
Where sbirthday>all
(
Select sbirthday
From sytudent
Where speciality=’计算机’);
查询课程号8001的成绩高于课程号4002成绩的学生。
Select*
From score
Where cno=’8001’and grade>=any
(
Select grade
Fromo score
Where cno=’4002’)
3)exists 子查询
例子:查询选修1004课程的学生姓名
Select sname
From student
Where exits(
Select*
From score
Where student.sno=score.sno and cno=’1004’);
查询所有任课教师姓名和学院
Select tname,school
From teacher
Where exits
(
Select*
From course
Where teacher.tno=course.tno);
习题:
1.需要将student表所有行连接score 表所有行,应创建(C)
A:内连接B:外连接C:交叉连接D:自然连接
3.运算符(B)可以用于多行运算。
A:= B:IN C:<> D: LIKE
3.使用(A)关键字进行子查询时,只注重子查询是否返回行,如果子查询返回一个或多个行,则返回真,否则为假。
A:exists B:any C:all D:in
3.使用交叉连接查询两个表,一个表有6条记录,另一个表有9条记录,如果未使用子句,查询结果有(D)条记录。
A:15 B:3 C:9 D:54
4.SEELECT 语句的where子句可以使用子查询,(子查询)的结果作为父查询的条件。
5.使用in操作符实现指定匹配查询时,使用(any)操作符实现任意匹配查询,使用(all)操作符实现全不匹配查询。
6.join关键字指定的连接类型有(inner join)(outer join)和(cross join)3种,外连接有(left outer join)(right outer join)(full outer join)3种
7**.集合运算符(union)实现了集合的并运算,集合运算符(intersect)实现了集合的交运算,集合运算符(minus)实现了集合的差运算。**
8.查找选修了英语的学生姓名及成绩。
Select sname,grade
From score,course,student
Where score.cno=score.cno
student.sno=score.sno
Cmame=’英语’
9.查询选修了高等数学且成绩在80分以上的学生情况。
Select *
From course,score
Where course.cno=score.cno
Cname=’数学’ and grade>=80
10.查询选修某课程的平均成绩高于85分的教师姓名。
Select tname as 教师姓名,avg(grade)as 平均成绩
From teacher,course,grade
Where teacher.tno=course.tno and course.cno=score.cno
Group by tname
Having avg(grade)>85
12.查询及选学过1201号课程又选学过1004号课程的学生姓名,性别和总学分;
Select sname,sex,sum(grade)
From student,score
Where student.sno=score.sno
Cno=’’1201’
Intersect
Select sname,sex,sum(grade)
From student,score
Where student.sno=score.sno
Cno=’1004’
(2)查询及选学过1201号课程,又未选学1004号课程的学生姓名,性别和总学分。
Select sname,sex,sum(grade)
From student,score
Where student.sno=score.sno
Cno=’’1201’
Minus
Select sname,sex,sum(grade)
From student,score
Where student.sno=score.sno
Cno=’’1004’
12.查询每个专业最高分的课程名和分数
Select max(grade)as最高分,cname as 课程名,speciality as 专业
From course ,score,student
Where course.cno=score.cno and student.sno=score.sno
Group by speciality,cname
13.查询通信专业的最高分
Select max(grade)
From student,score
Where student.sno=score.sno
speciallity=’通讯’
Group by speciality
14.查询数据库系统课程的任课教师
Select tname
From teacher
Where teacher.tno=(
Select course.tno
From course
Where cname=’数据库系统’);
15.查询成绩高于平均分的成绩记录。
Select sno,cno,grade
From score
Where grade>(
Select avg(grade)
From score
Where grade is not null);