oracle修改学生信息表,Oracle做学生信息系统的脚本

Oracle做学生信息系统的脚本 无 要求的约束条件有: 主键是学号;入学日期必须大于出生日期;总分必须在0到700之间;学号和姓名不能为空create table student (sid number not null primary key,name nvarchar2(10) not null,birthday date,sdate date,addres

Oracle做学生信息系统的脚本

要求的约束条件有:

主键是学号;入学日期必须大于出生日期;总分必须在0到700之间;学号和姓名不能为空

create table student (

sid number not null primary key,

name nvarchar2(10) not null,

birthday date,

sdate date,

address nvarchar2(20),

mark number,

constraint ck_sdate check(sdate>birthday),

constraint ck_mark check(mark>=0 and mark<=700))tablespace users;

insert into student values(1001,'张三','1-1月-1981','1-1月-1999','上海',600);

用OEM再创建以上表student2,添加约束,并在数据输入窗口输入以下记录:

表字段名(英文部分)及部分数据如下:

sid(学号)name(姓名)birthday(出生日期)sdate(入学日期)address(家庭地址 ) mark(入学总分)

1001 张三名 1981-1-1 1999-1-1 张三名的家庭地址 600

1002 李三名 1982-2-2 2000-1-1 李三名的家庭地址 620

1003 张四名 1983-3-3 2001-1-1 张四名的家庭地址 580

1004 李四名 1984-4-4 2002-1-1 李四名的家庭地址 592

计算出学生总数;

select count(1) as 学生总数 from student;

查询出姓名中第二个字符为“三”而且不姓张的学生;

select * from student where name like '_三%' and name not like '张%';

查询出在1982-1-1和1984-1-1之间出生的学生的姓名;

select name,birthday from student where birthday between to_date('1982-1-1','yyyy-MM-dd') and to_date('1984-1-1','yyyy-MM-dd');

查询出年龄最小的学生;

select * from student where birthday in (select max(birthday) from student);

查询出在学校待的时间最长的学生;

select * from student where sdate in (select min(sdate) from student);

计算出所有学生总分的平均分;

select avg(mark) as 平均分 from student;

显示总分最高的学生的总分和姓名;

select name,mark from student where mark in (select max(mark) from student);

删除总分在600以下的学生,然后进行回滚;

delete from student where mark<600 ;rollback;

为表添加两列,一列是sex(性别),一列是speciality(专业),

其中,专业部分的默认值是“外语”;且有一个名为CK_SEX的约束条件:性别只能是“男”或“女;

修改专业的默认值为“计算机”;

alter table student add(sex nvarchar2(4) check (sex='男' or sex='女'), speciality nvarchar2(10) default '外语');

alter table student modify(speciality default '计算机');

id(编号) sid(学生编号) testtype(考试类型) score(分数)

1 1001 期中 580

2 1001 期末590

3 1002 期中 570

4 1002 期末 595

5 1003 期中 570

6 1003 期末 565

create table score

(

id number not null,

sid number not null,

testtype nvarchar2(10),

score number

);

用OEM界面给score创建一个外键,对应student的主键,然后在sql*plus中用sql语句删除此外键,再用sql语句为score创建一个外键;

alter table score drop constraint SCORE_FK21245050242859;

alter table score add (constraint fk_sid foreign key(sid) references student(sid));

select sid,name,address from student where mark>610 and sid in

(select sid from score where testtype='期末' and score>=590);

update score set score=score+10 where testtype='期末' and sid in (select sid from student where mark>=600);

select * from student where sid not in (select sid from score);

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值