综合练习
学生运动会比赛信息数据库
1,运动员sporter(运动员编号sporterid,运动员姓名name,运动员性别sex,所属系号department)
2,项目item(项目编号itemid,项目名称itemname,项目比赛地点location)
3,成绩grade(运动员编号sporterid,项目编号itemid,积分mark)
建表
1,定义各个表的主码外码约束
2,运动员的姓名和所属惜别不能为空值
3,积分要么为空值,要么为6,4,2,0,分别代表第一二三名的和其他名次的积分
运动员表
1001,李明,男,计算机系
1002,张三,男,数学系
1003,李四,男,计算机系
1004,王二,男,物理系
1005,李娜,女,心理系
1006,孙丽,女,数学系
项目表
X001,男子五千米,一操场
X002,男子标枪,一操场
X003,男子跳远,二操场
X004,女子跳高,二操场
X005,女子三千米,三操场
积分表
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
运动员表:
create table sporter(sporterid number(4) primary key not null,name varchar2(50) not null,
sex varchar2(2) check (sex in('男','女')),department varchar2(30) not null);
项目表:
create table item(itemid varchar2(4) primary key not null,
itemname varchar2(50) not null,location varchar2(50) not null);
成绩表:
create table grade(sporterid number(4),itemid varchar2(4),
constraint sporter_grade_sporterid_fk foreign key(sporterid)
references sporter(sporterid) on delete cascade,
constraint sporter_item_itemid_fk foreign key(itemid)
references item(itemid) on delete cascade,
mark number(2) check(mark in('6','4','2','0')));
插入数据:
运动员表
insert into sporter values('1001','李明','男','计算机系');
insert into sporter values('1002','张三','男','数学系');
insert into sporter values('1003','李四','男','计算机系');
insert into sporter values('1004','王二','男','物理系');
insert into sporter values('1005','李娜','女','心理系');
insert into sporter values('1006','孙丽','女','数学系');
项目表
insert into item values('X001','男子五千米','一操场');
insert into item values('X002','男子标枪','一操场');
insert into item
触发器是指存放在数据库中,并被隐藏执行的存储过程。在Oracle8i之前,只允许基于表或视图的DML操作(insert,update,delete)建立触发器,在oracle8i之后,不仅支持DML操作,也允许基于系统事件(启动数据库,关闭数据库,登录)和DDL操作建立触发器。
一、触发器简介
触发器是指隐含执行的存储过程,它可以使 ......
有人遇到这么一个问题,访问一个序列怎么出错了,错误如下: ORA-08002: 序列 SEQ_GX.CURRVAL 尚未在此会话中定义 这是因为在一个新的会话中,序列需要初始化,也就是通过.NEXTVAL来完成序列的初始化。 测试如下: Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 Connected as crmii SQL> SQ ......