0% found this document useful (0 votes)
125 views14 pages

Modelo de Estudio Caso Oracle

This document contains the SQL scripts to create and populate various database tables for an employees database including tables for employees, departments, salaries, courses, course offerings, and registrations. The scripts define primary keys, foreign keys, checks and other constraints on the tables. It then populates the tables with sample data.

Uploaded by

Justin Watson
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
125 views14 pages

Modelo de Estudio Caso Oracle

This document contains the SQL scripts to create and populate various database tables for an employees database including tables for employees, departments, salaries, courses, course offerings, and registrations. The scripts define primary keys, foreign keys, checks and other constraints on the tables. It then populates the tables with sample data.

Uploaded by

Justin Watson
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

ADMINISTRACIN DE BASES DE DATOS

LABORATORIO DE BASES DE DATOS EN ORACLE


TRAINER: ING. HUBNER JANAMPA PATILLA

--------

======================================
SQL*Plus script: crecase.sql
Creates case tables (with constraints)
Mastering Oracle SQL and SQL*Plus
Lex de Haan
Apress, 2005
======================================

-- ===============
-- EMPLOYEES table
-- ===============
create table employees
( empno
NUMBER(4)

, ename

VARCHAR2(8)

, init

VARCHAR2(5)

, job
, mgr

VARCHAR2(8)
NUMBER(4)

, bdate

DATE

constraint E_PK
primary key
constraint E_EMPNO_CHK
check (empno > 7000)
constraint E_NAME_NN
not null
constraint E_INIT_NN
not null
constraint E_MGR_FK
references employees
constraint E_BDAT_NN

, msal

NUMBER(6,2)

, comm
NUMBER(6,2)
, deptno
NUMBER(2)
, constraint E_SALES_CHK

not null
constraint E_MSAL_NN
not null
default 10
check
(decode(job,'SALESREP',0,1)
+ nvl2(comm,
1,0) = 1)

) ;
-- =================
-- DEPARTMENTS table
-- =================
create table departments
( deptno NUMBER(2)
constraint D_PK
primary key
constraint D_DEPTNO_CHK
check (mod(deptno,10) = 0)
, dname VARCHAR2(10) constraint D_DNAME_NN
not null
constraint D_DNAME_UN
unique
constraint D_DNAME_CHK
check (dname = upper(dname))
, location VARCHAR2(8) constraint D_LOC_NN
not null
constraint D_LOC_CHK
check (location = upper(location))
, mgr
NUMBER(4)
constraint D_MGR_FK
references employees
) ;
alter table employees
add (constraint E_DEPT_FK
foreign key (deptno)
references departments);
-- ===============
-- SALGRADES table
-- ===============
create table salgrades
( grade
NUMBER(2)

constraint S_PK
primary key
, lowerlimit NUMBER(6,2) constraint S_LOWER_NN
not null
constraint S_LOWER_CHK

check (lowerlimit >= 0)


, upperlimit NUMBER(6,2) constraint S_UPPER_NN
not null
, bonus
NUMBER(6,2) constraint S_BONUS_NN
not null
, constraint S_LO_UP_CHK check
(lowerlimit <= upperlimit)
) ;

-- =============
-- COURSES table
-- =============
create table courses
( code
VARCHAR2(6)

constraint C_PK
primary key
, description VARCHAR2(30) constraint C_DESC_NN
not null
, category
CHAR(3)
constraint C_CAT_NN
not null
, duration
NUMBER(2)
constraint C_DUR_NN
not null
, constraint C_CODE_CHK
check
(code = upper(code))
, constraint C_CAT_CHK
check
(category in ('GEN','BLD','DSG'))
) ;
-- ===============
-- OFFERINGS table
-- ===============
create table offerings
( course
VARCHAR2(6)

, begindate

DATE

, trainer

NUMBER(4)

, location
VARCHAR2(8)
, constraint O_PK
) ;

constraint
not null
constraint
references
constraint
not null
constraint
references

O_COURSE_NN
O_COURSE_FK
courses
O_BEGIN_NN
O_TRAIN_FK
employees

primary key
(course,begindate)

