Come scrivere Oracle codice SQL che creerà tabella Employee

August 30

Come scrivere Oracle codice SQL che creerà tabella Employee


La tabella dei dipendenti è una delle tante tabelle create nello schema di campionamento delle risorse umane fornito da Oracle. Il database delle risorse umane tiene traccia delle informazioni dei dipendenti e le strutture per una società fittizia. Oracle fornisce i database di esempio per creare una base comune per gli esempi nella documentazione tecnica.

istruzione

1 Connettersi a Oracle con un account che dispone di autorizzazioni adeguate per creare e modificare tabelle.

2 Inserire il seguente SQL (Structured Query Language) per configurare la protezione per il database delle risorse umane:

GOCCIA hr USER CASCADE;

CREATE hr utente identificato hr;

ALTER hr utente temporaneo TABLESPACE temporanea;

GRANT creare sessione

, create table

, Creare procedure

, Creare la sequenza

, Creare innesco

, Creare vista

, Creare sinonimo

, Alterare la sessione

HR;

CONNECT / AS SYSDBA;

GRANT eseguire su sys.dbms_stats HR;

COMMETTERE;

3 Inserire il seguente SQL nell'ambiente di sviluppo per creare il database delle risorse umane:

CREATE TABLE regioni

( region_id NUMBER

Vincolo NOT NULL region_id_nn

, REGION_NAME VARCHAR2 (25)

);

CREATE UNIQUE INDEX reg_id_pk

Sulle regioni (region_id);

ALTER TABLE regioni

ADD (reg_id_pk VINCOLO

PRIMARY KEY (region_id)

);

CREATE TABLE paesi

( country_id CHAR(2)

Vincolo NOT NULL country_id_nn

, COUNTRY_NAME VARCHAR2 (40)

, NUMERO region_id

, Country_c_id_pk VINCOLO

PRIMARY KEY (country_id)

)

ORGANIZZAZIONE indice;

ALTER TABLE paesi

ADD (countr_reg_fk VINCOLO

FOREIGN KEY (region_id)

regioni riferimenti (region_id)

);

CREATE TABLE posizioni

( location_id NUMBER(4)

, STREET_ADDRESS VARCHAR2 (40)

, Postal_code VARCHAR2 (12)

, Città VARCHAR2 (30)

Vincolo NOT NULL loc_city_nn

, State_province VARCHAR2 (25)

, Country_id CHAR (2)

);

CREATE UNIQUE INDEX loc_id_pk

ON posizioni (location_id);

ALTER TABLE posizioni

ADD (loc_id_pk VINCOLO

PRIMARY KEY (location_id)

, Loc_c_id_fk VINCOLO

FOREIGN KEY (country_id)

Paesi riferimenti (country_id)

);

CREATE SEQUENZA locations_seq

Iniziare con 3300

INCREMENTO DA 100

MAXVALUE 9900

NOCACHE

NOCYCLE;

CREATE TABLE reparti

( department_id NUMBER(4)

, Department_name VARCHAR2 (30)

Vincolo NOT NULL dept_name_nn

, NUMERO manager_id (6)

, NUMERO location_id (4)

);

CREATE UNIQUE INDEX dept_id_pk

ON dipartimenti (department_id);

ALTER TABLE reparti

ADD (dept_id_pk VINCOLO

PRIMARY KEY (department_id)

, VINCOLO dept_loc_fk

FOREIGN KEY (location_id)

luoghi riferimenti (location_id)

);

CREATE SEQUENZA departments_seq

Iniziare con 280

INCREMENTO DA 10

MAXVALUE 9990

NOCACHE

NOCYCLE;

Creare posti di lavoro TABLE

( job_id VARCHAR2(10)

, Job_title VARCHAR2 (35)

Vincolo NOT NULL job_title_nn

, NUMERO min_salary (6)

, NUMERO max_salary (6)

);

CREATE UNIQUE INDEX job_id_pk

ON posti di lavoro (job_id);

ALTER TABLE posti di lavoro

ADD (job_id_pk VINCOLO

PRIMARY KEY(job_id)

);

