Oracle 11g数据库基础教程(第2版)-课后习题-第六章

exer_class

列名 数据类型 约束 备注
CNO NUMBER(2) 主键 班号
CNAME VARCHAR2(20) 班名
NUM NUMBER(3) 人数

exer_student

列名 数据类型 约束 备注
CNO NUMBER(2) 主键 学号
CNAME VARCHAR2(20) 唯一 姓名
SAGE NUMBER 年龄
SEX CHAR(2) 性别
CNO NUMBER(2) 班级号
--第六章
--1
create user human identified by human default tablespace users;
grant connect,resource,create view to human;
connect human/human;
--2.按下列表结构利用sql语句创建exer_class、exer_student两个表
create table class(
	cno number(2) primary key,
	cname varchar(20),
	num number(3)
)tablespace users;

create table student(
	sno number(4) primary key,
	sname varchar(10) unique,
	sage number,
	sex char(2),
	cno number(2)
)tablespace users;
--3.为exer_student表的sage列添加一个检查约束,保证该列值咋0-100之间
alter table student add constraint ck check(sage between 0 and 100);

--4.为exer_student表的sex列添加一个检查约束,保证该列值为'M'或'F',且默认值为'M'
alter table student modify(sex char(2) default('m'));
alter table student add constraint cs check(sex in('m','f'));

--5.在exer_class表中的CNAME列上创建一个唯一性索引
create unique index ind_cname on class(cname);

--6.创建一个视图,包含学生及其班级信息
create view s_view(ccno,ccname,ssname,ssno,age,ssex,nnum)
as
select c.cno,c.cname,c.num,s.sno,s.sage,s.sex,s.sname from class c,student s where c.cno = s.cno;

--7.创建一个序列,起始值为100000001,作为学生的学号
create sequence seq start with 100000001 increment by 1 nocache nocycle;

--8.创建一个exer_student_range表(列,类型与exer_student表的列、类型相同),按学生年龄分为3个区,低于20岁的学生信息放入part1区,存储在example表空间中;
--20-30岁的学生信息放在part2区,存放在orcltbs1表空间中;其他数据放在part3区,存放在prcltbs2表空间中
--查询user表空间有哪些表
select tablespace_name from user_tablespaces;
--没有orcltbs1,orcltbs2要自己创建
create tablespace orcltbs1 datafile 'orcltbs1.dbf' size 10m;
create tablespace orcltbs2 datafile 'orcltbs2.dbf' size 10m;
--创建
create table student_range(
	sno number(4) primary key,
	sname varchar2(10),
	sage number,
	sex char(2),
	cno number(2)
)
partition by range(sage)
(
	partition part1 values less than(20) tablespace example,
	partition part2 values less than(30) tablespace orcltbs1,
	partition part3 values less than(maxvalue) tablespace orcltbs2
);
--9.创建一个exer_student_list表(列,类型与exer_student表的列,类型相同),按学生性别分为两个区
create table student_list
(
	sno number(4) primary key,
	sname varchar2(10),
	sage number,
	sex char(2),
	cno number(2)
)
partition by list(sex)
(
	partition male values ('m') tablespace orcltbs1,
	partition female values('f') tablespace orcltbs2
);
--10.为exer_student_range表创建本地分区索引
create index student_range_l on student_range(sname) local;  

你可能感兴趣的:(Oracle,11g)