-- ===================
-- REGISTRATIONS table
-- ===================
create table registrations
( attendee
NUMBER(4)
constraint R_ATT_NN
not null
constraint R_ATT_FK
references employees
, course
VARCHAR2(6) constraint R_COURSE_NN
not null
, begindate
DATE
constraint R_BEGIN_NN
not null
, evaluation NUMBER(1)
constraint R_EVAL_CHK
check (evaluation in (1,2,3,4,5))
, constraint R_PK
primary key
(attendee,course,begindate)
, constraint R_OFF_FK
foreign key
(course,begindate)
references offerings
) ;
-- =============
-- HISTORY table
-- =============
create table history
( empno
NUMBER(4)

, beginyear

NUMBER(4)

, begindate

DATE

, enddate
, deptno

DATE
NUMBER(2)

, msal

NUMBER(6,2)

constraint H_EMPNO_NN
not null
constraint H_EMPNO_FK
references employees
on delete cascade
constraint H_BYEAR_NN
not null
constraint H_BDATE_NN
not null
constraint
not null
constraint
references
constraint
not null

H_DEPT_NN
H_DEPT_FK
departments
H_MSAL_NN

, comments
VARCHAR2(60)
, constraint H_PK
primary key
(empno,begindate)
, constraint H_BEG_END
check
(begindate < enddate)

) ;

--------

==========================================
SQL*Plus script: popcase.sql
Populates (or repopulates) the case tables
Mastering Oracle SQL and SQL*Plus
Lex de Haan
Apress, 2005
==========================================

-- ====================================================
-- Disable PK/FK constraints (to make inserting easier)
-- ====================================================
alter table employees
disable primary key cascade;
alter table departments disable primary key cascade;
-- ========================================
-- EMPLOYEES (empno,ename,init,job,mgr
-,bdate,msal,comm,deptno)
-- ========================================
truncate table employees;
insert into employees values(7369,'SMITH','N',
date '1965-12-17',
insert into employees values(7499,'ALLEN','JAM',
date '1961-02-20',
insert into employees values(7521,'WARD','TF' ,
date '1962-02-22',
insert into employees values(7566,'JONES','JM',
date '1967-04-02',
insert into employees values(7654,'MARTIN','P',
date '1956-09-28',
insert into employees values(7698,'BLAKE','R',
date '1963-11-01',
insert into employees values(7782,'CLARK','AB',
date '1965-06-09',
insert into employees values(7788,'SCOTT','SCJ',
date '1959-11-26',
insert into employees values(7839,'KING','CC',
date '1952-11-17',
insert into employees values(7844,'TURNER','JJ',
date '1968-09-28',
insert into employees values(7876,'ADAMS','AA',
date '1966-12-30',
insert into employees values(7900,'JONES','R',

'TRAINER', 7902,
800 , NULL, 20);
'SALESREP',7698,
1600, 300,
30);
'SALESREP',7698,
1250, 500,
30);
'MANAGER', 7839,
2975, NULL, 20);
'SALESREP',7698,
1250, 1400, 30);
'MANAGER', 7839,
2850, NULL, 30);
'MANAGER', 7839,
2450, NULL, 10);
'TRAINER', 7566,
3000, NULL, 20);
'DIRECTOR',NULL,
5000, NULL, 10);
'SALESREP',7698,
1500, 0,
30);
'TRAINER', 7788,
1100, NULL, 20);
'ADMIN',
7698,

date '1969-12-03', 800 , NULL, 30);


insert into employees values(7902,'FORD','MG',
'TRAINER', 7566,
date '1959-02-13', 3000, NULL, 20);
insert into employees values(7934,'MILLER','TJA','ADMIN',
7782,
date '1962-01-23', 1300, NULL, 10);
alter table employees enable primary key;
-- =======================================
-- DEPARTMENTS (deptno,dname,location,mgr)
-- =======================================
truncate table departments;
insert
insert
insert
insert

into
into
into
into

departments
departments
departments
departments

values
values
values
values

(10,'ACCOUNTING','NEW YORK',7782);
(20,'TRAINING', 'DALLAS', 7566);
(30,'SALES',
'CHICAGO', 7698);
(40,'HR',
'BOSTON', 7839);

-- =============================================
-- SALGRADES (grade,lowerlimit,upperlimit,bonus)
-- =============================================
truncate table salgrades;
insert
insert
insert
insert
insert

into
into
into
into
into

salgrades
salgrades
salgrades
salgrades
salgrades

values
values
values
values
values

(1,
(2,
(3,
(4,
(5,

700,1200,
0);
1201,1400, 50);
1401,2000, 100);
2001,3000, 200);
3001,9999, 500);

