Diferencia entre revisiones de «Plantilla:BD/Oracle»

De WikiEducator
Saltar a: navegación, buscar
(Ejecución de JDeveloper)
 
(No se muestran 8 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
===Oracle===
 
===Oracle===
 +
<br />
 +
{{MRM_Definicion|
 +
;Oracle es un sistema gestor de bases de datos relacional con características objeto-Relacional
 +
}}
 +
[[Archivo:t1.png]]<br />
 +
<hr />
 +
;Sirve para almacenar los datos
 +
[[Archivo:3t223.png]]<br />
 +
<hr />
 +
 +
[[Archivo:t3.png]]<br />
 +
<hr />
 +
;Qué es una base de datos relacional
 +
[[Archivo:t202.png]]<br />
 +
<hr />
 +
;Modelo de datos desde Oracle
 +
[[Archivo:t222.png]]<br />
 +
<hr />
 +
;Modelo relacional en Oracle
 +
[[Archivo:t6.png]]<br />
 +
<hr />
 +
;Modelo relacional en Oracle
 +
[[Archivo:t7.png]]<br />
 +
<hr />
 +
;Relación de varias vistas
 +
[[Archivo:t8.png]]<br />
 +
<hr />
 +
;Obtener información con SQL<br />
 +
[[Archivo:t100.png]]<br />
 +
<hr />
 +
;Setencias SQL<br />
 +
[[Archivo:t111.png]]<br />
 +
<hr />
 +
 +
;Entornos para interactuar<br />
 +
[[Archivo:t122.png]]<br />
 +
<hr />
 +
 +
 +
 +
 +
 +
 +
 
====JDeveloper====
 
====JDeveloper====
 
sudo add-apt-repository ppa:webupd8team/java
 
sudo add-apt-repository ppa:webupd8team/java
Línea 40: Línea 84:
 
*Escribimos en línea de comandos
 
*Escribimos en línea de comandos
 
  sqldeveloper &  
 
  sqldeveloper &  
{{nota:El '''''&''''' es para que se ejecute en background y tener disponible el terminal}}
+
{{nota|El '''''&''''' es para que se ejecute en background y tener disponible el terminal}}
 
*Entonces aparece la herramienta.
 
*Entonces aparece la herramienta.
 
*Esta aplicación es un cliente que nos va a permitir conectarnos con una base de datos de Oracle
 
*Esta aplicación es un cliente que nos va a permitir conectarnos con una base de datos de Oracle
Línea 104: Línea 148:
  
 
;Fichero SQL de creación
 
;Fichero SQL de creación
 +
{{Plegable|hide|Create.sql|
 +
<source lang=sql>
 +
CREATE TABLE REGIONS(
 +
    REGION_ID numeric,
 +
    REGION_NAME varchar(25),
 +
    PRIMARY KEY (REGION_ID));
 +
 +
 +
CREATE TABLE COUNTRIES(
 +
    COUNTRY_ID CHAR(2),
 +
    COUNTRY_NAME varchar(40),
 +
    REGION_ID numeric,
 +
    PRIMARY KEY (COUNTRY_ID),
 +
    FOREIGN KEY(REGION_ID) REFERENCES REGIONS(REGION_ID));
 +
 +
 +
CREATE TABLE LOCATIONS (
 +
    LOCATION_ID numeric(4),
 +
    STREET_ADDRESS varchar(40),
 +
    POSTAL_CODE varchar(12),
 +
    CITY varchar(30) NOT NULL,
 +
    STATE_PROVINCE varchar(25),
 +
    COUNTRY_ID CHAR(2),
 +
    PRIMARY KEY(LOCATION_ID),
 +
    FOREIGN KEY(COUNTRY_ID) REFERENCES COUNTRIES(COUNTRY_ID));
 +
 +
 +
CREATE TABLE DEPARTMENTS(
 +
  DEPARTMENT_ID numeric(4),
 +
  DEPARTMENT_NAME varchar(30) NOT NULL,
 +
  MANAGER_ID numeric(6),
 +
  LOCATION_ID numeric(4),
 +
  PRIMARY KEY(DEPARTMENT_ID),
 +
  FOREIGN KEY(LOCATION_ID) REFERENCES LOCATIONS(LOCATION_ID));
 +
 +
 +
CREATE TABLE JOBS(
 +
  JOB_ID varchar(10),
 +
  JOB_TITLE varchar(35) NOT NULL,
 +
  MIN_SALARY numeric(6),
 +
  MAX_SALARY numeric(6),
 +
  PRIMARY KEY(JOB_ID));
 +
 +
 +
CREATE TABLE EMPLOYEES(
 +
    EMPLOYEE_ID numeric(6),
 +
    FIRST_NAME varchar(20),
 +
    LAST_NAME varchar(25) NOT NULL,
 +
    EMAIL varchar(25) NOT NULL,
 +
    PHONE_numeric varchar(20),
 +
    HIRE_DATE DATE NOT NULL,
 +
    JOB_ID varchar(10) NOT NULL,
 +
    SALARY numeric(8,2),
 +
    COMMISSION_PCT numeric(2,2),
 +
    MANAGER_ID numeric(6),
 +
    DEPARTMENT_ID numeric(4),
 +
    PRIMARY KEY(EMPLOYEE_ID),
 +
    FOREIGN KEY(JOB_ID) REFERENCES JOBS(JOB_ID),
 +
    FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENTS(DEPARTMENT_ID),
 +
    CONSTRAINT EMP_EMAIL_UK UNIQUE(EMAIL));
 +
 +
 +
CREATE TABLE JOB_HISTORY(
 +
  EMPLOYEE_ID numeric(6),
 +
  START_DATE DATE NOT NULL,
 +
  END_DATE DATE NOT NULL,
 +
  JOB_ID varchar(10) NOT NULL,
 +
  DEPARTMENT_ID numeric(4),
 +
  PRIMARY KEY(EMPLOYEE_ID, JOB_ID),
 +
  FOREIGN KEY(EMPLOYEE_ID) REFERENCES EMPLOYEES(EMPLOYEE_ID),
 +
  FOREIGN KEY(JOB_ID) REFERENCES JOBS(JOB_ID),
 +
  FOREIGN KEY(DEPARTMENT_ID) REFERENCES DEPARTMENTS(DEPARTMENT_ID));
 +
 +
CREATE TABLE JOB_GRADES(
 +
    GRADE_LEVEL varchar(3),
 +
    LOWEST_SAL numeric,
 +
    HIGHEST_SAL numeric);
 +
</source>
 +
 +
}}
  
  
 
;Fichero SQL de inserción
 
;Fichero SQL de inserción
 +
{{Plegable|hide|Insert.sql|
 +
<source lang=sql>
 +
INSERT INTO REGIONS VALUES (1, 'Europe');
 +
INSERT INTO REGIONS VALUES (2, 'Americas');
 +
INSERT INTO REGIONS VALUES (3, 'Asia');
 +
INSERT INTO REGIONS VALUES (4, 'Middle East and Africa');
 +
 +
 +
 +
INSERT INTO COUNTRIES VALUES( 'CA', 'Canada', 2);
 +
INSERT INTO COUNTRIES VALUES( 'DE', 'Germany', 1);
 +
INSERT INTO COUNTRIES VALUES( 'UK', 'United Kingdom', 1);
 +
INSERT INTO COUNTRIES VALUES( 'US', 'United States of America', 2);
 +
 +
 +
 +
INSERT INTO LOCATIONS VALUES( 1400, '2014 Jabberwocky Rd', '26192', 'Southlake', 'Texas', 'US');
 +
INSERT INTO LOCATIONS VALUES( 1500, '2001 Interiors Blvd', '99236', 'South San Francisco', 'California', 'US');
 +
INSERT INTO LOCATIONS VALUES( 1700, '2004 Charade Rd', '98199', 'Seattle', 'Washington', 'US');
 +
INSERT INTO LOCATIONS VALUES( 1800, '460 Bloor St. W.', 'ON M5S 1X8', 'Toronto', 'Ontario', 'CA');
 +
INSERT INTO LOCATIONS VALUES( 2500, 'Magdalen Centre, The Ofxord Science Park', 'OX9 9ZB', 'Oxford', 'Oxford', 'UK');
 +
 +
 +
 +
 +
INSERT INTO DEPARTMENTS VALUES (10, 'Administration', 200, 1700);
 +
INSERT INTO DEPARTMENTS VALUES (20, 'Marketing', 201, 1800);
 +
INSERT INTO DEPARTMENTS VALUES (50, 'Shipping', 124, 1500);
 +
INSERT INTO DEPARTMENTS VALUES (60, 'IT', 103, 1400);
 +
INSERT INTO DEPARTMENTS VALUES (80, 'Sales', 149, 2500);
 +
INSERT INTO DEPARTMENTS VALUES (90, 'Executive', 100, 1700);
 +
INSERT INTO DEPARTMENTS VALUES (110, 'Accounting', 205, 1700);
 +
INSERT INTO DEPARTMENTS VALUES (190, 'Contracting', NULL, 1700);
 +
 +
 +
 +
INSERT INTO JOBS VALUES('AD_PRES', 'President', 20000, 40000);
 +
INSERT INTO JOBS VALUES('AD_VP', 'Administration Vice President', 15000, 30000);
 +
INSERT INTO JOBS VALUES('AD_ASST', 'Administration Assistant', 3000, 6000);
 +
INSERT INTO JOBS VALUES('AC_MGR', 'Accounting Manager', 8200, 16000);
 +
INSERT INTO JOBS VALUES('AC_ACCOUNT', 'Public Accountant', 4200, 9000);
 +
INSERT INTO JOBS VALUES('SA_MAN', 'Sales Manager', 10000, 20000);
 +
INSERT INTO JOBS VALUES('SA_REP', 'Sales Representative', 6000, 12000);
 +
INSERT INTO JOBS VALUES('ST_MAN', 'Stock Manager', 5500, 8500);
 +
INSERT INTO JOBS VALUES('ST_CLERK', 'Stock Clerk', 2000, 5000);
 +
INSERT INTO JOBS VALUES('IT_PROG', 'Programmer', 4000, 10000);
 +
INSERT INTO JOBS VALUES('MK_MAN', 'Marketing Manager', 9000, 15000);
 +
INSERT INTO JOBS VALUES('MK_REP', 'Marketing Representative', 4000, 9000);
 +
 +
 +
 +
INSERT INTO EMPLOYEES VALUES (100, 'Steven', 'King', 'SKING', '515.123.4567',  DATE '1987-06-17','AD_PRES', 24000, NULL, NULL, 90);
 +
INSERT INTO EMPLOYEES VALUES (101, 'Neena', 'Kochhar', 'NKOCHHAR', '515.123.4568',  DATE '1989-09-21','AD_VP', 17000, NULL, 100, 90);
 +
INSERT INTO EMPLOYEES VALUES (102, 'Lex', 'De Haan', 'LDEHAAN', '515.123.4569',  DATE '1993-01-13','AD_VP', 17000, NULL, 100, 90);
 +
INSERT INTO EMPLOYEES VALUES (103, 'Alexander', 'Hunold', 'AHUNOLD', '590.423.4567',  DATE '1990-01-03','IT_PROG', 9000, NULL, 102, 60);
 +
INSERT INTO EMPLOYEES VALUES (104, 'Bruce', 'Ernst', 'BERNST', '590.423.4568',  DATE '1991-05-21','IT_PROG', 6000, NULL, 103, 60);
 +
INSERT INTO EMPLOYEES VALUES (107, 'Diana', 'Lorentz', 'DLORENTZ', '590.423.5567',  DATE '1999-02-07','IT_PROG', 4200, NULL, 103, 60);
 +
INSERT INTO EMPLOYEES VALUES (124, 'Kevin', 'Mourgos', 'KMOURGOS', '650.123.5234',  DATE '1999-11-16','ST_MAN', 5800, NULL, 100, 50);
 +
INSERT INTO EMPLOYEES VALUES (141, 'Trenna', 'Rajs', 'TRAJS', '650.121.8009',  DATE '1995-10-15','ST_CLERK', 3500, NULL, 124, 50);
 +
INSERT INTO EMPLOYEES VALUES (142, 'Curtis', 'Davies', 'CDAVIES', '650.121.2994',  DATE '1997-01-29','ST_CLERK', 3100, NULL, 124, 50);
 +
INSERT INTO EMPLOYEES VALUES (143, 'Randall', 'Matos', 'RMATOS', '650.121.2874',  DATE '1998-03-15','ST_CLERK', 2600, NULL, 124, 50);
 +
INSERT INTO EMPLOYEES VALUES (144, 'Peter', 'Vargas', 'PVARGAS', '650.121.2004',  DATE '1998-07-09','ST_CLERK', 2500, NULL, 124, 50);
 +
INSERT INTO EMPLOYEES VALUES (149, 'Eleni', 'Zlotkey', 'EZLOTKEY', '011.44.1344.429018',  DATE '2000-01-29','SA_MAN', 10500, .2, 100, 80);
 +
INSERT INTO EMPLOYEES VALUES (174, 'Ellen', 'Abel', 'EABEL', '011.44.1644.429267',  DATE '1996-05-11','SA_REP', 11000, .3, 149, 80);
 +
INSERT INTO EMPLOYEES VALUES (176, 'Jonathan', 'Taylor', 'JTAYLOR', '011.44.1644.429265',  DATE '1998-03-24','SA_REP', 8600, .2, 149, 80);
 +
INSERT INTO EMPLOYEES VALUES (178, 'Kimberely', 'Grant', 'KGRANT', '011.44.1644.429263',  DATE '1999-05-24','SA_REP', 7000, .15, 149, NULL);
 +
INSERT INTO EMPLOYEES VALUES (200, 'Jennifer', 'Whalen', 'JWHALEN', '515.123.4444',  DATE '1987-09-17','AD_ASST', 4400, NULL, 101, 10);
 +
INSERT INTO EMPLOYEES VALUES (201, 'Michael', 'Hartstein', 'MHARTSTE', '515.123.5555',  DATE '1996-02-17','MK_MAN', 13000, NULL, 100, 20);
 +
INSERT INTO EMPLOYEES VALUES (202, 'Pat', 'Fay', 'PFAY', '603.123.6666',  DATE '1997-08-17','MK_REP', 6000, NULL, 201, 20);
 +
INSERT INTO EMPLOYEES VALUES (205, 'Shelley', 'Higgins', 'SHIGGINS', '515.123.8080',  DATE '1994-06-07','AC_MGR', 12000, NULL, 101, 110);
 +
INSERT INTO EMPLOYEES VALUES (206, 'William', 'Gietz', 'WGIETZ', '515.123.8181',  DATE '1994-06-07','AC_ACCOUNT', 8300, NULL, 205, 110); 
 +
 +
 +
INSERT INTO JOB_HISTORY VALUES( 102,DATE '1993-01-13',DATE  '1998-07-24', 'IT_PROG', 60);
 +
INSERT INTO JOB_HISTORY VALUES( 101,DATE '1989-09-21',DATE  '1993-10-27', 'AC_ACCOUNT', 110);
 +
INSERT INTO JOB_HISTORY VALUES( 101,DATE '1993-10-28',DATE  '1997-03-15', 'AC_MGR', 110);
 +
INSERT INTO JOB_HISTORY VALUES( 201,DATE '1996-06-02', DATE '1999-12-19', 'MK_REP', 20);
 +
INSERT INTO JOB_HISTORY VALUES( 144,DATE '1998-03-24',DATE '1999-12-31', 'ST_CLERK', 50);
 +
INSERT INTO JOB_HISTORY VALUES( 142,DATE '1997-01-29',DATE  '1999-12-31', 'ST_CLERK', 50);
 +
INSERT INTO JOB_HISTORY VALUES( 200,DATE '1987-09-17',DATE '1993-06-17', 'AD_ASST', 90);
 +
INSERT INTO JOB_HISTORY VALUES( 176,DATE '1998-03-24',DATE '1998-12-31', 'SA_REP', 80);
 +
INSERT INTO JOB_HISTORY VALUES( 176,DATE '1999-01-01', DATE '1999-12-31', 'SA_MAN', 80);
 +
INSERT INTO JOB_HISTORY VALUES( 200,DATE '1994-07-01',DATE  '1998-12-31', 'AC_ACCOUNT', 90);
 +
 +
 +
 +
INSERT INTO JOB_GRADES VALUES('A', 1000, 2999);
 +
INSERT INTO JOB_GRADES VALUES('B', 3000, 5999);
 +
INSERT INTO JOB_GRADES VALUES('C', 6000, 9999);
 +
INSERT INTO JOB_GRADES VALUES('D', 10000, 14999);
 +
INSERT INTO JOB_GRADES VALUES('E', 15000, 24999);
 +
INSERT INTO JOB_GRADES VALUES('F', 25000, 40000);
 +
</source>
 +
 +
}}
 +
 +
{{Plegable|hide|drop.sql|
 +
 +
<source lang=sql>
 +
DROP TABLE JOB_GRADES;
 +
DROP TABLE JOB_HISTORY;
 +
DROP TABLE EMPLOYEES;
 +
DROP TABLE JOBS;
 +
DROP TABLE DEPARTMENTS;
 +
DROP TABLE LOCATIONS;
 +
DROP TABLE COUNTRIES;
 +
DROP TABLE REGIONS;
 +
</source>
  
====Consultas sql====
+
}}

Última revisión de 22:12 14 may 2018

Oracle



Icon define.gif
Definición
Oracle es un sistema gestor de bases de datos relacional con características objeto-Relacional


T1.png


Sirve para almacenar los datos

Archivo:3t223.png


T3.png


Qué es una base de datos relacional

T202.png


Modelo de datos desde Oracle

T222.png


Modelo relacional en Oracle

T6.png


Modelo relacional en Oracle

T7.png


Relación de varias vistas

T8.png


Obtener información con SQL

T100.png


Setencias SQL

T111.png


Entornos para interactuar

T122.png





JDeveloper

sudo add-apt-repository ppa:webupd8team/java

apt-get update

apt-get install oracle-java8-installer

update-alternatives –config java

  • Descargamos el fichero a instalar
  • Hay que registrarse en oracle (Crear una cuenta)
http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html 
  • Descargamos en Other Platforms” y se pincha “Downlad” son 334MB.
  • Lo tendremos en “/home/usuario/Descarga”
  • Habremos descargado sqldeveloper-4.1.5.21.78-no-jre.zip
  • Ahora se trata de descomprimirlo y tenerlo accesible. por ejemplo lo extraeremos en /opt
cd /home/usuario/descarga
sudo unzip sqldeveloper-4.1.5.21.78-no-jre.zip -d /opt
  • Ahora debemos editar el fichero shell que lanzará el programa de developer
sudo  vim /opt/sqldeveloper/sqldeveloper.sh
  • Localizar y comentar las sigueintes líneas
!/bin/bash
cd “`dirname $0`”/sqldeveloper/bin && bash sqldeveloper $*
  • Y las comentamos con # al principio de la línea
#!/bin/bash
#cd “`dirname $0`”/sqldeveloper/bin && bash sqldeveloper $*
  • Añadimos la siguiente línea
export JAVA_HOME=/usr/lib/jvm/java-8-oracle/ 
cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $* &
  • Y ahora creamos un enlace simbólico para poderlo ejecutar desde la línea de comandos en cualquier ubicación
sudo ln -s /opt/sqldeveloper/sqldeveloper.sh /usr/local/bin/sqldeveloper

Ejecución de JDeveloper

  • Escribimos en línea de comandos
sqldeveloper & 

(Comment.gif: El & es para que se ejecute en background y tener disponible el terminal)


  • Entonces aparece la herramienta.
  • Esta aplicación es un cliente que nos va a permitir conectarnos con una base de datos de Oracle
  • La base de datos estará en un servidor de bases de datos de oracle.
  • Podemos instalarnos una. Oracle deja instalar una versión llamada express para probar
  • Aquí puedes ver una forma deinstalarlo para linux
https://jmguimera.blogspot.com.es/2016/08/como-instalar-y-configurar-oracle-11g.html
  • Nosotros nos concectaremos a una que hay en el instituto en el servidor 172.30.160.190 (ip privada interna)
  • ver imágenes

Sqldeveloper.png


Developer conexion.png


Creando una base de datos para trabajar

Especificación del sistema

Vamos a especificar el sistema con el cual vamos a trabajar

Los empleados  (EMPLOYEES) trabajan en un departamento. 
De los empleados se quiere saber la siguiente información 
   EMPLOYEE_ID
   FIRST_NAME ,
   LAST_NAME ,
   EMAIL ,
   PHONE_,
   HIRE_DATE ,
   SALARY ,
   COMMISSION_PCT ,
Puede que algunos empleados no estén asignados a ningún departamento. 
En Los departamentos (DEPARTMENTS )trabajan los empleados.
De cada departamento se quiere saber
  DEPARTMENT_ID ,
  DEPARTMENT_NAME
Cada departamento es gestionado por un  empleado.
Cada empleado puede tener diferentes tipos de cargos (JOBS).  
de los JOBS se quiere saber
    GRADE_LEVEL,
    LOWEST_SAL ,
    HIGHEST_SAL
Se quiere saber todos los trabajos realizados por los empleados . Si un empleado cambia de
departamento dentro de un mismo cargo o cambia de cargo dentro de un mismo departamento.
Se insertará una nueva fila en esta tabla con la información del antiguo cargo del empleado.
Un Empleado va a ser jefe de otros empleados y cada empleado va a tener un jefe.
Cada departamento va a tener una dirección (LOCATIONS), 
De cada localidad se quiere conocer:
    LOCATION_ID,
    STREET_ADDRESS ,
    POSTAL_CODE ,
    CITY ,
    STATE_PROVINCE
Cada localidad va a pertenecer a una ciudad (COUNTRIES)
   COUNTRY_ID,
   COUNTRY_NAME, 
y cada ciudad va a pertenecer a una region
   REGION_ID,
   REGION_NAME 
Diagrama E/R

Archivo:Modelo ER HR dia.png Modelo ER HR.png

Modelo Relacional


Fichero SQL de creación


Fichero SQL de inserción