Oracle笔记(十一)建表、更新、查询综合练习(一)

2014-11-24 12:20:23 · 作者: · 浏览: 8

Oracle笔记(十一)建表、更新、查询综合练习
相关链接:
Oracle笔记(一)Oracle简介及安装
http://www.2cto.com/database/201209/154049.html;
Oracle笔记(二)SQLPlus命令
http://www.2cto.com/database/201209/154051.html;
Oracle笔记(三)Scott用户的表结构
http://www.2cto.com/database/201209/154052.html;
Oracle笔记(四)简单查询、限定查询、数据的排序
http://www.2cto.com/database/201209/154054.html;
Oracle笔记(五)单行函数
http://www.2cto.com/database/201209/154056.html;
Oracle笔记(六)多表查询
http://www.2cto.com/database/201209/154060.html;
Oracle笔记(七)数据更新、事务处理、数据伪列
http://www.2cto.com/database/201209/154062.html;
Oracle笔记(八)复杂查询及总结
http://www.2cto.com/database/201209/154063.html;
Oracle笔记(九)表的创建及管理
http://www.2cto.com/database/201209/154316.html;
Oracle笔记(十)约束
http://www.2cto.com/database/201209/154317.html
有某个学生运动会比赛信息的 数据库,保存了如下的表:
运动员sporter(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系号department)
项目item(项目编号itemid,项目名称itemname,项目比赛地点location)
成绩grade(运动员编号id,项目编号itemid,积分mark)
请用SQL语句完成如下功能:
1、 建表,并在相应字段上增加约束;
定义各个表的主键和外键约束;
运动员的姓名和所属系别不能为空;
积分要第为空值,要么为6,4,2,0,分别代表第一,二,三名和其他名次的积分,注意名次可以有并列名次,后面的排名不往前提升,例如,如果有两个并列第一,则没有第二名。
2、 向表中插入指定的数据: www.2cto.com
运动员(
1001,李明,男,计算机系
1002,张三,男,数学系
1003,李四,男,计算机系
1004,王二,男,物理系
1005,李娜,女,心理系
1006,孙丽,女,数学系)
项目(
X001,男子五千米,一操场
X002,男子标枪,一操场
X003,男子跳远,二操场
X004,女子跳高,二操场
X005,女子三千米,三操场)
积分( www.2cto.com
1001,x001,6
1002,x001,4
1003,x001,2
1004,x001,0
1001,x003,4
1002,x003,6
1004,x003,2
1005,x004,6
1006,x004,4
1003,x002,6
1005,x002,4
1006,x002,2
1001,x002,0)
3、 完成如下的查询要求:
A、求出目前总积分最高的系名,及其积分。
B、找出在一操场进行比赛的各项目名称及其冠军的姓名。
C、找出参加了张三所参加的所有项目的其他同学的姓名。
D、经查张三因为使用了违禁药品,其成绩都记0分,请在数据库中作出相应修改。
E、经组委会协商,需要删除女子调高比赛项目。
一、建表
www.2cto.com
DROP TABLE grade PURGE;
DROP TABLE sporter PURGE;
DROP TABLE item PURGE;
CREATE TABLE sporter (
sporterid NUMBER(4) PRIMARY KEY,
name VARCHAR2(20) NOT NULL,
sex VARCHAR2(10) CHECK (sex IN('男','女')),
department VARCHAR2(20) NOT NULL
);
CREATE TABLE item (
itemid VARCHAR2(4) PRIMARY KEY,
itemname VARCHAR2(20) NOT NULL,
location VARCHAR2(20) NOT NULL
);
CREATE TABLE grade (
sporterid NUMBER(4) REFERENCES sporter(sporterid) ON DELETE CASCADE,
itemid VARCHAR2(4) REFERENCES item(itemid) ON DELETE CASCADE,
mark NUMBER(1) CHECK (mark IN (0,2,4,6))
);
而且在 Oracle之中要考虑回收站的问题。
二、增加数据
1、 增加运动员数据:
www.2cto.com
INSERT INTO sporter(sporterid,name,sex,department) VALUES (1001,'李明','男','计算机系');
INSERT INTO sporter(sporterid,name,sex,department) VALUES (1002,'张三','男','数学系');
INSERT INTO sporter(sporterid,name,sex,department) VALUES (1003,'李四','男','计算机系');
INSERT INTO sporter(sporterid,name,sex,department) VALUES (1004,'王二','男','物理系');
INSERT INTO sporter(sporterid,name,sex,department) VALUES (1005,'李娜','女','心理系');
INSERT INTO sporter(sporterid,name,sex,departme