一.实验目的
- 掌握表和索引的管理方法。
- 掌握其他模式对象的管理方法。
二.实验内容
数据库 orcl 用户名 sys 密码 oracle; 用户名 scott 密码 tiger
1.用scott登录数据库,创建class表和student表。Class表的字段包括班号cno,班名cname和人数num。Student表的字段包括学号sno,姓名sname,年龄sage和班号cno。字段类型和长度自定。
2.创建一个会话级别的临时表,结构与student表相同。
3.为student表的sage字段添加一个约束,保证该列值在0-100之间。
4.在class表的cname列上建立一个唯一性索引。
5.对class表进行表结构重组,将其移动到orcltbs1表空间。
6.创建一个student_range表(结构与student相同)。按学生年龄分3个区,低于20岁的放入part1区,存储在example表空间;20-30岁的放在part2区,放在orcltbs1表空间;其他数据放在part3区,放在users表空间。
7.创建一个序列,起始值1000,步长为2,最大值为10000,不可循环。
三.实验过程
1.用scott登录数据库,创建class表和student表。Class表的字段包括班号cno,班名cname和人数num。
Student表的字段包括学号sno,姓名sname,年龄sage和班号cno。字段类型和长度自定。
把sql语句存入C:\oracle\sql目录下
在命令行执行
SQL>@C:\oracle\sql\shiyan3-3.sql
CREATE TABLE class(
cno NUMBER(5) PRIMARY KEY,
cname VARCHAR(15),
num NUMBER(5)
)
CREATE TABLE student(
sno NUMBER(5) PRIMARY KEY,
sname VARCHAR(15),
sage NUMBER(5),
cno NUMBER(5) NOT NULL ,
CONSTRAINT fk_cno FOREIGN KEY(cno) REFERENCES class(cno)
2.创建一个会话级别的临时表,结构与student表相同。
CREATE GLOBAL TEMPORARY TABLE student_temp(
sno NUMBER(5) PRIMARY KEY,
sname VARCHAR(15),
sage NUMBER(5),
cno NUMBER(5) NOT NULL
)
ON COMMIT PRESERVE ROWS;
3.为student表的sage字段添加一个约束,保证该列值在0-100之间。
ALTER TABLE student ADD CONSTRAINT P_CK CHECK (sage BETWEEN 0 AND 100)
4.在class表的cname列上建立一个唯一性索引。
ALTER TABLE class ADD CONSTRAINT P_UK UNIQUE(cname)
5.对class表进行表结构重组,将其移动到orcltbs1表空间。
创建orcltbs1 表空间:
CREATE TABLESPACE orcltbs1 DATAFILE
‘C:\oracle\product\10.2.0\oradata\orcl\orcltbs1.dbf’SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;
ALTER TABLE class MOVE TABLESPACE orcltbs1
6.创建一个student_range表(结构与student相同)。按学生年龄分3个区,低于20岁的放入part1区,存储在example表空间;20-30岁的放在part2区,放在orcltbs1表空间;其他数据放在part3区,放在users表空间。
创建example表空间:
CREATE TABLESPACE example DATAFILE
‘C:\oracle\product\10.2.0\oradata\orcl\example.dbf’SIZE 10M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;
CREATE TABLE student_range(
sno NUMBER(5) PRIMARY KEY,
sname VARCHAR(15),
sage NUMBER(5),
cno NUMBER(5) NOT NULL )
PARTITION BY RANGE(sage)
(PARTITION part1 VALUES LESS THAN(20) tablespace example,
PARTITION part2 VALUES LESS THAN(31) tablespace orcltbs1,
PARTITION part3 VALUES LESS THAN(maxvalue) tablespace users
storage(initial 10m next 20m) );
7.创建一个序列,起始值1000,步长为2,最大值为10000,不可循环。
create sequence seq
maxvalue 10000
start with 1000
increment by 2
NOCYCLE;
四.实验总结
原因:临时表不能引用外键约束,删去即可