-- ========================================
-- COURSES (code,description,type,duration)
-- ========================================
alter table courses disable primary key cascade;
truncate table courses;
insert into courses values
('SQL','Introduction to SQL',
'GEN',4);
insert into courses values
('OAU','Oracle for application users','GEN',1);
insert into courses values
('JAV','Java for Oracle developers', 'BLD',4);
insert into courses values

('PLS','Introduction to PL/SQL',
insert into courses values
('XML','XML for Oracle developers',
insert into courses values
('ERM','Data modeling with ERM',
insert into courses values
('PMT','Process modeling techniques',
insert into courses values
('RSD','Relational system design',
insert into courses values
('PRO','Prototyping',
insert into courses values
('GEN','System generation',

'BLD',1);
'BLD',2);
'DSG',3);
'DSG',1);
'DSG',2);
'DSG',5);
'DSG',4);

alter table courses enable primary key;


-- =============================================
-- OFFERINGS (course,begindate,trainer,location)
-- =============================================
alter table offerings disable primary key cascade;
truncate table offerings;
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into
into
into
into
into
into

offerings
offerings
offerings
offerings
offerings
offerings
offerings
offerings
offerings
offerings
offerings
offerings
offerings

values
values
values
values
values
values
values
values
values
values
values
values
values

('SQL',date
('OAU',date
('SQL',date
('SQL',date
('JAV',date
('XML',date
('JAV',date
('PLS',date
('XML',date
('OAU',date
('ERM',date
('PRO',date
('RSD',date

'1999-04-12',7902,'DALLAS' );
'1999-08-10',7566,'CHICAGO');
'1999-10-04',7369,'SEATTLE');
'1999-12-13',7369,'DALLAS' );
'1999-12-13',7566,'SEATTLE');
'2000-02-03',7369,'DALLAS' );
'2000-02-01',7876,'DALLAS' );
'2000-09-11',7788,'DALLAS' );
'2000-09-18',NULL,'SEATTLE');
'2000-09-27',7902,'DALLAS' );
'2001-01-15',NULL, NULL
);
'2001-02-19',NULL,'DALLAS' );
'2001-02-24',7788,'CHICAGO');

alter table offerings enable primary key;


-- ====================================================
-- REGISTRATIONS (attendee,course,begindate,evaluation)
-- ====================================================
truncate table registrations;
insert into registrations values (7499,'SQL',date '1999-04-12',4
insert into registrations values (7934,'SQL',date '1999-04-12',5
insert into registrations values (7698,'SQL',date '1999-04-12',4

);
);
);

insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert

into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into
into

registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations
registrations

values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values
values

(7876,'SQL',date
(7788,'SQL',date
(7839,'SQL',date
(7902,'SQL',date
(7902,'SQL',date
(7698,'SQL',date
(7521,'OAU',date
(7900,'OAU',date
(7902,'OAU',date
(7844,'OAU',date
(7499,'JAV',date
(7782,'JAV',date
(7876,'JAV',date
(7788,'JAV',date
(7839,'JAV',date
(7566,'JAV',date
(7788,'JAV',date
(7698,'JAV',date
(7900,'XML',date
(7499,'XML',date
(7566,'PLS',date
(7499,'PLS',date
(7876,'PLS',date

'1999-04-12',2
);
'1999-10-04',NULL);
'1999-10-04',3
);
'1999-10-04',4
);
'1999-12-13',NULL);
'1999-12-13',NULL);
'1999-08-10',4
);
'1999-08-10',4
);
'1999-08-10',5
);
'2000-09-27',5
);
'1999-12-13',2
);
'1999-12-13',5
);
'1999-12-13',5
);
'1999-12-13',5
);
'1999-12-13',4
);
'2000-02-01',3
);
'2000-02-01',4
);
'2000-02-01',5
);
'2000-02-03',4
);
'2000-02-03',5
);
'2000-09-11',NULL);
'2000-09-11',NULL);
'2000-09-11',NULL);

-- ================================================================
-- HISTORY (empno,beginyear,begindate,enddate,deptno,msal,comments)
-- ================================================================
alter table history disable primary key cascade;
truncate table history;
alter session

set NLS_DATE_FORMAT='DD-MM-YYYY';