CREATE TABLE dipendenti

( employee_id NUMBER(6)

, First_name VARCHAR2 (20)

, LAST_NAME VARCHAR2 (25)

VINCOLO emp_last_name_nn NOT NULL

, E-mail VARCHAR2 (25)

VINCOLO emp_email_nn NOT NULL

, PHONE_NUMBER VARCHAR2 (20)

, DATA data_assunzione

VINCOLO emp_hire_date_nn NOT NULL

, Job_id VARCHAR2 (10)

VINCOLO emp_job_nn NOT NULL

, Stipendio NUMBER (8,2)

, NUMERO commission_pct (2,2)

, NUMERO manager_id (6)

, NUMERO department_id (4)

, Emp_salary_min VINCOLO

CHECK (stipendio> 0)

, Emp_email_uk VINCOLO

UNIQUE (e-mail)

);

CREATE UNIQUE INDEX emp_emp_id_pk

Sui dipendenti (employee_id);

ALTER TABLE dipendenti

ADD (emp_emp_id_pk VINCOLO

PRIMARY KEY (employee_id)

, Emp_dept_fk VINCOLO

FOREIGN KEY (department_id)

dipartimenti RIFERIMENTI

, Emp_job_fk VINCOLO

FOREIGN KEY (job_id)

Lavoro Referenze (job_id)

, Emp_manager_fk VINCOLO

FOREIGN KEY (manager_id)

dipendenti RIFERIMENTI

);

ALTER TABLE reparti

ADD (dept_mgr_fk VINCOLO

FOREIGN KEY (manager_id)

dipendenti riferimenti (employee_id)

);

CREATE SEQUENZA employees_seq

Iniziare con 207

Incrementa di 1

NOCACHE

NOCYCLE;

CREATE TABLE JOB_HISTORY

( employee_id NUMBER(6)

Vincolo NOT NULL jhist_employee_nn

, DATA START_DATE

Vincolo NOT NULL jhist_start_date_nn

, DATA data_finale

Vincolo NOT NULL jhist_end_date_nn

, Job_id VARCHAR2 (10)

Vincolo NOT NULL jhist_job_nn

, NUMERO department_id (4)

, Jhist_date_interval VINCOLO

CHECK (END_DATE> START_DATE)

);

CREATE UNIQUE INDEX jhist_emp_id_st_date_pk

ON JOB_HISTORY (employee_id, START_DATE);

ALTER TABLE JOB_HISTORY

ADD (jhist_emp_id_st_date_pk VINCOLO

PRIMARY KEY (employee_id, start_date)

, Jhist_job_fk VINCOLO

FOREIGN KEY (job_id)

lavoro Referenze

, Jhist_emp_fk VINCOLO

FOREIGN KEY (employee_id)

dipendenti RIFERIMENTI

, Jhist_dept_fk VINCOLO

FOREIGN KEY (department_id)

dipartimenti RIFERIMENTI

);

COMMETTERE;

4 Inserire il seguente SQL nell'ambiente di sviluppo per aggiungere il dipendente vista dei dettagli al database:

CREARE O SOSTITUIRE VISTA emp_details_view

(ID Dipendente,

job_id,

manager_id,

department_id,

location_id,

country_id,

nome,

cognome,

stipendio,

commission_pct,

Nome Dipartimento,

titolo di lavoro,

città,

state_province,

nome del paese,

REGION_NAME)

AS SELECT

e.employee_id,

e.job_id,

E.id_manager,

e.department_id,

d.location_id,

l.country_id,

e.first_name,

ECOGNOME,

e.salary,

e.commission_pct,

d.department_name,

j.job_title,

l.city,

l.state_province,

c.country_name,

r.region_name

DA PARTE DI

dipendenti e,

dipartimenti d,

posti di lavoro j,

posizioni l,

paesi c,

regioni r

DOVE e.department_id = d.department_id

E d.location_id = l.location_id

E l.country_id = c.country_id

E c.region_id = r.region_id

E m.id_mans = e.job_id

In sola lettura;

COMMETTERE;