oracle数据库实验2 表的管理

改命令提示符set sqlprompt 名字>

scott/密码 登录scott用户
conn sys/ as sysdba切换超级管理员

表格不在一行显示,可修改以下两个参数
set linesize 150
set pagesize 200

1.在oracle数据库中创建一个名为student的表,要求:(sno char(6) not null, sname char(10) not null, ssex char(2) not null, birthday date not null, polity char(20),sdept char(20)),其中表中字段满足:sno设置为主键,sname字段设置惟一性约束;
create table student
(sno char(6) primary key not null,
sname char(10) unique not null, 
ssex char(2) not null, 
birthday date not null, 
polity char(20),
sdept char(20)
);
2.将student表的ssex设置检查性约束,要求ssex只能为‘M’或‘F’,polity字段设置默认约束,值为‘群众’;
alter table student add constraint
ssex_check check(ssex='M' or ssex='F');

alter table student modify polity default '群众';
3.在oracle数据库中创建一个名为course2的表(cno, cname, teacher, class);
 
create table course2
(cno char(6),
cname varchar(10),
teacher varchar (10),
class varchar(10)
);
4.创建一个学生选课表sc (sno char(6) not null,cno char(10) not null,grade real).将sc表创建外键约束,把sc表的sno和student表的sno关联起来,在这两个表之间创建一种制约关系;
 
create table sc(
sno char(6) not null,
cno char(10) not null,
grade real,
constraint sc_sno_student_sno foreign key (sno) references student(sno)
);
5.利用insert语句向student表中插入一条新的记录:(‘0007’,‘张三’,‘M’,to_date(‘1982-3-21’, ‘yyyy-mm-dd’),‘团员’,’计算机系’);
 
insert into student values
('0007','张三','M',to_date('1982-3-21','yyyy-mm-dd'), '团员','计算机系');
6.利用update语句将编号为‘0007’的学生polity改为‘党员’;
 
update student set polity = '党员' where sno = '0007';
7.利用delete语句将英语成绩大于90的同学记录删除;
 
delete from sc where cno in
(select cno from course2
where cname ='英语') and grade>90;
8.创建一个student_list表(列、类型与student表的列、类型相同)按分两区。
create table student_list
    partition by list(ssex)
    (
    partition student_male values('M') tablespace ORCLTBS1,
    partition student_female values('F') tablespace ORCLTBS2
    ) as
    select * from student;
9.创建一个视图,包含数据为软件工程系学生的考试成绩;
 
create view se_grade
as
select sname,grade from scott.student,scott.sc
where sdept='软件工程';
10.为SCOTT模式下的emp表创建一个公共同义词,名称为employee2.
create public synonym employee2 for scott.emp;
11*.删除原有Student表,创建一个class_number簇,聚簇字段名为CNO,类型为NUMBER(2)。然后利用该簇,重新创建student和class表。
drop table student;

--创建聚簇
create cluster class_number_cluster ( cno NUMBER(2) )size 1024;
--创建聚簇索引
create index class_number_idx on cluster class_number;
--创建聚簇索引表(class)
create table class
( cno number(2) primary key) cluster class_number_cluster(cno);
--创建聚簇索引表(student)
create table student
(sno char(6) primary key not null,
cno number(2) references class(cno),
sname char(10) unique not null, 
ssex char(2) not null, 
birthday date not null, 
polity char(20),
sdept char(20)
) cluster class_number_cluster(cno);


CREATE TABLE student (
  -- 列定义,例如://不知道这学生表要不要跟1.建的一样
  STUDENT_ID NUMBER PRIMARY KEY,
  NAME VARCHAR2(50),
  CNO NUMBER(2) REFERENCES class_number_cluster(CNO)
) CLUSTER class_number_cluster (CNO);

CREATE TABLE class (
  -- 列定义,例如:
  CLASS_ID NUMBER PRIMARY KEY,
  CLASS_NAME VARCHAR2(100),
  CNO NUMBER(2) REFERENCES class_number_cluster(CNO)
) CLUSTER class_number_cluster (CNO);

12.用创建一个Users表,按照下面表所示,设计表的结构,并且在UserType字段必须大于0且小于3,在UserPwd字段的默认值为111111。

编  号

字 段 名 称

数 据 结 构

说  明

1

UserId

NUMBER

用户编号

2

UserName

VARCHAR2 40

用户名

3

UserType

NUMBER 1

用户类型(1表示管理用户,2表示普通用户)

4

UserPwd

VARCHAR2 40

密码

create table Users
(UserId number,
UserName varchar2(40),
UserType number(1),
UserPwd varchar2(40) default(111111)
);


comment on column Users.UserId is '用户编号';
 
comment on column Users.UserName is '用户名';
 
comment on column Users.UserType is '用户类型(1表示管理用户,2表示普通用户)';
 
comment on column Users.UserPwd is '密码';
13.创建序列USER_S,该序列为1-1000之间整数,自动增加1。使用该序列向表USERS中插入2条新的记录;
 
create sequence USER_S
increment by 1
start with 1
minvalue 1
maxvalue 1000;


insert into Users values(USER_S.nextval,USER_S.nextval,USER_S.nextval,USER_S.nextval);
insert into Users values(USER_S.nextval,USER_S.nextval,USER_S.nextval,USER_S.nextval);
select * from Users;
14.本实验指导书实例:学生成绩管理项目:
实例要求:在该项目中,不考虑需求分析过程,要求建立以下关系:
部门信息:部门编号、部门名称、部门经理、地址、部门人数;
学生基本信息:部门号、学号、姓名、性别、学生类型、入学日期、籍贯、身份证号、详细地址、出生日期、所学专业、民族、电话(家) 、缴费总计、备注;
课程信息:课程号、课程名称、开设年级、学时数、学分
成绩单:学号、课程号、学期、成绩、备注。
create table 部门信息
(部门编号 varchar(50),
部门名称 varchar(50),
部门经理 varchar(50),
地址 varchar(50),
部门人数 varchar(50)
);


create table 学生基本信息
(部门号 varchar(50),
学号 varchar(50),
姓名 varchar(50),
性别 varchar (50),
学生类型 varchar(50),
入学日期 date,
籍贯 varchar(50),
身份证号 varchar(50),
详细地址 varchar(50),
出生日期 date,
所学专业 varchar(50),
民族 varchar(50),
电话家 varchar(50),
缴费总计 varchar(50),
备注 varchar(50)
);


create table 课程
(课程号 varchar(50),
课程名称 varchar(50),
开设年级 varchar(50),
学时数 varchar(50),
学分 varchar(50)
);


create table 成绩单
(学号 varchar(50),
课程号 varchar(50),
学期成绩 varchar(50),
备注 varchar(50)
);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值