insert into history values (7369,2000,'01-01-2000','01-02-2000',40, 950,'');


insert into history values (7369,2000,'01-02-2000', NULL
,20, 800,
'Transfer to training department -- salary "correction" 150');
-================================================
insert into history values (7499,1988,'01-06-1988','01-07-1989',30,1000,'');
insert into history values (7499,1989,'01-07-1989','01-12-1993',30,1300,'');
insert into history values (7499,1993,'01-12-1993','01-10-1995',30,1500,'');
insert into history values (7499,1995,'01-10-1995','01-11-1999',30,1700,'');
insert into history values (7499,1999,'01-11-1999', NULL
,30,1600,
'Missed targets again; salary reduction');
-================================================
insert into history values (7521,1986,'01-10-1986','01-08-1987',20,1000,'');
insert into history values (7521,1987,'01-08-1987','01-01-1989',30,1000,
'Transfer to sales department: own request');
insert into history values (7521,1989,'01-01-1989','15-12-1992',30,1150,'');

insert
insert
insert
insert
-insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
-insert
insert
-insert
insert
insert
insert
insert
insert
-insert
-insert
insert
insert
insert
insert
insert
insert

into
into
into
into

history
history
history
history

values
values
values
values

(7521,1992,'15-12-1992','01-10-1994',30,1250,'');
(7521,1994,'01-10-1994','01-10-1997',20,1250,'');
(7521,1997,'01-10-1997','01-02-2000',30,1300,'');
(7521,2000,'01-02-2000', NULL
,30,1250,'');
================================================
into history values (7566,1982,'01-01-1982','01-12-1982',20, 900,'');
into history values (7566,1982,'01-12-1982','15-08-1984',20, 950,'');
into history values (7566,1984,'15-08-1984','01-01-1986',30,1000,
'Not a great trainer; let''s try the sales department!');
into history values (7566,1986,'01-01-1986','01-07-1986',30,1175,
'Sales also turns out to be not a success...');
into history values (7566,1986,'01-07-1986','15-03-1987',10,1175,'');
into history values (7566,1987,'15-03-1987','01-04-1987',10,2200,'');
into history values (7566,1987,'01-04-1987','01-06-1989',10,2300,'');
into history values (7566,1989,'01-06-1989','01-07-1992',40,2300,
'From accounting to human resources; 0% salary change');
into history values (7566,1992,'01-07-1992','01-11-1992',40,2450,'');
into history values (7566,1992,'01-11-1992','01-09-1994',20,2600,
'Back to the training department, as manager');
into history values (7566,1994,'01-09-1994','01-03-1995',20,2550,'');
into history values (7566,1995,'01-03-1995','15-10-1999',20,2750,'');
into history values (7566,1999,'15-10-1999', NULL
,20,2975,'');
================================================
into history values (7654,1999,'01-01-1999','15-10-1999',30,1100,
'Senior sales rep; high potential?');
into history values (7654,1999,'15-10-1999', NULL
,30,1250,
'Turns out to be slightly disappointing :-( ');
================================================
into history values (7698,1982,'01-06-1982','01-01-1983',30, 900,'');
into history values (7698,1983,'01-01-1983','01-01-1984',30,1275,'');
into history values (7698,1984,'01-01-1984','15-04-1985',30,1500,'');
into history values (7698,1985,'15-04-1985','01-01-1986',30,2100,'');
into history values (7698,1986,'01-01-1986','15-10-1989',30,2200,'');
into history values (7698,1989,'15-10-1989', NULL
,30,2850,
'Promoted to become manager of the sales department');
================================================
into history values (7782,1988,'01-07-1988', NULL
,10,2450,
'Hired as the new manager for the accounting department');
================================================
into history values (7788,1982,'01-07-1982','01-01-1983',20, 900,'');
into history values (7788,1983,'01-01-1983','15-04-1985',20, 950,'');
into history values (7788,1985,'15-04-1985','01-06-1985',40, 950,
'Transfer to human resources; 0% salary raise');
into history values (7788,1985,'01-06-1985','15-04-1986',40,1100,'');
into history values (7788,1986,'15-04-1986','01-05-1986',20,1100,'');
into history values (7788,1986,'01-05-1986','15-02-1987',20,1800,'');
into history values (7788,1987,'15-02-1987','01-12-1989',20,1250,
'Salary reduction 550, insufficient achievements');

