oracle习题SQL语句练习
表(一)Student (学生表)
|
属性名 |
数据类型 |
可否为空 |
含 义 |
|
Sno |
Varchar2(3) |
否 |
学号(主码) |
|
Sname |
Varchar2(8) |
否 |
学生姓名 |
|
Ssex |
Varchar2(2) |
否 |
学生性别 |
|
Sbirthday |
Date |
可 |
学生出生年月 |
|
Class |
Varchar2(5) |
可 |
学生所在班级 |
create table student
(
Sno varchar2(3) not null,
Sname varchar2(8) not null,
Ssex varchar2(2) not null,
Sbirthday Date,
Class varchar2(5)
)
;
comment on column student.Sno
is '学号';
comment on column student.Sname
is '学生姓名';
comment on column student.Ssex
is '学生性别';
comment on column student.Sbirthday
is '学生出生年月';
comment on column student.Class
is '学生所在班级';
表(二)Course(课程表)
|
属性名 |
数据类型 |
可否为空 |
含 义 |
|
Cno |
Varchar2(5) |
否 |
课程号(主码) |
|
Cname |
Varchar(10) |
否 |
课程名称 |
|
Tno |
Varchar2(3) |
否 |
教工编号(外码) |
create table Course
(
Cno varchar2(5) not null,
Cname varchar(10) not null,
Tno varchar2(3) not null
)
;
comment on column Course.Cno
is '课程号';
comment on column Course.Cname
is '课程名称';
comment on column Course.Tno
is '教工编号';
alter table Course
add constraint pk_Course primary key (Cno);
alter table Course
add constraint fk_Tno foreign key (Tno)
references Teacher (Tno);
表(三)Score(成绩表)
|
属性名 |
数据类型 |
可否为空 |
含 义 |
|
Sno |
Varchar2(3) |
否 |
学号(外码) |
|
Cno |
Varchar2(5) |
否 |
课程号(外码) |
|
Degree |
Number(4,1) |
可 |
成绩 |
|
主码:Sno+ Cno |
|||
create table Score
(
Sno varchar2(3) not null,
Cno varchar2(5) not null,
Degree Number(4,1)
)
;
comment on column Score.Sno
is '学号';
comment on column Score.Cno
is '课程号';
comment on column Score.Degree
is '成绩';
alter table Score
add constraint fk_Sno foreign key (Sno)
references student (SNO);
alter table Score
add constraint fk_Cno foreign key (Cno)
references Course (Cno);
表(四)Teacher(教师表)
|
属性名 |
数据类型 |
可否为空 |
含 义 |
|
Tno |
Varchar2(3) |
否 |
教工编号(主码) |
|
Tname |
Varchar2(4) |
否 |
教工姓名 |
|
Tsex |
Varchar2(2) |
否 |
教工性别 |
|
Tbirthday |
Date |
可 |
教工出生年月 |
|
Prof |
Varchar2(6) |
可 |
职称 |
|
Depart |
Varchar(10) |
否 |
教工所在部门 |
create table TEACHER
(
tno VARCHAR2(3) not null,
tname VARCHAR2(4) not null,
tsex VARCHAR2(2) not null,
tbirthday DATE,
prof VARCHAR2(6),
depart VARCHAR2(10) not null
)
comment on column TEACHER.tno
is '教工编号';
comment on column TEACHER.tname
is '教工姓名';
comment on column TEACHER.tsex
is '教工性别';
comment on column TEACHER.tbirthday
is '教工出生年月';
comment on column TEACHER.prof
is '职称';
comment on column TEACHER.depart
is '教工所在部门';
alter table TEACHER
add constraint PK_Tno primary key (TNO)
表1-2数据库中的数据
表(一)Student
|
Sno |
Sname |
Ssex |
Sbirthday |
class |
|
108 |
曾华 |
男 |
1977-09-01 |
95033 |
|
105 |
匡明 |
男 |
1975-10-02 |
95031 |
|
107 |
王丽 |
女 |
1976-01-23 |
95033 |
|
101 |
李军 |
男 |
1976-02-20 |
95033 |
|
109 |
王芳 |
女 |
1975-02-10 |
95031 |
|
103 |
陆君 |
男 |
1974-06-03 |
95031 |
insert into Student values('108','曾华','男',to_date ('1977-09-01','yyyy-mm-dd'),'95033');
insert into Student values('105','匡明','男',to_date ('1975-10-02','yyyy-mm-dd'),'95031');
insert into Student values('107','王丽','女',to_date ('1976-01-23','yyyy-mm-dd'),'95033');
insert into Student values('101','李军','男',to_date ('1976-02-20','yyyy-mm-dd'),'95033');
insert into Student values('109','王芳','女',to_date ('1975-02-10','yyyy-mm-dd'),'95031');
insert into Student values('103','陆君','男',to_date ('1974-06-03','yyyy-mm-dd'),'95031');
表(二)Course
|
Cno |
Cname |
Tno |
|
3-105 |
计算机导论 |
825 |
|
3-245 |
操作系统 |
804 |
|
6-166 |
数字电路 |
856 |
|
9-888 |
高等数学 |
831 |
insert into Course values('3-105','计算机导论','825');
insert into Course values('3-245' ,'操作系统','804');
insert into Course values('6-166' ,'数字电路', '856');
insert into Course values('9-888', '高等数学', '831');
表(三)Score
|
Sno |
Cno |
Degree |
|
103 |
3-245 |
86 |
|
105 |
3-245 |
75 |
|
109 |
3-245 |
68 |
|
103 |
3-105 |
92 |
|
105 |
3-105 |
88 |
|
109 |
3-105 |
76 |
|
101 |
3-105 |
64 |
|
107 |
3-105 |
91 |
|
108 |
3-105 |
78 |
|
101 |
6-166 |
85 |
|
107 |
6-166 |
79 |
|
108 |
6-166 |
81 |
insert into score values('108', '6-166', '81');
表(四)Teacher
|
Tno |
Tname |
Tsex |
Tbirthday |
Prof |
Depart |
|
804 |
李诚 |
男 |
1958-12-02 |
副教授 |
计算机系 |
|
856 |
张旭 |
男 |
1969-03-12 |
讲师 |
电子工程系 |
|
825 |
王萍 |
女 |
1972-05-05 |
助教 |
计算机系 |
|
831 |
刘冰 |
女 |
1977-08-14 |
助教 |
电子工程系 |
insert into Teacher values('804', '李诚', '男', to_date('1958-12-02','yyyy-mm-dd'), '副教授', '计算机系');
insert into Teacher values('856', '张旭', '男', to_date('1969-03-12','yyyy-mm-dd'), '讲师', '电子工程系');
insert into Teacher values('825', '王萍', '女', to_date('1972-05-05','yyyy-mm-dd'), '助教', '计算机系');
insert into Teacher values('831', '刘冰', '女', to_date('1977-08-14','yyyy-mm-dd'), '助教', '电子工程系');
1、 查询Student表中的所有记录的Sname、Ssex和Class列。
select sname,ssex,class from student;
2、 查询教师所有的单位即不重复的Depart列。
select distinct * from student;
3、 查询Student表的所有记录。
select * from Student;
4、 查询Score表中成绩在60到80之间的所有记录。
select * from Score where DEGREE > 60 and DEGREE < 80;
5、 查询Score表中成绩为85,86或88的记录。
select * from Score where DEGREE = 85 or DEGREE = 86 or DEGREE = 88;
6、 查询Student表中“95031”班或性别为“女”的同学记录。
select * from Student where CLASS = 95031 or SSEX = '女';
7、 以Class降序查询Student表的所有记录。
select * from student order by class desc;
8、 以Cno升序、Degree降序查询Score表的所有记录。
select * from score order by cno asc , degree desc;
9、 查询“95031”班的学生人数。
select class,count(1) as 数量 from student where class ='95031' group by class;
10、 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
select sno || cno as 学号和课程号 from score order by DEGREE desc;
11、 查询每门课的平均成绩。
select Cno,count(1) as 数量, avg(Degree) as 平均值 from Score group by Cno;
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select Cno,count(1) as 数量, avg(Degree) as 平均值 from Score where cno like'3%' group by Cno having count(cno)>5;
13、查询分数大于70,小于90的Sno列。
select * from Score where Degree between 70 and 90;
14、查询所有学生的Sname、Cno和Degree列。
Select s.sname,c.cno,c.degree from student s , score c where s.sno=c.sno;
15、查询所有学生的Sno、Cname和Degree列。
Select c.sno,q.cname,c.degree from student s , score c,course q where s.sno=c.sno and q.cno=c.cno;
16、查询所有学生的Sname、Cname和Degree列。
Select s.sname,q.cname,c.degree from student s , score c,course q where s.sno=c.sno and q.cno=c.cno;
17、 查询“95033”班学生的平均分。
Select class,avg(degree) as 平均值 from student s,score c where s.sno=c.sno and class = '95033' group by class ;
18、 假设使用如下命令建立了一个grade表:
create table grade(low number(3),upp number (3),rank char(1))
insert into grade values(90,100,'A');
insert into grade values(80,89,'B');
insert into grade values(70,79,'C');
insert into grade values(60,69,'D');
insert into grade values(0,59,'E');
现查询所有同学的Sno、Cno和rank列。
select s.sno,s.cno,g.rank from score s , grade g where s.Degree between g.low and g.upp;
oracle习题SQL语句练习的更多相关文章
- oracle常用SQL语句(汇总版)
Oracle数据库常用sql语句 ORACLE 常用的SQL语法和数据对象一.数据控制语句 (DML) 部分 1.INSERT (往数据表里插入记录的语句) INSERT INTO 表名(字段名1, ...
- oracle之sql语句优化
oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...
- oracle中sql语句的优化
oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info (30000条数据)D ...
- oracle 常用sql语句
oracle 常用sql语句 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom d ...
- Oracle中SQL语句分类
Oracle中SQL语句分类如下:1.DML语句 insert/delete/update/select/merge/explan plan/lock table2.DDL语句 create/atlt ...
- Oracle和SQL语句的优化策略(基础篇)
转载自: http://blog.csdn.net/houpengfei111/article/details/9245337 http://blog.csdn.net/uniqed/article/ ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
- oracle的sql语句大小写
我相信大家都知道,oracle数据库是区分大小写的,而且oracle的默认为大写的,也就是说你在sql脚本上面写的sql语句,oracle运行的时候,它会自动转化为大写的.注意一下,我这里举例子的计算 ...
- 查看oracle的sql语句历史记录和锁表的情况
查看oracle的sql语句历史记录和锁表的情况 (2012-01-04 20:59:59) 转载▼ 标签: 杂谈 分类: database 查询sql的历史记录 select * from v$sq ...
随机推荐
- (转)IOS笔记 #pragma mark的用法
简单的来说就是为了方便查找和导航代码用的. 下面举例如何快速的定位到我已经标识过的代码. #pragma mark 播放节拍器 - (void) Run:(NSNumber *)tick{ ...
- Backward Digit Sums(暴力)
Backward Digit Sums Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5664 Accepted: 32 ...
- Linux mint 17中文输入法安装,改动linux mint与windows7双系统启动顺序
安装好linux mint17后,进入mint系统,首先须要一个比較合适的中文输入法. 一.首先迎来的就是安装中文输入法了,之前听说搜狗为ubuntu kinly定制了输入法,所以就想安装搜狗输入法, ...
- javascript高级知识点——内置对象原型
代码信息来自于http://ejohn.org/apps/learn/. 可以修改内置对象的方法. if (!Array.prototype.forEach) { Array.prototype.fo ...
- SQL Server执行计划那些事儿(3)——书签查找
接下来的文章是记录自己曾经的盲点,同时也透漏了自己的发展历程(可能发展也算不上,只能说是瞎混).当然,一些盲点也在工作和探究过程中慢慢有些眉目,现在也愿意发扬博客园的奉献精神,拿出来和大家分享一下. ...
- C#调用短信接口(通过简单的工厂模式整合多个短信平台)
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- source、sh、bash、./执行脚本的区别
1.source命令用法: source FileName 作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通常用 ...
- Lua与C++的交互
这篇文章说的挺详细的:Lua与C++的交互
- ubuntu中Mysql常用命令整理
启动mysql服务sudo /etc/init.d/mysql start 关闭mysql服务sudo /etc/init.d/mysql stop
- sersync+inotify实时备份数据
Sersync项目简介与框架 简介 Sersync项目利用inotify与rsync技术实现对服务器数据实时同步的解决方案,其中inotify用于监控sersync所在服务器上文件系统的事件变化,rs ...