insert
insert
insert
insert
insert
insert
-insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
insert
-insert
insert
insert
insert
-insert
insert
-insert
-insert
insert
insert
insert
insert
-insert
insert
insert
insert

into
into
into
into
into
into

history
history
history
history
history
history

values
values
values
values
values
values

(7788,1989,'01-12-1989','15-10-1992',20,1350,'');
(7788,1992,'15-10-1992','01-01-1998',20,1400,'');
(7788,1998,'01-01-1998','01-01-1999',20,1700,'');
(7788,1999,'01-01-1999','01-07-1999',20,1800,'');
(7788,1999,'01-07-1999','01-06-2000',20,1800,'');
(7788,2000,'01-06-2000', NULL
,20,3000,'');
================================================
into history values (7839,1982,'01-01-1982','01-08-1982',30,1000,
'Founder and first employee of the company');
into history values (7839,1982,'01-08-1982','15-05-1984',30,1200,'');
into history values (7839,1984,'15-05-1984','01-01-1985',30,1500,'');
into history values (7839,1985,'01-01-1985','01-07-1985',30,1750,'');
into history values (7839,1985,'01-07-1985','01-11-1985',10,2000,
'Accounting established as an independent department');
into history values (7839,1985,'01-11-1985','01-02-1986',10,2200,'');
into history values (7839,1986,'01-02-1986','15-06-1989',10,2500,'');
into history values (7839,1989,'15-06-1989','01-12-1993',10,2900,'');
into history values (7839,1993,'01-12-1993','01-09-1995',10,3400,'');
into history values (7839,1995,'01-09-1995','01-10-1997',10,4200,'');
into history values (7839,1997,'01-10-1997','01-10-1998',10,4500,'');
into history values (7839,1998,'01-10-1998','01-11-1999',10,4800,'');
into history values (7839,1999,'01-11-1999','15-02-2000',10,4900,'');
into history values (7839,2000,'15-02-2000', NULL
,10,5000,'');
================================================
into history values (7844,1995,'01-05-1995','01-01-1997',30, 900,'');
into history values (7844,1998,'15-10-1998','01-11-1998',10,1200,
'Project (half a month) for the ACCOUNTING department');
into history values (7844,1998,'01-11-1998','01-01-2000',30,1400,'');
into history values (7844,2000,'01-01-2000', NULL
,30,1500,'');
================================================
into history values (7876,2000,'01-01-2000','01-02-2000',20, 950,'');
into history values (7876,2000,'01-02-2000', NULL
,20,1100,'');
================================================
into history values (7900,2000,'01-07-2000', NULL
,30, 800,
'Junior sales rep -- has lots to learn... :-)');
================================================
into history values (7902,1998,'01-09-1998','01-10-1998',40,1400,'');
into history values (7902,1998,'01-10-1998','15-03-1999',30,1650,'');
into history values (7902,1999,'15-03-1999','01-01-2000',30,2500,'');
into history values (7902,2000,'01-01-2000','01-08-2000',30,3000,'');
into history values (7902,2000,'01-08-2000', NULL
,20,3000,'');
================================================
into history values (7934,1998,'01-02-1998','01-05-1998',10,1275,'');
into history values (7934,1998,'01-05-1998','01-02-1999',10,1280,'');
into history values (7934,1999,'01-02-1999','01-01-2000',10,1290,'');
into history values (7934,2000,'01-01-2000', NULL
,10,1300,'');

alter table history enable primary key;

-- ==============================
-- Enable foreign key constraints
-- ==============================
alter table employees
alter table departments

enable constraint E_PK;


enable constraint D_PK;

alter
alter
alter
alter
alter
alter
alter
alter
alter

enable
enable
enable
enable
enable
enable
enable
enable
enable

table
table
table
table
table
table
table
table
table

employees
employees
departments
offerings
offerings
registrations
registrations
history
history

constraint
constraint
constraint
constraint
constraint
constraint
constraint
constraint
constraint

E_MGR_FK;
E_DEPT_FK;
D_MGR_FK;
O_COURSE_FK;
O_TRAIN_FK;
R_OFF_FK;
R_ATT_FK;
H_EMPNO_FK;
H_DEPT_FK;

-- ===========================================
-- Collect object statistics for the optimizer
-- ===========================================
execute dbms_stats.gather_schema_stats(ownname => user, cascade => true);

You might also like