Beruflich Dokumente
Kultur Dokumente
1 Parte
ROUTING
Variables de Entorno________________________________________________________9
Instalacin de la Base de Datos__________________________________________10
SQL Developed_____________________________________________________________11
T 01 - Introduccin_________________________________________________________13
Historia.............................................................................................................. 13
Estndares SQL................................................................................................ 13
Funcionamiento del Lenguaje SQL....................................................................13
Componentes del Lenguaje SQL........................................................................13
DDL................................................................................................................... 14
DCL................................................................................................................... 14
DML................................................................................................................... 14
TC...................................................................................................................... 15
Objetos de un Esquema................................................................................. 15
Reglas para Nombrar los Objetos de la Base de Datos............................15
Objetos de un Esquema................................................................................. 15
Objetos de un Esquema................................................................................. 15
Referenciar Objetos de la Base de Datos....................................................15
Tipos de Datos Oracle.................................................................................... 16
Cadenas de Caracteres................................................................................... 16
Numricos......................................................................................................... 16
Fechas............................................................................................................... 17
Lobs (Objetos Grandes).................................................................................. 17
Otros................................................................................................................. 17
Tema 02 - DDL____________________________________________________________18
Comandos DDL................................................................................................ 18
Tipos de Tablas................................................................................................ 18
Crear Tablas..................................................................................................... 19
Tipos de Datos de las Columnas..................................................................20
Integridad de los Datos.................................................................................. 20
Reglas de Negocio............................................................................................. 20
Integridad de Entidades....................................................................................21
Integridad Referencial........................................................................................ 22
ndices............................................................................................................... 27
Vistas................................................................................................................ 27
Secuencias........................................................................................................ 28
Sinnimos......................................................................................................... 30
Comandos para Modificar Objetos.................................................................30
Rename............................................................................................................... 30
Truncate.............................................................................................................. 30
Diccionario de Vistas....................................................................................... 31
Tema 03 - DML____________________________________________________________32
Select................................................................................................................ 32
Operadores SQL............................................................................................... 33
Operador de Concatenacin..............................................................................33
Operador de Comparacin................................................................................33
Condiciones Lgicas........................................................................................... 33
Operador de Pertenencia...................................................................................34
Operador de Rango de Valores........................................................................34
Operador Like..................................................................................................... 34
Operador Null..................................................................................................... 35
Operador Set o de Conjuntos..........................................................................35
Operador Exists.................................................................................................. 35
Funciones Programadas................................................................................... 36
Funciones de Fila Simple..................................................................................36
Funciones Numricas................................................................................36
Cadena de Caracteres.............................................................................37
Funciones de Fecha y Hora....................................................................38
Funciones de Conversin.........................................................................39
Mscaras de Formato...............................................................................40
Otras Funciones........................................................................................ 40
Variables de Entorno................................................................................41
Funciones de Grupo........................................................................................... 42
Clusula Using..........................................................................................43
Clusula On.............................................................................................. 43
Uniones Self-Join................................................................................................. 44
Uniones Externas: Outer Join.............................................................................44
Uniones Cruzadas............................................................................................... 45
La Expresin Case........................................................................................... 45
Subconsultas..................................................................................................... 46
Sentencia Insert............................................................................................... 47
Sentencia Insert Multitabla............................................................................. 48
Sentencia Update............................................................................................. 50
Sentencia Delete.............................................................................................. 50
Sentencia Merge.............................................................................................. 50
Sentencias Transaccionales.............................................................................. 52
Sentencia Commit............................................................................................ 52
Sentencia Rollback........................................................................................... 53
Sentencia Savepoint........................................................................................ 53
Ejercicios____________________________________________________________________55
01. Creacin de Tablas................................................................................... 55
02. Create Table.............................................................................................. 56
03. Hospital - Consultas - Hoja 4......................................................................61
04. Hospital - Consultas - Hoja 5......................................................................69
05. Hospital - Consultas - Hoja 6......................................................................70
06. Hospital - Consultas - Hoja 7......................................................................72
07. Hospital - Consultas - Hoja 8......................................................................75
08. Hospital - Consultas - Hoja 9......................................................................78
Tema 1 - XXX
1. XXXXXXXXXX
1.1. DDL (Data Definition Languaje) Crear estructura.
1.2. DML
consultas.
(Data
Manipulation
Disparadores.
2.11.
Cursores Variables.
2.12.
SQL Dinmico.
TEMA 1 EXPLORING
THE
TEMA 10 MANAGING
UNDO DATA.
Variables de Entorno
Los nombres de las Variables de Entorno van siempre con todas las letras en
maysculas.
1. Oracle_Base:
Es la ruta de partida para la base de datos.
Cuando instalas el programa, esta variable se corresponde con la
Ubicacin del Directorio Base de Oracle.
2. Oracle_Home: Es un subdirectorio de Oracle_Base que contiene el software
de Oracle propiamente dicho, para una versin dada.
Cuando instalas el programa, esta variable se corresponde con la
Ubicacin del Directorio Raz de Oracle.
3. Oracle_Sid:
dentro123
3.
HR:
hr
Corresponde a Recursos Humanos.
4.
SH:
sh
Corresponde a Ventas.
5.
SCOTT:
tiger
Slo tiene 4 tablas: empleados, departamentos, bonos y trabajos.
Esta cuenta es bastante intil pero se mantiene por causas sentimentales.
10
SQL Developed
desde
JAVA\JDK1.7.0_03\BIN
al
directorio
el
siguiente
valor:
B. Agregar
JAVA_HOME
con
C:\PROGRAMFILES\JAVA\JDK1.7.0.
el
siguiente
valor:
C. Agregar
PATH
con
valor: ;C:\PROGRAMFILES\JAVA\JDK1.7.0\BIN.
el
siguiente
CONN.DBA.
B. USER NAME SYS.
C. ROLE SYSDBA1.
D. HOSTNAME LOCALHOST.
2. SEGUNDA CONEXIN.
A. CONNECTION
NAME
CONN.HR.
E. PASSWORD DENTRO123.
F. PORT 1521.
G. SID ORCL.
E. PASSWORD
HR.
1
Para todos los usuarios el rol es
es SYSDBA.
DEFAULT,
11
SYS,
cuyo rol
F. PORT 1521.
G. SID ORCL.
3. TERCERA CONEXIN.
A. CONNECTION
NAME
CONN.SH.
B. USER NAME SYS.
C. ROLE DEFAULT.
D. HOSTNAME LOCALHOST.
E. PASSWORD SH.
F. PORT 1521.
G. SID ORCL.
4. CUARTA CONEXIN.
A. CONNECTION
NAME
CONN.SCOTT.
B. USER NAME SCOTT.
C. ROLE DEFAULT.
D. HOSTNAME LOCALHOST.
E. PASSWORD TIGER.
F. PORT 1521.
G. SID ORCL.
12
T 01 - Introduccin
Historia
SQL (STRUCTURED QUERY LANGUAJE). Es un lenguaje utilizado para el acceso y la
manipulacin de datos en una base de datos.
En 1974 define el lenguaje DONALD CHAMBERLIN (IBM), llamndolo SEQUEL
(Structured English QUEry Languaje).
En 1977 se hace una revisin del lenguaje, y por motivos legales se cambia el
nombre a SQL.
En 1979 adquiere el lenguaje la compaa RELATIONAL SOFTWARE INC.
(posteriormente ORACLE) y lo incorpora a su Base de Datos.
Entre 1980 y 1989 los principales distribuidores de Bases de datos
relacionales adoptan SQL como lenguaje, con lo que se establece como estndar
industrial.
Estndares SQL
El estndar SQL est sujeto a los estndar ANSI e ISO. Fue publicado en 1999,
con el nombre SQL:99.
ANSI X3.135-1999, DATABASE
LANGUAGE
SQL.
LANGUAGE
SQL.
Varias tablas.
ESQUEMA
13
TABLA
nicos.
TABLA
CAMPO
CAMPO
ROW ID
oculta.
Orden no determinado.
DDL
El DATA DEFINITION LANGUAJE (DDL) es el que se encarga de la
modificacin de la estructura de los objetos de la Base de Datos. Incluye
rdenes para modificar, borrar o definir las tablas en las que se almacenan
los datos de la Base de Datos.
1. CREATE
2. ALTER
5. RENAME
DCL
1. GRANT
2. REVOKE
Dar permisos.
Quitar permisos.
DML
Es un lenguaje proporcionado por el sistema de gestin de la Base de Datos
que permite a los usuarios llevar a cabo las tareas de consulta o manipulacin de
los datos, organizados por el modelo de datos adecuado.
1. SELECT Selecciona datos de una Base de Datos. Este comando produce una
tabla (temporal).
14
TC
1. COMMIT
2. ROLLBACK
Objetos de un Esquema
Los que ms nos interesan son las TABLAS, SINNIMOS, VISTAS, SECUENCIAS e
NDICES.
Otros que veremos sern BLOQUES ALMACENADOS, PAQUETES y DISPARADORES.
15
Objetos de un Esquema
1. CLSTERS
7. DIMENSIONES
13. VISTAS
2. DB LINKS
8. CLASES JAVA
14. SECUENCIAS
3. TABLAS
9. LOGS
VISTAS
4. SINNIMOS
DE
19. OBJETOS
TABLA
15. LIBRERAS
16. NDICES
5. BLOQUES
ALMACENADOS
10. OBJETOS
6. PAQUETES
12. DISPARADORES
11. RESTRICCIONES
18. RECURSOS
JAVA
17. VISTAS
MATERIALIZADA
21.
22. Objetos de un Esquema
1. CONTEXTOS
3. ROLES
5. DIRECTORIOS
2. FICHEROS
4. TABLESPACES
6. PERFILES
7. SEGMENTOS
UNDO
8. USUARIOS
PARMETROS
23.
24. Referenciar Objetos de la Base de Datos
25.
PERTENECIENTES AL USUARIO
2. TABLAS
3. VISTAS
PERTENECIENTES AL USUARIO
4. SINNIMO
PRIVADO
PERTENECIENTE
AL
USUARIO
5. SINNIMO
PBLICO
DE
2. NUMRICO
3. FECHAS
4. LOBS
5. OTROS
6.
7. Cadenas de Caracteres
8. Son sensibles a las maysculas y las minsculas. Se usan entre comillas simple `
.
1. CHAR
16
5. REAL Se usa para nmeros reales. Los nmeros reales son aquellos que
tienen una parte real y otra imaginaria, por ejemplo, 2+e.
6. INT / INTEGER No hay ninguna diferencia entre ellos. Se usa para nmeros
enteros hasta 38 caracteres (dgitos).
17
7. SMALLINT
INTEGER.
8. BINARY_DOUBLE
rpido.
9. BINARY_FLOAT
24.
25. Fechas
26. Internamente, el calendario de Oracle comienza el 1 de enero de 1.411 a.C.
27. Oracle siempre almacena las fechas como DD / MM / AA, as que si queremos
modificar este formato de fecha (por ejemplo, para poner el ao con 4 dgitos),
debemos especificarlo.
28. Hay 6 comandos distintos para modificar las fechas:
1.
DATE
WITH
TIME ZONE
4. TIMESTAMP (PRECISIN) WITH LOCAL TIME ZONE Aadimos la zona horaria local
de la Base de Datos, es decir, la zona horaria del equipo.
5. INTERNAL YEAR (PRECISIN)
(3 aos y 2 meses).
TO
MONTH
18
3. BLOB Es igual que CLOB, pero almacena los datos en lenguaje binario, en
decir, en = y 1.
37. Este es el comando que se utiliza para las fotos.
4. BFILE Guarda un puntero junto al archivo. Es el nico comando que no
almacena los datos en la Base de Datos.
38. Tiene que estar siempre en una carpeta de ORACLE, por lo que
normalmente estar en el servidor.
39.
40. Otros
1. RAW (BYTES) Almacena una cadena de caracteres de longitud variable, con un
tamao mximo de 255 bytes.
2. LONG RAW
41.
19
Para
CREAR
objetos.
2. ALTER
Para
MODIFICAR
3. DROP
Para
BORRAR
4. RENAME
Para
objetos.
RENOMBRAR
5. TRUNCATE Para
COMMIT incluido.
VACIAR
objetos.
objetos, es
decir, borra
todas
las
filas. Lleva
47.
48. Tipos de Tablas
49. Los atributos son los datos que diferencian un objeto de otro. Se pueden usar
para determinar la apariencia, el estado y otras cualidades de objetos que
pertenezcan a esa clase.
1. RELACIONALES O APILADAS
tablas, no hace falta ponerlo.
Tablas
normales. Si
usamos
este
tipo
de
20
POR
21
79.
80. )
DESCRIPCION
VARCHAR2(80)
81.
82. Ejemplo de tabla normal:
83. CREATE TABLE SAL_TRABAJOS (TRABAJO, SAL_MAXIMO,
84. TABLESPACE USERS
85. AS SELECT JOB_ID, MAX(SALARY), MIN(SALARY)
86. FROM EMPLOYEES GROUP BY JOB_ID;
SAL_MINIMO)
87.
88. Ejemplo de tabla con SELECT:
89. CREATE TABLE SAL_TRABAJOS (TRABAJO, SAL_MAXIMO, SAL_MINIMO2)
90. TABLESPACE USERS
91. AS SELECT JOB_ID, MAX(SALARY3), MIN(SALARY4)
92. FROM EMPLOYEES GROUP BY JOB_ID;
93.
94.
95. CREATE TABLE SALARIO_ANUAL_EMPLEADOS
96. TABLESPACE USERS
97. AS SELECT FIRST_NAME || || LAST_NAME NB_EMPLE, SALARY*12 SAL_ANUAL
98. FROM EMPLOYEES;
99. Ejemplo de tabla creada por particiones:
100. CREATE TABLE FACTURAS
101. (
102.
ID_FACTURA NUMBER(6),
103.
ID_PRODUCTO NUMBER (6),
104.
ID_CLIENTE NUMBER(6),
105.
ID_EMPLEADO NUMBER (6),
106.
FECHA_FACTURA DATE,
107.
IMPORTE_FACTURA NUMBER (12,2)
108. )
109. PARTITION BY RANGE (FECHA_FACTURA)
110. (PARTITION FACT_2009 VALUES LESS
111. THAN (TO_DATE(01-ENE-2010,DD-MONYYYY,NLS_DATE_LANGUAGE=SPANISH)),
112. (PARTITION FACT_2010 VALUES LESS
2
No especificamos los campos porque los coge del SELECT.
3
No especificamos los campos porque los coge del SELECT.
4
No especificamos los campos porque los coge del SELECT.
22
(TO_DATE(01-ENE-2012,DD-MON-
116.
117.
1. VARCHAR2 (TAMAO)
5. DATE
10.NCHAR (TAMAO)
2. NVARCHAR2
(TAMAO)
6. RAW (TAMAO)
11.CLOB
7. LONG RAW
12.NCLOB
8. ROWID
13.BLOB
9. CHAR (TAMAO)
14.BFILE
3. NUMBER (PREC,
DEC)
4. LONG
29.
30. Integridad de los Datos
31. Son una serie de reglas / restricciones que tienen que cumplir los datos
para guardarse en la tabla. Por ejemplo, el tipo de datos o el tamao de
esto.
32. Estas restricciones deben cumplir 4 normas bsicas:
1. Es conveniente asignarles un nombre autodefinido (propio) que permita
referirlas de forma fcil con posterioridad. Si el usuario no les asigna un
nombre, el programa las denomina SYS_C<N>, donde <N> es un nmero
entero diferente para cada restriccin.
2. Estas reglas pueden ser definidas a la vez que se crea la
posteriormente.
tabla
que
los
datos
cumplen
las
reglas
que
23
DE
ENTIDADES:
24
3. NOT NULL (NN) Significa que una columna no puede tener un valor
nulo, es decir, que siempre debe contener datos.
62. Se aplica a una columna concreta.
63. Significa que una columna no puede contener un valor
nulo, es decir, siempre tiene que contener datos. Este dato
puede repetirse a lo largo de la columna.
64. Siempre hay que ponerla tras crear la columna. Su
sintaxis es:
65. NOMBRE VARCHAR2 (100) CONSTRAINT PROD_NOMBRE_NN
NOT NULL,
66. Al error le podemos poner el nombre que queramos, pero
lo lgico es que pongamos el nombre de la tabla ( PROD), de la
columna (NOMBRE) y del tipo de error (NN).
4. CHECK (CK) Especifica una condicin que debe ser cierta.
67. Sirve para implementar las reglas de negocio. Por ejemplo,
que el salario sea mayor que 700, o el precio mayor que 0.
68. A la sintaxis hay que aadirle un predicado que nos
devuelva un verdadero o falso:
69. PRECIO_UNIDAD NUMBER (4,2) CONSTRAINT PROD_PREC_CK
CHECK (PRECIO_UNIDAD > 0),
70.
71. Tambin se puede crear esta restriccin comparndola con
otra columna. Debe ir en 2 lneas. Por ejemplo, que el precio sin
IVA sea menor que el precio.
72. PRECIO_SIN_IVA NUMBER (4,2),
73. CONSTRAINT PROD_PREC_SIN_IVA_CK CHECK (PRECIO_SIN_IVA
< PRECIO_UNIDAD),
74.
75. Integridad Referencial
76. Son las restricciones de CLAVE AJENA, FOREIGN KEY. La FOREIGN KEY
establece y obliga a que se cumpla una restriccin de integridad entre
una columna (que ser la TABLA PADRE o CLAVE PRIMARIA) y otra columna
(que ser la TABLA HIJA o CLAVE AJENA).
77. Al hacer la FOREIGN KEY debemos tener en cuenta la Propagacin de
Modificaciones, que sirven tanto para borrado como para modificacin. Hay
3 tipos:
1. NO ACTION Tambin sirve para evitar el borrado de determinados datos.
Por ejemplo, no puedo borrar a un empleado que es jefe de
78. seccin de la columna empleados si antes no lo he borrado
de la columna JEFES.
2. SET NULL
25
si
nos
1. EN
LNEA
2. NO
KEY
86.
87.
88. Sintaxis y Cdigo de las Restricciones
89. La sintaxis general de las restricciones es:
90. NOMBRETABLA_NOMBRECOLUMNA_CODIGORESTRICCIN
91. Los os cdigos de restriccin son:
1. PK
Clave
PRIMARY KEY.
2. FK
KEY.
primaria
o
3. UQ
UNIQUE.
CHECK.
5. NN Obligatorio
o NOT NULL.
92.
93.
94.
95. Modificar Columnas
96. Para poder modificar columnas antes debemos usar el comando
TABLE para modificar la tabla.
ALTER
97. Tras este comando, ya podemos modificar las columnas (excepto la que
sea PRIMARY KEY) con los siguientes comandos:
1. ADD
2. MODIFY
Aadir datos.
100. Para restringir los datos de una columna se usarn los siguientes
comandos:
1. ADD CONSTRAINT
2. DROP CONSTRAINT
26
3. DISABLE CONSTRAINT
Todos los datos de la tabla tienen que cumplir con estas restricciones.
103.
104.
105.
106. Falla cuando insertemos los datos, pero no cuando la tabla est vaca
(al crearla).
107. Las restricciones pueden ser INMEDIATAS o DIFERIDAS, a nivel de
a nivel de TRANSACCIN.
SESIN
27
3. A NIVEL
DIFERIDAS:
DE
124. NB_COL
TIPO_DE_DATOS,
CONSTRAINT
NOMBRE_RESTRICCION_PRIMARY KEY PRIMARY KEY ( NB_COL ),
125. NB_COL TIPO_DE_DATOS,
126. CONSTRAINT NOMBRE_RESTRICCION_FK FOREIGN KEY
(NOMBRE_COL_CLAVE_AJENA)
127. REFERENCES TABLA_PADRE (NOMBRE_COL_PK)
128. ON DELETE CASCADE DEFERRABLE INITIALLY IMMEDIATE
SESIN Slo afecta a esa sesin. Pueden ser INMEDIATAS o
A. ALTER SESSION SET CONSTRAINTS = DEFERRED
deferrable sern DIFERIDAS.
Todas las
Todas las
//
B.
COMMIT.
ALL IMMEDIATE.
Si se hace
129. En el siguiente ejemplo probamos todas las opciones. Tras probar cada
opcin, ir a SQL Plus y probar los 2 INSERT y el COMMIT que vienen al
final:
130.
DROP TABLE
TABLA1
CASCADE CONSTRAINTS;
INSERT INTO
TABLA1
VALUES ( 1, 'DES1' ) ;
140.
INSERT INTO
TABLA1
VALUES ( 1, 'DES2' ) ;
141.
COMMIT;
142. Hay una opcin para que el programa nos diga cuales son los datos
errneos. Todos los script de cdigo Oracle estn en el directorio: %ORACLE
HOME% / PRODUCT / 11.1.0 / DB_1 / RDBMS / ADMIN. Ah buscamos un archivo
que se llama UTLEXCPT, lo abrimos y copiamos el cdigo.
143.
28
145.
146.
147.
148.
ROW_ID ROWID
OWNER VARCHAR2
TABLE_NAME
CONSTRAINT
( 30 ) ,
VARCHAR2 ( 30 ) ,
VARCHAR2 ( 30 ) ) ;
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
;
(
ROW_ID ROWID,
OWNER VARCHAR2
TABLE_NAME
CONSTRAINT
ALTER TABLE DEPARTMENTS
( 30 ) ,
VARCHAR2 ( 30 ) ,
VARCHAR2 ( 30 ) ) ;
183.
----
184.
185.
186.
187.
----
188.
DEPARTMENT_ID
29
----
194.
// TRAS
EL
196.
PARA
----
198.
// AHORA
199.
200.
201.
202.
203.
COMMIT
NO
GUARDAR
PK.
WHERE
CONSTRAINT
= 'DEPT_DEPT_ID_PK' ;
204.
205.
VER
EJERCICIO
01. CREACIN
DE
TABLAS.
206.
207.
Modificacin de Tablas
208.
209.
Alter Table
210.
30
3. ENABLE
4. DISABLE
ADMIN
231. ) ;
232. ALTER TABLE [ESQUEMA.]NOMBRE_TABLA
233. ENABLE CONSTRAINT NB_RESTRICCION
234. EXCEPTIONS INTO EXCEPTIONS ;
CONSTRAINT Comando para desactivar restricciones.
235. Sintaxis:
236. ALTER TABLE [ESQUEMA.]NOMBRE_TABLA
237. DISABLE UNIQUE ( COL1 [`, COL2 ] ) |
CONSTRAINT NB_RESTRICCION [CASCADE] ;
UTLEXCPT.SQL
PRIMARY KEY
238.
239.
240.
Drop Table
241. ALTER TABLE sirve para borrar una tabla. Slo se puede borrar una
tabla que no haga referencia a una FOREIGN KEY.
242. Siempre ir seguido de las modificaciones de columnas que hemos
dado anteriormente.
243.
Su sintaxis:
244. DROP
];
TABLE
[ESQUEMA.]NOMBRE_TABLA [
CASCADE CONSTRAINTS
PURGE
ndices
31
249. Son objetos que nos sirven para hacer bsquedas de forma ms
rpida, ya que tiene la columna organizada alfabticamente.
250. Para crear un NDICE sobre una o varias columnas, stas deben cumplir
una serie de requisitos:
1. La/s columna/s estn utilizadas en WHERE.
2. La/s columna/s no estn afectadas o tengan operadores ni funciones.
3. Deben tener muchos valores distintos o muchos nulos.
4. Buscar datos concretos de informacin, es decir, que se use un ndice si
en las bsquedas devuelve menos del 8%.
251.
253.
255.
257.
258.
260.
262. Debemos tener en cuenta que una columna que ya tiene un NDICE no
puede volver a ser indexada. En cambio, si el NDICE es sobre varias
columnas, s se puede volver a indexar. Es decir, que si ya tengo un NDICE
sobre la columna A, no podremos hacer otro NDICE sobre esa misma
columna, pero en cambio s que podermos hacer un NDICE sobre la
columna A, B y C.
263. Tambin debemos tener en cuenta que las restricciones de PRIMARY
KEY y UNIQUE crean un NDICE automticamente de sus columnas.
264.
266.
267.
268.
Vistas
271.
Su sintaxis:
272. CREATE [ OR REPLACE ] [ FORCE |
COL2, , COLN ) ] AS SUBCONSULTA WITH
32
[(
COL1,
273.
INSERT
seguridad. Con
), modificar (
ellas
UPDATE
) y
287.
288. Cualquier operacin que hagamos sobre una vista, lo que har ser
insertar, modificar o borrar los datos de la tabla a los que accede la
vista. Para poder realizar estas operaciones debemos tener en cuenta
determinadas reglas para cada operacin:
1. INSERT Para que se pueda insertar datos en la tabla desde las
columnas de la vista debe tener todas las columnas como NOT NULL.
289.
Esto es porque cuando insertamos en la vista, todas las
columnas que no estn en la vista entran con un valor NOT NULL.
2. UPDATE Tiene que cumplir 2 condiciones:
A. Que ninguna de las columnas de la SELECT est modificada
por operadores o funciones.
B. Que el resultado de la SELECT no est agrupado.
3. NO FORCE La vista slo est definida sobre una tabla. Tambin tiene
que cumplir las mismas condiciones que Update:
A. Que ninguna de las columnas de la SELECT est modificada
por operadores o funciones.
B. Que el resultado de la SELECT no est agrupado.
290. Si queremos comprobar que los datos que vamos a modificar cumplen
con las reglas, la sintaxis sera:
291. CREATE VIEW NB_VISTA [ ( COL1, COL2, , COLN ) ] AS SUBCONSULTA
WITH CHECK OPTION ;
292. Para borrar una lista:
33
293.
294.
295.
296.
Secuencias
los
cdigos
de
la
columna
Su sintaxis es:
300. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA
301. [ START WITH NUM_ENTERO ]
302. [ INCREMENT BY NUM_ENTERO ]
303. [ MAXVALUE NUM_ENTERO | NOMAXVALUE ]
304. [ MINVALUE NUM_ENTERO | NOMINVALUE ]
305. [ CYCLE | NOCYCLE ]
306. [ CACHE NUM_ENTERO | NOCACHE ] ;
307. Para decirle desde qu nmero debe comenzar:
308. CREATE
SEQUENCE
[ESQUEMA.]NB_ SECUENCIA
START
WITH
NUMERO_ENTERO ;
309. Para decirle cul debe ser su incremento:
310. CREATE
SEQUENCE
[ESQUEMA.]NB_ SECUENCIA
INCREMENT
BY
NUM_ENTERO ;
311. Para decirle que tiene un nmero como mximo o mnimo:
312. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA MAXVALUE | MINVALUE
NUM_ENTERO ;
313. Para decirle que NO tiene un nmero como mximo o mnimo:
314. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA NOMAXVALUE | NOMINVALUE
;
315. Para decirle que cuando llegue al valor mximo vuelva a empezar:
316. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA CYCLE ;
317. Para decirle que cuando llegue al valor mximo NO vuelva a empezar:
318. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA NOCYCLE ;
319. Para cuando insertamos muchos datos a la vez podemos hacerlo en
bloques, por ejemplo, de 50. Para ello:
320. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA CACHE NUM_ENTERO ;
321. Cuando insertamos muchos datos a la vez pero NO queremos hacerlo
en bloques sino que se haga uno a uno:
322. CREATE SEQUENCE [ESQUEMA.]NB_ SECUENCIA NOCACHE ;
323. Ejemplo:
324. CREATE SEQUENCE SEQL START WITH 100 INCREMNET BY 5 ;
325. Si lo que queremos es ver el valor por el que vamos:
326. SELECT NB_SECUENCIA.CURVAL ;
327. Si lo que queremos es generar el siguiente valor:
328. SELECT NB_SECUENCIA.NEXTVAL ;
34
329.
337.
339.
340.
341.
Sinnimos
Su sintaxis:
344. CREATE [
PUBLIC
1. PRIVADOS
2. PUBLICOS
359.
360.
Rename
35
361.
363.
364.
Truncate
365. Sirve para vaciar una tabla, es decir, para borrar slo los datos de una
tabla, hay que tener en cuenta las restricciones de los datos y que
conlleva el comando Commit, es decir, que no se puede recuperar.
366.
Su sintaxis es:
A. TABLAS:
1. SELECT * FROM USER_TABLES,
375. Esta vista da informacin sobre todas las tablas que
pertenecen al USUARIO.
2. SELECT * FROM ALL_TABLES,
376. Da informacin de todas la tablas a las que el usuario
tenga acceso, sea o no usuario.
377. Da la misma informacin que USER_TABLES, pero adems
aade una columna para indicar quin es el PROPIETARIO.
3. SELECT * FROM DBA_TABLES,
378. Da informacin de todas las tablas que hay en el
sistema, pero slo puede ejecutarse como ADMINISTRADOR.
4. SELECT * FROM USER_TAB_COLUMS,
379. Da informacin sobre las columnas que pertenecen al
USUARIO.
5. SELECT * FROM ALL_TAB_COLUMS,
380. Da informacin sobre las columnas a las que el USUARIO
tiene visibilidad.
6. SELECT * FROM DBA_TAB_COLUMS,
381. Da informacin sobre todas las columnas que existen
pero slo puede ejecutarlo el ADMINISTRADOR.
7. SELECT * FROM USER_CONSTRAINTS,
382. Da informacin sobre todas las restricciones de las tablas
de las que es propietario el USUARIO.
8. SELECT * FROM ALL_CONSTRAINTS,
383. Da informacin sobre todas las restricciones de las tablas
sobre las que el usuario tiene visibilidad.
9. SELECT * FROM USER_CONS_COLUMS,
36
384. Da
informacin
de
las
columnas
que
usan
las
restricciones que pertenecen al USUARIO.
10. SELECT * FROM ALL_CONS_COLUMS,
385. Da
informacin
de
las
columnas
que
usan
las
restricciones de las tablas que el USUARIO puede ver.
11. SELECT * FROM DBA_CONS_COLUMS,
386. Da
informacin
de
las
columnas
que
usan
las
restricciones de todas las tablas. Slo puede ejecutarlo el
ADMINISTRADOR.
B. NDICES:
1. SELECT *
2. SELECT *
FROM USER_INDEXES,
FROM ALL_INDEXES,
3. SELECT *
FROM DBA_INDEXES,
1. SELECT *
2. SELECT *
FROM USER_VIEWS,
FROM ALL_ VIEWS,
3. SELECT *
C. VISTAS:
D. SECUENCIAS:
1. SELECT *
2. SELECT *
FROM USER_SEQUENCES,
FROM ALL_ SEQUENCES,
3. SELECT *
E. SINNIMOS:
1. SELECT *
2. SELECT *
3. SELECT *
FROM USER_SYNONYMS,
FROM ALL_ SYNONYMS,
FROM DBA_ SYNONYMS,
37
387.
Tema 03 - DML
388.
389. El LENGUAJE DE MANIPULACIN DE DATOS (DML) se encarga de la
recuperacin (SELECT), insercin (INSERT), eliminacin (DELETE), modificacin
(UPDATE) e insercin y/o modificacin de la informacin (MERGE).
390.
391. Para conocer la estructura de una tabla podemos usar dos comandos:
DESCRIBE NOMBRE_TABLA o DESC NOMBRE_TABLA.
392.
393.
Select5
394.
395.
396.
397.
[WHERE
BUSQUEDA]
[GROUP
BY
398.
399.
En donde:
400.
SELECT
401.
SELECT *
LISTA_COLUMNAS
WHERE
CONDICION_DE_BUSQUEDA
Es un filtrado de datos.
408. Para poder hacerlo la CONDICION_DE_BUSQUEDA siempre
tiene que ser o VERDADERO (devuelve la fila) o FALSO (no
devuelve la fila).
5
Proyeccin
Columnas; Select
Filas.
38
409. GROUP BY LISTA_COLUMNAS Sirve para agrupar los datos devueltos del
WHERE, para resumirlos.
410. Por ejemplo, de mayor a menor salario, o cuntos
empleados hay en cada uno de los departamentos.
411. HAVING CONDICION_DE_BUSQUEDA Hace un filtrado de datos de los datos
ya agrupados.
412. Por
ejemplo, que
nos
devuelva
slo
los
departamentos que tengan ms de 5 empleados.
413. ORDER BY LISTA_COLUMNAS Sirve para establecer el orden por nombre de
columna, por alias o por el orden de columnas del SELECT.
414. Por defecto, el orden es ascendente. Si queremos que
sea descendente hay que aadir DESC al final.
415. El procesamiento de una Select consiste en el filtrado de filas con
WHERE, la agrupacin con GROUP BY, el filtrado de filas agrupadas con
HAVING y la ordenacin de la informacin con ORDER BY. Estos comandos
tienen que ir siempre en este orden, ya que es el orden en el que JAVA
trata los SELECT.
416.
Operadores SQL
417.
1. UNARIOS Interactan
elemento ( + o - ).
slo
con
un
elemento. Slo
dan
el
signo
del
Operador de Concatenacin
Operador de Comparacin
39
Igual
2. >
Mayor
3. <
Menor
7. != Diferente
de, distinta a
5. <= Menor o
igual
palabras
SALARY
>=
ANY
ALL
15.
16.
17.
6. AND
30. A igualdad de condiciones dentro del WHERE (por ejemplo, que todos sean
AND), se evalan en orden.
40
DE
38.
39. Operador de Rango de Valores
40. Los OPERADORES
DE
RANGO
DE
DE
CARACTERES.
46. Por ejemplo, queremos buscar todas las palabras que empiecen por S y
acaben por K, para lo que escribiramos:
47. SELECT JOB_ID, SALARY FROM EMPLOYEES WHERE JOB_ID
podra devolver tanto SK, como SEEK, como SH_CLERK.
LIKE
` S % K Nos
48. Si queremos que devuelva slo las que tienen 3 caracteres sera:
41
49. SELECT
FROM EMPLOYEES
WHERE
JOB_ID LIKE
`S_K
NULL
2. IS NOT
nulos.
NULL
54.SELECT
COMMISSION_PCT,
COMMISSION_PCT IS NOT NULL
SALARY
FROM
NO
EMPLOYEES
sean
WHERE
55.
56. Operador Set o de Conjuntos
57. Los OPERADORES SET son los ms difciles. Trabajaremos
conjuntos. Cada conjunto ser un SELECT distinto.
con
varios
2. UNION ALL Es igual que UNION pero no quita los duplicados ni los
ordena. Su sintaxis sera:
63. SELECT X FROM Y UNION ALL SELECT P FROM Q
3. INTERSECT Slo devuelven las filas que estn en los 2 conjuntos a la
vez. Su sintaxis sera:
64. SELECT X FROM Y INTERSECT SELECT P FROM Q
65. Devuelve los datos ordenados y quita los duplicados, es
decir, que slo devuelve el dato en comn una vez en total, no
una por cada columna en la que est.
42
si
un
operador
existe
dentro
de
una
FROM DEPARTMENT D
WHERE EXISTS
73. WHERE
(SELECT *
FROM EMPLOYEES E
E.DEPARTMENT_ID
D.DEPARTMENT_ID)
de
75. Debemos tener en cuenta que este operador tarda en ejecutarse ya que
la subconsulta se ejecuta para cada fila, as que si la subconsulta tarda
un minuto y tenemos 80 filas en la tabla, tardar 80 minutos.
76.
77. Funciones Programadas
78.
79. Funciones de Fila Simple
80. Por cada operacin devuelve un valor:
SALIDA ( 1 VALOR ) .
ENTRADA
(1
VALOR
FUNCION F( X
81. Todas las funciones que vamos a ver se pueden utilizar en SELECT, WHERE,
HAVING y en ORDER BY.
82. Se puede dividir en 5 tipos segn el tipo de datos de los argumentos de
entrada: FUNCIONES NUMRICAS, FUNCIONES DE CARACTERES, FUNCIONES DE FECHAS,
FUNCIONES DE CONVERSIN y OTROS.
83.
84. Funciones Numricas
85. Son funciones que aceptan como entrada nmeros y que tambin tienen
como salida nmeros. Se subdividen en 5 grupos:
86.
1. OPERACIONES ARITMTICAS
1. ABS (
signo.
NUM
43
FROM DUAL;
2. MOD (
3. POWER (
4. SQRT (
5. EXP (
6. LN (
NUM
NUM
NUM
7. LOG (
) Devuelve el resto.
88.SELECT MOD ( 25 , 25 ), MOD ( 28 , 5 )
FROM DUAL;
) Potencia. Es M elevado a N.
89.SELECT POWER ( 3 , 2 ), POWER ( 9 , 3 )
FROM DUAL;
) Es el cuadrado.
90.SELECT SQRT ( 81 ), SQRT ( 70 )
FROM DUAL;
) Logaritmo de M elevado a N.
93.SELECT LOG ( 25 , 2 ) FROM DUAL;
NUM.
NUM.
44
DE
REDONDEO
Cadena de Caracteres
45
1.
2.
SUBSTR
3.
UPPER
4.
CONCAT
CAD1
CAD2
DUAL;
LOWER
(
(
5.
INITCAP
6.
REPLACE
7.
LPAD
CAD
CAD
)
)
FROM DUAL;
HACE
FROM DUAL;
8.
RPAD
9.
LTRIM
LPAD
PROBAR
LO
QUE
HACE
, 16 , * )
46
12. LENGTH (
total.
CAD
132. SELECT
DUAL;
LENGTH
PROBAR
LO
QUE
HACE
FROM
Se subdividen en 16 grupos:
1.
SYSDATE
2.
CURRENT_DATE
DATE.
3.
SYSTIMESTAMP
4.
CURRENT_TIMESTAMP
DATE.
zona
horaria.
5.
LOCALTIMESTAMP
6.
SESSIONTIMEZONE
7.
DBTIMEZONE
8.
TZ_OFFSET
en ZONA.
9.
FROM_TZ
ZONA
( TIMESTAMP
una fecha y hora, con
le damos
NUM
) a la
FECHA
47
Funciones de Conversin
148.
Se subdividen en 9 grupos:
Convierte el
ROWID
dado a tipo
CADENA )
NCHAR o
VARCHAR2
LIKE
cuya
%SAAB%
48
CADENA
FORMATO
167. SELECT
Convierte una
TO_NUMBER
CADENA
( 34434 )
de caracteres en
FROM DUAL;
49
CHAR,
Mscaras de Formato
El comportamiento de
RR
181.
182.
184.
185.
189.
186.
187.
50 - 99
0 49
190. La fecha
devuelta est
en el SIGLO
ACTUAL
191. La fecha
devuelta est
en el SIGLO
ANTERIOR al
actual
50 99
194. La fecha
devuelta est
en el SIGLO
POSTERIOR al
actual
195. La fecha
devuelta est
en el SIGLO
ACTUAL
188. ltimos
dos dgitos
del ao actual
en el sistema
193.
183.
196.
197.
198.
Otras Funciones
199.
Se subdividen en 9 grupos:
1. NVL (
EXP1
EXP2
50
204. FROM
2.
NVL2
3.
NULLIF
EXP1
EXP2
EMPLOYEES;
( EXP1 , EXP2 )
son distintas devuelve
Devuelve
NULO
EXP1.
209. SELECT
FIRST_NAME, LENGTH ( FIRST_NAME ),
LAST_NAME, LENGTH ( LAST_NAME ),
210.
NULIFF ( LENGTH ( FIRST_NAME ), LENGTH (
LAST_NAME ) )
211. FROM EMPLOYEES;
4.
COALESCE
NULA.
EXP1
EXP2
, ,
EXPN
NO
212. SELECT
LAST_NAME, EXPLOYEE_ID, MANAGER_ID,
COMMISSION_PCT,
213.
COALESCE ( TO_CHAR ( COMMISSION_PCT ),
214.
TO_CHAR ( MANAGER_ID ), NO
COMMISSION AND NO MANAGER ),
215. FROM EMPLOYEES;
216.
5.
DECODE
DEFAULT
221.
222.
223.
Variables de Entorno
224. Son funciones que no hace falta llamarlas con una tabla sino que
funcionan desde DUAL.
225.
Para ver todas las que tiene SQL podemos usar el siguiente cdigo:
SHOW ALL.
226.
Para usarlas:
51
Se subdividen en 3 grupos:
234.
235.
236.
237.
F(
238.
Funciones de Grupo
ENTRADA
(1
VALOR
FUNCION
Pueden ser:
Hay 7 tipos:
52
245.
3. MAX
4. MIN
5. STDDEV
6. SUM
COLUMNA
Es la desviacin estndar.
248. SELECT STDDEV ( [ DISTINTC | ALL ]
COLUMNA
7. VARIANCE
Es la varianza.
250. SELECT VARIANCE ( [ DISTINTC | ALL ]
COLUMNA
251. Todas las funciones de grupo tienen en comn que no evalan los
valores nulos. Por eso debemos tener muy en cuenta cmo queremos
agrupar.
252.
Nota
253.
254.
255.
VER
EJERCICIO
257.
VER
EJERCICIO
258.
259.
260.
SELF-JOIN,
UNIONES
EXTERNAS
263.
264.
Uniones Naturales
267.
53
269.
268.
AXIS
SINT
NUEVA
270.
273.
271.272.
SELECT LISTA_DE_COLUMNAS FROM TABLAS
274. WHERE
TABLA2.NB_COLUMNA1
TABLA1.NB_COLUMNA1
275. AND
TABLA2.NB_COLUMNA2
TABLA1.NB_COLUMNA2
278. SINT
= 277.AXIS
ANTIGUA
276. AND
TABLA2.NB_COLUMNA3;
TABLA1.NB_COLUMNA3
279.
280. Es un modo de unin que produce algunos resultados errneos, sobre
todo cuando se aaden o renombran columnas, y no permite realizar
uniones de ms de 2 tablas ya que se corre el riesgo de obtener
productos cartesianos.
281.
282.
Los
campos
en
comn
slo
se
muestran
una
vez.
Clusula Using
USING,
290. JOIN
291.
292.
Clusula On
296. JOIN
297. JOIN
TABLA2 ON NB_COLUMNA1
=
NB_COLUMNA1 =
NB_COLUMNA2;
TABLA3 ON
NB_COLUMNA2;
54
298.
299.
300.
Uniones Self-Join
301. En ocasiones puede ser necesario unir una tabla consigo misma para
obtener un resultado determinado. Para ello, se debe instar la tabla 2
veces en la clusula FROM, asignndole un alias diferente.
302.
SELECT LISTA_DE_COLUMNAS
303.
304. ON
ALIAS2.COLUMNA2;
ALIAS1.COLUMNA1
307.
310.
306.
305.
AXIS
SINT
NUEVA
308.309.
SELECT LISTA_DE_COLUMNAS
311.
FROM
314. SINT
313.AXIS
ALIAS1. COLUMNA1 = ALIAS2.
ANTIGUA
TABLA_ALIAS1, TABLA_ALIAS2
312. WHERE
COLUMNA2;
315.
316.
318.
319. ON
E.MANAGER_ID
M.EMPLOYEE_ID;
322.
325.
321.
320.
AXIS
SINT
NUEVA
323.324.
SELECT E.EMPLOYEE_ID, M.EMPLOYEE_ID
326.
327. WHERE
E.MANAGER_ID
M.EMPLOYEE_ID;
329. SINT
328.AXIS
ANTIGUA
330.
331.
332.
333. Los registros que no cumplen las condiciones de unin entre las
tablas, no aparecen en los resultados de las consultas, sin embargo, es
posible mostrar estos registros utilizando las UNIONES EXTERNAS.
334. Estas uniones muestran tanto los registros que cumplen las
condiciones como los que no las cumplen, mostrando la informacin que
falta como valores NULOS.
335. El operador que marca la UNIN EXTERNA en el modo SQL clsico (es
decir, en la sintaxis antigua) de ORACLE es el ( + ), que se coloca junto a
55
IN
o condiciones
OR,
nos devolver el
338. A continuacin veremos los 3 tipos de uniones externas que hay, tanto
su sintaxis actual como la antigua.
1. LEFT OUTER JOIN Recupera todos los resultados de la tabla situada a la
izquierda de la condicin, aunque no haya coincidencias con la
339.
tabla que est a la derecha.
340.
SELECT
DEPARTMENTS D
EMPLOYEE_ID,
DEPARTMENT_NAME
FROM
341.
LEFT
OUTER
JOIN
EMPLOYEES
(E.DEPARTMENT_ID = D.DEPARTMENT_ID);
344. SELECT
EMPLOYEE_ID,
EMPLOYEES E, DEPARTMENTS D
345.
WHERE
D.DEPARTMENT_ID;
DEPARTMENT_NAME
E.DEPARTMENT_ID
ON
343.
342.
AXIS
SINT
NUEVA
FROM
347. SINT
346.AXIS
=
ANTIGUA
348.
2. RIGHT OUTER JOIN Recupera todos los resultados de la tabla situada a
la derecha de la condicin, aunque no haya coincidencias con la
349. tabla que est a la izquierda.
350. SELECT
DEPARTMENTS D
EMPLOYEE_ID,
DEPARTMENT_NAME
FROM
351.
RIGHT
OUTER
JOIN
EMPLOYEES
(E.DEPARTMENT_ID = D.DEPARTMENT_ID);
ON
354.
353.
352.
AXIS
SINT
NUEVA
355.356.
357. SELECT
EMPLOYEE_ID,
EMPLOYEES E, DEPARTMENTS D
358.
WHERE
D.DEPARTMENT_ID;
DEPARTMENT_NAME
E.DEPARTMENT_ID
FROM
360. SINT
359.AXIS
)
ANTIGUA
361.
3. FULL OUTER JOIN Recupera todas las filas de la tabla situada a la
derecha de la sentencia aunque no haya coincidencia con la de la
362. izquierda, y tambin recupera todos los registros de la
tabla izquierda aunque no exista ninguna coincidencia con la
derecha. No se poda realizar con la sintaxis antigua.
363.
SELECT
EMPLOYEE_ID, DEPARTMENT_NAME
56
FROM
DEPARTMENTS
EMPLOYEES E ON
(E.DEPARTMENT_ID
365.
366.
Uniones Cruzadas
369.
370.
371.
372.
La Expresin Case
373. Esta expresin nos devolver una columna. Nos permite relacionar
expresiones del tipo IF THEN ELSE en una sola instruccin sin tener que
llamar a procedimientos externos.
374.
378.
379.
380.
381.
382.
END
383. FROM
[ ALIAS ],
TABLA;
386.
387.
388.
57
389.
390.
ELSE EXPRESION_POR_DEFECTO
391.
END
392. FROM
[ ALIAS ],
TABLA;
393.
394.
395.
Subconsultas
398. Una subconsulta tiene la misma sintaxis que una sentencia SELECT
normal, exceptuando que aparece ejecutada entre parntesis:
399.
SELECT LISTA_DE_COLUMNAS
| *
400.
FROM LISTA_DE_TABLAS
401.
SELECT LISTA_DE_COLUMNAS
402.
FROM LISTA_DE_TABLAS
403.
| *
);
Tiene 3 restricciones:
1. Creacin de tablas.
2. Creacin de vistas.
3. Modificaciones
4. Clusulas
5. Clusula
UPDATE.
WHERE
HAVING.
FROM.
58
408.
409.
A. SUBCONSULTAS
410.
DE
FILA SIMPLE.
Igual.
2. >
Mayor que.
3. > =
4. <
Menos que.
5. < =
6. < >
Distinto.
411.
B. SUBCONSULTAS
412.
DE
FILA MLTIPLE.
IN
2.
ANY
3.
ALL
413. Las subconsultas anidadas son aquellas SUBCONSULTAS HIJAS que constan
de varias SELECT unidas y que juntas conformarn el filtro para la
SUBCONSULTA PADRE.
414.
VER
EJERCICIO
416.
VER
EJERCICIO
418.
VER
EJERCICIO
419.
420.
421.
Sentencia Insert
422. Cambia los datos de la tabla. Lo que hace es aadir filas a una tabla.
Inserta la fila entera SIEMPRE. Lo que no queramos aadir, lo pondremos
como NULL.
423. Estas filas que vamos a insertar deben respetar todas las restricciones
de la tabla.
424.
59
del objeto tabla, dado que los valores se asignan por posicionamiento
relativo.
427.
425.
426.
VALUES
SERIE_DE_VALORES
);
Ejemplo:
428.
429.
VALUES
( 56, I + D + I +
+ I , 121, 1700 );
433.
431.
432.
VALUES
VALOR1
COLUMNA1
VALOR2
,,
COLUMNA2
VALORN
,,
COLUMNAN
);
Ejemplo:
434.
435.
VALUES
( 70, I + D +
MARK
DEPARTMEN_ID
DEPARTMENT_NAME
);
436.
437.
438.
443.
VALUES
2. En el segundo
iguales.
([
COLUMNA1
SENTENCIA SELECT
formato, las
445.
FROM NB_TABLA_FUENTE;
,,
COLUMNAN
] );
estructuras
444.
COLUMNA2
de
las
tablas
tienen
que
ser
446.
447.
Existen 4 tipos de
INSERT
multitabla:
60
449. INSERT
450.
VALUES
ALIAS1
INTO NB_TABLA2
ALIAS2 , , ALIASN )
VALUES
ALIAS1
VALUES
ALIAS1
INTO
ALIAS2
451.
452.
453.
INTO
ALIAS2
454.
NB_TABLAN
, ALIASN )
456.457.
SELECT
NB_COLUMNA_ORIGINAL1
ALIAS1, NB_COLUMNA_ORIGINAL2 ALIAS2,
, NB_COLUMNA_ORIGINALN ALIASN
455.
FROM NB_TABLA_FUENTE
458.
WHERE CONDICION_DE_BUSQUEDA
459.
GROUP BY LISTA_COLUMNAS
460.
HAVING CONDICION_DE_BUSQUEDA
461.
463.
462.
SUB
CONSULTA
ORDER BY LISTA_COLUMNAS;
464.
2. INSERT ALL CONDICIONAL Se insertarn los datos slo en las tablas que
cumplen la condicin.
465. Para cada INTO ponemos una condicin.
466. Las condiciones que pongamos no tienen por qu
ser excluyentes, es decir, que para cada tabla pueden
ser distintas.
467. Su sintaxis sera:
468.
469.
470.
COLN )
471.
COL1
COL2
,,
COL1
COL2
,,
COL2
,,
472.
COLN )
473.
474.
COLN )
475.
SELECT COL1
476.
FROM NB_TABLA_FUENTE;
477.
61
COL2
,,
COLN
COL1
INSERT FIRST
480.
481.
COLN )
482.
COL1
COL2
,,
COL1
COL2
,,
COL1
COL2
,,
483.
COLN )
484.
ELSE
485.
COLN )
486.
SELECT COL1
COL2
,,
487.
488.
FROM NB_TABLA_FUENTE;
COLN
INSERT ALL
491.
COL1
COL2
COL3
492.
COL1
COL2
COL3
493.
COL1
COL2
COL3
494.
495.
SELECT COL1
COL2
,,
496.
FROM NB_TABLA_FUENTE;
COLN
| *
497.
498.
Sentencia Update
501.
62
COMMIT.
ROLLBACK.
502. Actualiza los campos correspondientes junto con los valores que se le
asignen, en el subconjunto de filas que cumplan la condicin de seleccin.
Su sintaxis es:
503.
UPDATE NB.TABLA
COLUMNA2 = VALOR ]
504.
SET
COLUMNA
WHERE CONDICION
VALOR
[ ,
506.
505.
AXIS
];
507.
SINT
NUEVA
508.509.
510.
511. ( SELECT
WHERE CONDICION );
COLUMNA
FROM
NB_TABLA
513. SINT
512.AXIS
ANTIGUA
Si se desea actualizar
NULOS,
se asignar el valor
NULL.
516.
517.
518.
Sentencia Delete
519.
520.
521.
522.
La sintaxis es la siguiente:
523.
524.
WHERE CONDICION
];
525.
CUIDADO
526.
527.
528. Por ejemplo, si ejecutamos:
tabla.
529. Por ejemplo, si ejecutamos:
se borrar slo un registro.
DELETE
FROM
PEDIDOS;
se borrar toda la
= 15;
530.
531.
532.
Sentencia Merge
63
Fusin de Filas
540. Puede
actualizar
filas
existentes
e
condicionalmente mediante la sentencia MERGE.
541.
insertar
nuevas
filas
En la sintaxis:
Su sintaxis:
546.
547.
USING
548.
ON
549.
550.
553.
TABLA
VISTA
CONDICION_DE_JOIN
SUBCONSULTA ALIAS
UPDATE SET
551.
COL1
VALOR1,
552.
COL2
VALOR2
554.
INSERT TO
LISTA_COLUMNAS
64
VALUES
VALORES
);
555.
556.
Veamos un ejemplo:
557.
558.
USING
559.
FROM EMPLOYEES
560.
561.
ON
562.
563.
564.
SAL.EMPLOYEE_ID
10
EMP.EMPLOYEE_ID
SAL.SALARY
AND
80 )
EMP
)
*2
565.
INSERT VALUES
EMP.EMPLOYEE_ID, EMP.SALARY
);
566.
567.
568.
569.
Sentencias Transaccionales
570.
de
varias
sentencias
DML
una
65
Sentencia Commit
de
los
datos
antes
de
usar
las
sentencias
COMMIT
Su sintaxis:
585.
Sentencia Rollback
586. Finaliza
pendientes.
la
COMIT
transaccin
actual
descartando
66
todos
los
cambios
explcitamente
con
la
ejecucin
de
Su sintaxis:
ROLLBACK
592.
593.
594.
Sentencia Savepoint
598.
NB_PUNTO_RESTAURACION
TO NB_PUNTO_RESTAURACION
67
600.
601.
Ejercicios
68
602.
Ejercicios
603.
604.
605.
Vamos a crear una tabla nueva. Para ello debemos tener permisos.
614. Acabamos de crear una tabla vaca. Para ejecutarla pinchamos sobre
PLAY o sobre PLAY_CON_ESCOBILLA. Si se ha creado bien, debajo de las
conexiones debe salir el mensaje CREATE TABLE STATEMENT PROCESSED.
615. Para crear una tabla temporal, slo habra que cambiar la primera
lnea del cdigo anterior y aadir otra lnea detrs del bloque:
616. CREATE GLOBAL TEMPORARY TABLE PRODUCTOS_AUX
617. (
618. ID_PRODUCTO NUMBER (4),
619. NOMBRE VARCHAR2 (100),
620. PRECIO_UNIDAD NUMBER (4,2),
621. TAMANIO VARCHAR2 (25)
622. )
623. ON COMMIT DELETE ROWS Para borrar los datos de la tabla o, en su
lugar,
624. ON COMMIT PRESERVE ROWS Para mantener los datos de la tabla
durante la sesin.
625.
DE
ENTIDADES:
UNIDAD
6
Los nombres de los
pueden.
OBJETOS
7
La ltima fila nunca lleva coma ( , ) al final.
69
631.
632.
633.
634.
635.
636.
637.
638.
639.
640.
641.
CREATE TABLE
(
COD_EMPLEADO
642.
EMPLEADOS
70
REFERENCES
643.
siguientes tablas:
647.
Descripcin
648.
665.
Descripcin
649.
666.
703.
Descripcin
704.
710.
xsal
714.
sal
718.
REGIONES
71
719.
720. Col
umnas
724. id_r
egion
728. reg
ion_name
732. id_r
egion
736.
PAISES
737.
738. Col
umnas
742. id_
pais
746. no
mbre_pais
750. reg
ion
754. id_
pais
758.
759.
760.
761.
CLIENTES
762.
763. Col
umnas
721.
Descripcin
722.
739.
723.
Descripcin
740.
741.
751. Donde se
encuentra.
755. Es clave primaria
con nombre pais_id_pk.
764.
Descripcin
767. id_
cliente
768. Cdigo
identifica al cliente.
771. no
mbre_clie
nte
772.
780.
783. fec
ha_nac_cli
ente
784.
787. est
ado_client
e
788.
H o M
72
791. dir
eccion_cli
ente
792.
795. cod
_postal_cli
ente
796.
799. ciu
dad_client
e
800.
803. pro
vincia_clie
nte
804.
807. pai
s_cliente
808.
811. tel
812.
efono_clie
nte
815.
PROVEEDORES
816.
817. Col 818. Descripcin
umnas
821. id_ 822. Cdigo que
prove
identifica al proveedor.
825. no
826.
mbre_prov
e
829. ape 830.
llido_prove
833. ann 834. Ao de nacimiento
o_nac_pro del proveedor.
ve
837. est 838.
ado_prove
841. dir 842.
eccion_pro
ve
845. cod 846.
_post_prov
e
849. ciu 850.
dad_prove
853. pro 854.
vincia_pro
ve
857. pai 858.
s_prove
73
861. tel
862.
efono_pro
ve
865. em 866.
ail_prove
869.
LOCALIZACIONES
870.
871. Col 872. Descripcin
873.
umnas
875. id_l 876. Cdigo que
oc
identifica la localizacin.
879. dir 880.
eccion
883. cod 884.
874.
_postal
887. ciu 888.
dad
891. pro 892.
vincia
895. pai 896.
s
899.
900.
901.
902.
DEPARTMENTS
903.
904. Col 905. Descripcin
906.
umnas
908. dep 909.
artment_i
d
907.
912. dep 913.
artment_n
ame
916. id_ 917.
manager
920.
JOBS
921.
922. Col 923. Descripcin
924.
925.
umnas
926. id_j 927. Cdigo
que
ob
identifica al trabajo. No
numrico.
930. tra 931.
74
bajo
934.
_sal
938.
x_sal
942.
min 935.
ma
939.
EMPLOYEES
943.
944. Col 945. Descripcin
umnas
949. em 950. Cdigo que
ployee_id
identifica al empleado.
953. firs 954. Nombre.
t_name
957. last 958. Apellido.
_name
961. Em 962. Email.
ail
965. pho 966. Telfono.
ne_numbe
r
969. Hir 970. Fecha de alta.
edate
973. job 974. Cdigo que
_id
identifica el trabajo.
977. Sal 978. Salario.
ary
981. co
982. Comisin.
mmision_p
ct
985. ma 986. Identificador del
nager_id
manager.
989. dep 990. Identificador del
artment_i
departamento.
d
993.
994. CREATE TABLE DEPT
995.
996. DEPTNO
997. DNAME
998. LOC
999.
946.
NUMBER
(3)
VARCHAR2
VARCHAR2
(100),
(100)
1000.
75
1001. CREATE
TABLE
EMP
1002. )
1003.
1004.
ENAME VARCHAR2
1005.
JOB VARCHAR2
1006.
MANAGER NUMBER
1007.
HIREDATE DATE,
1008.
SAL NUMBER
1009.
COMM NUMBER
1010.
DEPTNO NUMBER
(EMP_EMPNO_FK)
(150),
(500),
(4),
(8,2),
(4,2),
(4)
1011. )
1012. CREATE
TABLE
SALGRADOS
1013. (
1014.
GRADO NUMBER
(2),
1015.
MAXSAL NUMBER
1016.
MINSAL NUMBER
(8,2),
(5,2)
1017. )
1018.
1019. CREATE
TABLE
REGIONES
1020. (
1021.
ID_REGIONES NUMBER
(3),
1022.
REGION_NAME VARCHAR2
(100)
1023. )
1024.
1025. CREATE
TABLE
PAISES
1026. (
1027.
1028.
NOMBRE_PAIS VARCHAR2
1029.
REGION VARCHAR2
(100),
(100)
1030. )
76
1031.
1032. CREATE
TABLE
CLIENTES
1033. (
1034.
ID_CLIENTES NUMBER
(6)
1035.
NOMBRE_CLIENTE VARCHAR2
NULL,
(50)
1036.
(100)
APELLIDO_CLIENTE VARCHAR2
NULL,
1037.
SEXO_CLIENTE VARCHAR2
(1),
1038.
FECHA_NAC_CLIENTE DATE,
1039.
ESTADO_CLIENTE VARCHAR2(50),
1040.
DIRECCION_CLIENTE VARCHAR2
NOT NULL,
1041.
COD_POSTAL_CLIENTE NUMBER
1042.
CIUDAD_CLIENTE VARCHAR2
NULL,
(200)
(5)
(50)
1043.
PROVINCIA_CLIENTE VARCHAR2
1044.
PAIS_CLIENTE VARCHAR2
1045.
TELEFONO_CLIENTE NUMBER
1046.
EMAIL_CLIENTE VARCHAR2
CONSTRAINT CLIENTES_DIRECCION_CLIENTE_NN
(50),
(50),
(12),
(150)
1047. )
1048.
1049. CREATE
TABLE
PROVEEDORES
1050. (
1051.
ID_PROVE NUMBER
(6)
1052.
NOMBRE_PROVE VARCHAR2
NULL,
(50)
1053.
APELLIDO_PROVE VARCHAR2
NOT NULL,
1054.
ANNO_NAC_PROVE NUMBER
1055.
ESTADO_PROVE VARCHAR2
(100)
CONSTRAINT PROVEEDORES_APELLIDO_PROVE_NN
(4),
(50),
1056.
DIRECCION_PROVE
VARCHAR2
PROVEEDORES_DIRECCION_PROVE_NN NOT NULL,
1057.
COD_POST_PROVE VARCHAR2
(5)
(200)
CONSTRAINT
77
1058.
CIUDAD_PROVE VARCHAR2
NULL,
(50)
1059.
PROVINCIA_PROVE VARCHAR2
1060.
PAIS_PROVE VARCHAR2
1061.
TELEFONO_PROVE NUMBER
1062.
EMAIL_PROVE VARCHAR2
(50),
(50),
(12),
(150)
1063. )
1064.
1065. CREATE
TABLE
LOCALIZACIONES
1066. (
1067.
ID_LOC NUMBER
(4),
1068.
DIRECCION VARCHAR2
(200),
1069.
COD_POSTAL NUMBER
(5),
1070.
CIUDAD VARCHAR2
1071.
PROVINCIA VARCHAR2
1072.
PAIS VARCHAR2
(50),
(50),
(50)
1073. )
1074.
1075. CREATE
TABLE
DEPARTAMENTOS
1076. (
1077.
ID_DEPARTAMENTO NUMBER
UNIQUE,
(4)
CONSTRAINT DEPARTAMENTOS_ID_DEPARTAMENTO_UQ
1078.
NOMBRE_DEPARTAMENTO VARCHAR2
1079.
ID_MANAGER NUMBER
1080.
ID_LOCALIZACION NUMBER
(100),
(4),
(4)
1081. )
1082.
1083. CREATE
TABLE
TRABAJOS
1084. (
1085.
ID_TRABAJO VARCHAR2
1086.
TRABAJO VARCHAR2
1087.
MIN_SAL NUMBER
(150),
(500),
(5,2),
78
1088.
MAX_SAL NUMBER
(8,2)
1089. )
1090.
1091. CREATE
TABLE
EMPLEADOS
1092. (
1093.
ID_EMPLEADO NUMBER
(4)
1094.
NOMBRE_EMPLEADO VARCHAR2
1095.
APELLIDO_EMPLEADO VARCHAR2
1096.
EMAIL_EMPLEADO VARCHAR2
UNIQUE,
1097.
TELEFONO_EMPLEADO NUMBER
1098.
FECHA_DE_ALTA DATE,
1099.
ID_TRABAJO VARCHAR2
1100.
SALARIO NUMBER
1101.
COMISION_PCT NUMBER
1102.
ID_MANAGER NUMBER
1103.
ID_DEPARTAMENTO NUMBER
(50),
(100),
(150)
CONSTRAINT EMPLEADOS_EMAIL_EMPLEADO_UQ
(12),
(3),
(8,2)
(4,2),
(4),
(4)
1104. )
1105.
79
> 0),
consultas
en
la
Base
de
datos
Hospital
1112.
1113. // Si se ha creado correctamente en la ventana de abajo te lo dice.
Ahora ingresamos los siguientes comandos:
1114.
1115.
GRANT
GRANT
CONNECT TO HOSPITAL;
RESOURCE TO HOSPITAL;
1116.
1117. // Nos conectamos como el usuario que hemos creado ( HOSPITAL). En
este caso:
1118.
CONNECT
HOSPITAL/HOSPITAL
1119.
1120. // Ahora dentro de la conexin del hospital ( CONN.HOSPITAL) ingresamos
los siguientes comandos:
1121.
CREATE
TABLE HOSP_DEPT
80
1122.
1123.
1124.
NOMBRE_DEPT VARCHAR2(30),
1125.
LOC_DEPT VARCHAR2(30),
1126.
CHECK
(LOC_DEPT
'BILBAO','SEVILLA','ALMERIA','VALENCIA'))
1127.
('LUGO',
IN
'MADRID',
'BARCELONA',
);
1128.
1129.
1130.
1131.
1132.
APELLIDO_EMP VARCHAR2(40),
1133.
OFICIO_EMP VARCHAR2(30)
'EMPLEADO', 'DIRECTOR')),
CHECK
1134.
MANAGER INT,
1135.
1136.
1137.
1138.
NUMERO_DEPT INT
1139.
(OFICIO_EMP
IN
1200,
0,
);
1140.
1141.
1142.
1143.
1144.
1145.
ESPECIALIDAD INT,
1146.
1147.
,
=
UPPER(APELLIDO)),
);
1148.
1149.
1150.
1151.
1152.
NOMBRE_ESPECIALIDAD VARCHAR2(30)
1153.
);
1154.
1155.
1156.
1157.
1158.
APELLIDO VARCHAR2(30),
1159.
DIRECCION VARCHAR2(50),
1160.
FECHA_NAC DATE,
1161.
'F'
CHECK (SEXO IN
('F','M')),
81
1162.
1163.
);
1164.
1165.
1166.
1167.
1168.
NOMBRE VARCHAR2(20),
1169.
DIRECCION VARCHAR2(30),
1170.
TELEFONO VARCHAR2(9),
1171.
1172.
);
1173.
1174.
1175.
1176.
1177.
1178.
APELLIDO VARCHAR2(30),
1179.
FUNCION VARCHAR2(20),
1180.
1181.
1182.
('N','M','T')),
);
1183.
1184.
1185.
1186.
1187.
1188.
NOMBRE VARCHAR2(30),
1189.
1190.
);
1191.
1192.
1193.
(10,'CONTABILIDAD','SEVILLA');
1194.
(20,'INVESTIGACION','MADRID');
1195.
(30,'VENTAS','BARCELONA');
1196.
(40,'PRODUCCION','BILBAO');
1197.
1198.
1199. INSERT INTO HOSP_EMP
MON-YYYY'), 104000, 0, 20);
VALUES
(7369,'SANCHEZ','EMPLEADO',7902,TO_DATE('17-DIC-1980', 'DD-
82
VALUES
(7499,'ARROYO','VENDEDOR',7698,TO_DATE('22-FEB-1980', 'DD-MON-
(7521,'SALA','VENDEDOR',7698,TO_DATE('22-FEB-1981' , 'DD-MON-
VALUES
(7566,'JIMENEZ','DIRECTOR',7839,TO_DATE('02-ABR-1981', 'DD-MON-
VALUES
1203. INSERT INTO HOSP_EMP VALUES (7654,'MARTIN','VENDEDOR',7698,TO_DATE('28-SEP-1981' , 'DD-MONYYYY'), 182000, 182000, 30);
1204. INSERT INTO HOSP_EMP
YYYY'), 370500, 0, 30);
VALUES
(7698,'NEGRO','DIRECTOR',7839,TO_DATE('01-MAY-1981', 'DD-MON-
VALUES
(7782,'CEREZO','DIRECTOR',7839,TO_DATE('09-JUN-1981', 'DD-MON-
HOSP_EMP VALUES
(7788,'GIL','ANALISTA',7566,TO_DATE('30-MAR-1987', 'DD-MON-YYYY'),
VALUES
(7844,'TOVAR','VENDEDOR',7698,TO_DATE('08-SEP-1981', 'DD-MON-
VALUES
VALUES
(7876,'ALONSO','EMPLEADO',7788,TO_DATE('03-MAY-1981', 'DD-MON-
(7900,'JIMENO','EMPLEADO',7698,TO_DATE('03-DIC-1981', 'DD-MON-
VALUES
(7902,'FERNANDEZ','ANALISTA',7566,TO_DATE('03-DIC-1981', 'DD-
VALUES
(7839,'REY','PRESIDENTE',NULL,TO_DATE('17-NOV-1981', 'DD-MON-
VALUES
(7934,'MUOZ','EMPLEADO',7782,TO_DATE('23-JUN-1982', 'DD-MON-
1213.
1214.
1215. INSERT INTO ENFERMOS
YYYY'), 'M', '280862422');
VALUES
VALUES
VALUES
VALUES
VALUES
83
VALUES
ENFERMOS VALUES
VALUES
1225.
1226.
1227.
(100100,'GENERAL','ATOCHA S/N','595-3111',987);
1228.
1229. INSERT
1500',845);
INTO
DATOS_HOSPITAL
VALUES
(100300,'SAN
CARLOS','CIUDAD
UNIVERITARIA','597-
1230.
1231.
1232.
(1009,100200,6,'HIGUERAS D.','ENFERMERA','T',200500);
1233.
(1280,100300,4,'AMIGO R.','INTERINO','N',221000);
1234.
(3106,100100,6,'HERNNDEZ J.','ENFERMERO','T',275000);
1235.
(3754,100100,6,'DAZ B.','ENFERMERA','T',226200);
1236.
(6065,100200,1,'RIVERA G.','ENFERMERA','N',162600);
1237.
(6357,100100,3,'KARPLUS W.','INTERINO','T',337900);
1238.
(7379,100200,1,'CARLOS R.','ENFERMERA','T',211900);
1239.
(8422,100200,6,'BOCINA G.','ENFERMERO','M',183800);
1240.
(8526,100300,1,'FRANK H.','ENFERMERA','T',252200);
1241.
(9901,100200,2,'NEZ C.','INTERINO','M',221000);
1242.
1243.
1244.
(3,100000,'CUIDADOS INTENSIVOS',21);
1245.
(6,100000,'PSIQUITRICOS',67);
1246.
(3,100100,'CUIDADOS INTENSIVOS',10);
1247.
(6,100100,'CARDIOLOGA',53);
1248.
(1,100200,'RECUPERACIN',10);
1249.
(6,100200,'PSIQUITRICOS',118);
84
1250.
(2,100200,'MATERNIDAD',34);
1251.
(4,100300,'CARDIOLOGA',55);
1252.
(1,100300,'RECUPERACIN',13);
1253.
(2,100300,'MATERNIDAD',24);
1254.
1255.
1256.
(100,'PSIQUIATRA');
1257.
(101,'NEUROLOGA');
1258.
(102,'CARDIOLOGA');
1259.
(103,'UROLOGA');
1260.
(104,'PEDITARA');
1261.
(105,'GINECOLOGA');
1262.
1263.
1264.
1265.
1266.
1267.
1268.
1269.
1270.
1271.
1272.
1273.
COMMIT;
1274.
1275.
1276.
1277.
1278.
1279.
1280.
1281.
85
1282.
1283.
1284.
1285.
1286.
1287.
1288.
1289.
1290.
1291.
1292.
1293.
1294.
1295.
1296.
1297.
1298.
1299.
1300.
1301.
1302.
1303.
1304.
(COD_SALA,
1306.
1307.
1308. ADD
(CONSTRAINT
DATOS_HOSPITAL(COD_HOSPITAL));
FK_PLAN_HOSP
FOREIGN
KEY
(COD_HOSPITAL)
REFERENCES
FK_SALA_HOSP
FOREIGN
KEY
(COD_HOSPITAL)
REFERENCES
1309.
1310.
1311. ADD
(CONSTRAINT
DATOS_HOSPITAL(COD_HOSPITAL));
1312.
1313.
86
1314. ADD
(CONSTRAINT
DATOS_HOSPITAL(COD_HOSPITAL));
FK_DOC_HOSP
FOREIGN
(CODIGO_HOSP)
KEY
REFERENCES
1315.
1316.
1317.
1318.
1319. // A partir de aqu empezamos con el ejercicio en s.
1. Encontrar el salario medio de los vendedores, mostrando el nmero de
empleados con oficio vendedor.
1320.
SELECT
= 'VENDEDOR ';
MAX (SALARIO)
SELECT
OFICIO_EMP,
MAX (SALARIO)
4. Visualizar el nmero
departamento.
1323.
SELECT
de
personas
que
realizan
cada
oficio
en
cada
COUNT
(NUMERO_EMP)
FROM HOSP_EMP
GROUP BY OFICIO_EMP
HAVING COUNT
SELECT
NUMERO_DEPT, COUNT
(OFICIO_EMP)
FROM HOSP_EMP
WHERE
OFICIO_EMP='DIRECTOR'
GROUP BY NUMERO_DEPT;
SELECT
87
1;
FROM
HOSP_EMP
SELECT
(SALARIO),
AVG
(SALARIO),
MAX
GROUP
cada
(SALARIO) -
BY
oficio,
MIN (SALARIO),
10. Calcular el valor medio de las camas que existen para cada nombre de
sala. Indicar el nombre de cada sala y el nmero de cada una de ellas.
1329.
SELECT
1330.
1331.
1332.
88
consultas
en
la
Base
de
datos
Hospital
SELECT FUNCION, COUNT (FUNCION), AVG (SALARIO) FROM PLANTILLA WHERE COD_SALA
=6
GROUP
BY FUNCION;
FROM HOSP_EMP
GROUP BY OFICIO_EMP
ORDER BY
(*)
4 Mostrar la suma total del salario que cobran los empleados de la plantilla
para cada funcin y turno.
1339.
SELECT FUNCION, TURNO, SUM (SALARIO) FROM PLANTILLA GROUP BY FUNCION, TURNO;
SELECT COUNT
(*)
89
= 'ENFERMERA'
GROUP BY
TABLAS EMPRESA:
1. Mostrar el NOMBRE DE LOS EMPLEADOS, NMERO y NOMBRE DE
DEPARTAMENTO, NMERO y los tres primeros caracteres de la LOCALIDAD
donde se encuentra el DEPARTAMENTO, para aquellos EMPLEADOS que
trabajen en el DEPARTAMENTO 20 o que sea VENDEDOR (que su
trabajo comience por 'SA').
2. Mostrar el NOMBRE DEL EMPLEADO, su TRABAJO, y el NOMBRE y CDIGO
DEL DEPARTAMENTO en el que trabaja.
3. En la consulta anterior existe un DEPARTAMENTO que no tiene
EMPLEADOS. Mostrar esta informacin.
4. Mostrar el NOMBRE DE LOS DEPARTAMENTOS, la LOCALIDAD donde se
ubican y el PRESUPUESTO (suma de salarios de los empleados de
ese departamento) para todos los DEPARTAMENTOS ubicados en
Europa.
TABLAS HOSPITAL:
5. Listar el NOMBRES DE LAS SALAS, su HOSPITAL y el NMERO DE CAMAS.
6. Listar los EMPLEADOS de un hospital indicando el NMERO DE
EMPLEADO, el APELLIDO, TURNO y el NOMBRE DE LA SALA en la que
trabaja.
7. Listar los DOCTORES. Los datos a mostrar son: APELLIDOS, ESPECIALIDAD y
el NOMBRE DEL HOSPITAL en el que trabajan.
1344.
1. Mostrar el NOMBRE DE LOS EMPLEADOS, NMERO y NOMBRE DE DEPARTAMENTO,
NMERO y los tres primeros caracteres de la LOCALIDAD donde se encuentra
el DEPARTAMENTO, para aquellos EMPLEADOS que trabajen en el DEPARTAMENTO
20 o que sea VENDEDOR (que su trabajo comience por 'SA').
1345.
1346.
1347.
WHERE D.DEPARTMENT_ID
1348.
2. Mostrar
el
DEL
1, 3 )
OR JOB_ID LIKE
EMPLEADO,
su
'SA%' ) ;
TRABAJO,
el
NOMBRE
CDIGO
DEL
en el que trabaja.
1350.
FROM DEPARTMENTS D
1351.
RIGHT
1352.
ON
( E.DEPARTMENT_ID = D.DEPARTMENT_ID ) ;
LOCATION_ID,
= E.DEPARTMENT_ID
( E.DEPARTMENT_ID = 20
NOMBRE
DEPARTAMENTO
1349.
AND
DEPARTAMENTO
SELECT FIRST_NAME
90
que no tiene
EMPLEADOS.
1354.
FROM EMPLOYEES
1355.
4. Mostrar el
1356.
SALARY
1357.
1358.
WHERE D.DEPARTMENT_ID
1359.
AND L.LOCATION_ID
= D.LOCATION_ID
1360.
AND L.COUNTRY_ID
= C.COUNTRY_ID
1361.
AND REGION_ID
1362.
5. Listar el
1363.
= E.DEPARTMENT_ID
=1
su
HOSPITAL
y el
NMERO DE CAMAS.
1364.
1365.
WHERE H.COD_HOSPITAL
= S.COD_HOSPITAL ;
EMPLEADO,
el
1367.
CASE
1368.
WHEN P.TURNO
= 'M'
1369.
WHEN P.TURNO
= 'T'
1370.
ELSE
1371.
THEN
THEN
'MAANA'
'TARDE'
'NOCHE'
1372.
1373.
WHERE P.COD_SALA
1374.
7. Listar los
= S.COD_SALA
DOCTORES. Los
NOMBRE DEL HOSPITAL en el
1375.
DE
1376.
1377.
WHERE D.CODIGO_HOSP
= H.COD_HOSPITAL ;
1378.
91
APELLIDOS, ESPECIALIDAD
y el
1383.
CASE
1384.
WHEN NUMERO_DEPT IN
1385.
1386.
END DEPARTAMENTOS,
1387.
FROM HOSP_EMP
1388.
WHERE OFICIO_EMP
(10, 30)
THEN 'DEPARTAMENTO
= 'EMPLEADO' ;
92
10-30'
SELECT APELLIDO_EMP,
1390.
CASE
1391.
WHEN SALARIO
1392.
1393.
WHEN SALARIO
1394.
1395.
END SALARIOS,
1396.
170000
> 220000
AND
220000
FROM HOSP_EMP
1397.
UNION
1398.
SELECT APELLIDO,
1399.
< 100000
CASE
1400.
WHEN SALARIO
1401.
1402.
WHEN SALARIO
1403.
1404.
END SALARIOS,
1405.
FROM PLANTILLA
1406.
ORDER BY
< 100000
170000
> 220000
AND
220000
2;
SELECT APELLIDO,
1408.
CASE
1409.
WHEN TURNO
= 'N'
THEN
'NOCHE'
1410.
WHEN TURNO
= 'T'
THEN
'TARDE'
1411.
ELSE
1412.
END TURNOS,
'MAANA'
1413.
FROM PLANTILLA
1414.
ORDER BY
2;
1416.
CASE
1417.
WHEN D.LOC_DEPT
1418.
= 'BARCELONA'
93
1419.
END LOCALIDAD,
1420.
1421.
WHERE E.NUMERO_DEPT
= D.NUMERO_DEPT ;
1423.
CASE
1424.
WHEN D.LOC_DEPT
1425.
1426.
END LOCALIDAD,
= 'MADRID'
1427.
1428.
WHERE E.NUMERO_DEPT
1429.
GROUP BY D.LOC_DEPT
= D.NUMERO_DEPT
1431.
SUBSTR (TO_CHAR
1432.
CASE SEXO
1433.
WHEN
'M'
1434.
WHEN
'F'
1435.
END SEXO,
1436.
7. Mostrar el
todos los
THEN
THEN
FROM ENFERMOS
'MASCULINO'
'FEMENINO'
APELLIDO,
1438.
CASE
1439.
1440.
ELSE TO_CHAR
1441.
END DEPARTAMENTO,
1442.
( D.NOMBRE_DEPT )
CASE
1443.
WHEN E.COMISION
1444.
ELSE
1445.
END COMISION,
1446.
=0
THEN
'NO'
'SI'
FROM HOSP_DEPT D
1447.
1448.
ON
( E.NUMERO_DEPT = D.NUMERO_DEPT ) ;
94
8. Mostrar todas las CAMAS que existen para cada HOSPITAL y cada SALA.
Mostrar el NOMBRE DEL HOSPITAL, las SALAS y su NMERO DE CAMAS. Si no
hubiese CAMAS para algn hospital dejarlas a 0. Tambin mostrar que son
muchas CAMAS cuando sean ms de 90, buen nmero cuando sean ms de
40 y pocas para las dems.
1449.
1450.
CASE
1451.
1452.
ELSE S.NUM_CAMAS
1453.
END CAMAS,
1454.
CASE
1455.
WHEN S.NUM_CAMAS
> 90
THEN
'MUCHAS'
1456.
WHEN S.NUM_CAMAS
> 40
THEN
'BUEN
1457.
ELSE
1458.
END CALIDAD,
NUMERO'
'POCAS'
1459.
1460.
WHERE H.COD_HOSPITAL
= S.COD_HOSPITAL ;
95
siguientes
consultas
en
la
Base
de
datos
Hospital
SELECT
1465.
FROM EMPLOYEES
1466.
WHERE SALARY IN
1467.
1468.
FROM EMPLOYEES
);
1470.
FROM EMPLOYEES
1471.
WHERE SALARY
1472.
>
SELECT MIN
SALARY
1473.
FROM EMPLOYEES
1474.
WHERE DEPARTMENT_ID
1475.
ORDER BY
DESC
= 30 )
3. Encontrar quienes son los trabajadores que tienen por jefe a 'KING'.
1476.
SELECT
96
1477.
FROM EMPLOYEES
1478.
WHERE MANAGER_ID IN
1479.
SELECT EMPLOYEE_ID
1480.
FROM EMPLOYEES
1481.
WHERE LAST_NAME
= 'KING') ;
DIAS
SELECT
SELECT MAX
1483.
FROM
1484.
TO_CHAR
HIRE_DATE,
1485.
FROM EMPLOYEES
1486.
GROUP BY TO_CHAR
'DAY' ) )
HIRE_DATE,
FECHA, COUNT
HIRE_DATE
DIAS
'DAY' ) ) ;
1488.
FROM EMPLOYEES
1489.
WHERE SALARY
1490.
>
ANY
SELECT SALARY
1491.
FROM EMPLOYEES
1492.
WHERE JOB_ID IN
1493.
SELECT JOB_ID
1494.
FROM JOBS
1495.
1496.
ORDER BY
DESC
'SALES%' ) )
1498.
FROM EMPLOYEES
1499.
WHERE DEPARTMENT_ID
1500.
SELECT DEPARTMENT_ID
1501.
FROM EMPLOYEES
1502.
WHERE FIRST_NAME
1503.
AND SALARY
1504.
= 'IRENE' )
<
SELECT AVG
SALARY
1505.
FROM EMPLOYEES
1506.
WHERE DEPARTMENT_ID
= 10 ) ;
97
7. Mostrar el nombre del empleado y la localidad donde trabaja, para los que
tengan comisin o que trabajen en el mismo departamento que 'IRENE'.
1507.
1508.
FROM DEPARTMENTS D
1509.
1510.
1511.
AND
ON
( D.DEPARTMENT_ID = E.DEPARTMENT_ID )
( E.DEPARTMENT_ID = (
1514.
SELECT DEPARTMENT_ID
1512.
FROM EMPLOYEES
1513.
WHERE FIRST_NAME
= 'IRENE')
1515.
cuyos
salarios
la
media
de
sus
1517.
FROM EMPLOYEES
1518.
WHERE SALARY
>(
1519.
1520.
SELECT AVG
SALARY
FROM EMPLOYEES)
exceden
entr
1522.
FROM EMPLOYEES
1523.
WHERE HIRE_DATE
1526.
1524.
FROM EMPLOYEES
1525.
GROUP BY DEPARTMENT_ID)
1527.
98
para
cada
uno
de
los
TABLAS EMPRESA:
1. Mostrar el nombre completo de todos los EMPLEADOS que trabajan
en Europa o que su JEFE es STEVEN KING.
2. Mostrar el NOMBRE, APELLIDOS, DIRECCIN, CIUDAD, ESTADO CIVIL en
castellano, y si es PROVEEDOR o CLIENTE para todos los PROVEEDORES y
CLIENTES del PAS donde vive KI GEE.
3. Doblar el SALARIO de todos los EMPLEADOS que trabajan en el
departamento de PAT FAY.
4. Quitar la COMISIN a todos los EMPLEADOS que la tengan.
5. Nombre de la REGIN que tiene DEPARTAMENTOS cuyo PRESUPUESTO
excede de 100.000.
6. Mostrar el DEPARTAMENTO que ms CLIENTES tiene asignado, teniendo
en cuenta que un departamento solo puede tener asignados
clientes de su propio pas.
1530.
1. Mostrar el nombre completo de todos
Europa o que su JEFE es STEVEN KING.
1531.
SELECT FIRST_NAME
|| ' ' ||
1532.
FROM EMPLOYEES
1533.
WHERE MANAGER_ID
1534.
(SELECT
EMPLOYEE_ID
FROM EMPLOYEES
1536.
WHERE FIRST_NAME
1537.
AND LAST_NAME
1538.
UNION
1539.
SELECT FIRST_NAME
|| ' ' ||
= 'STEVEN'
= 'KING')
LAST_NAME
1540.
FROM EMPLOYEES
1541.
WHERE DEPARTMENT_ID IN
(SELECT
DEPARTMENT_ID
1543.
FROM DEPARTMENTS
1544.
WHERE LOCATION_ID IN
1545.
EMPLEADOS
LAST_NAME
1535.
1542.
los
(SELECT
LOCATION_ID
1546.
FROM LOCATIONS
1547.
WHERE COUNTRY_ID IN
1548.
(SELECT
COUNTRY_ID
1549.
FROM COUNTRIES
1550.
WHERE REGION_ID
1551.
99
=1)));
que trabajan
en
1553.
DECODE
1554.
AS "PROVEEDOR-CLIENTE"
1555.
FROM CLIENTES
1556.
WHERE PAIS_CLIENTE IN
1557.
'' )
SELECT PAIS
1558.
FROM LOCALIZACIONES
1559.
WHERE ID_LOCALIZACION IN
1560.
SELECT ID_LOCATION
1561.
FROM DEPARTMENTS
1562.
WHERE DEPARTMENT_ID IN
1563.
SELECT DEPARTMENT_ID
1564.
FROM EMPLOYEES
1565.
WHERE FIRST_NAME
1566.
AND LAST_NAME
= 'KI'
= 'GEE' ) ) )
1567.
UNION ALL
1568.
1569. DECODE (
'PROVEEDOR'
ESTADO_PROVE,
1570.
AS "PROVEEDOR-CLIENTE"
1571.
FROM PROVEEDORES
1572.
WHERE PAIS_PROVE IN
1573.
1574.
FROM LOCALIZACIONES
1575.
WHERE ID_LOCALIZACION IN
SELECT ID_LOCATION
1577.
FROM DEPARTMENTS
1578.
WHERE DEPARTMENT_ID IN
1579.
SELECT DEPARTMENT_ID
1580.
FROM EMPLOYEES
1581.
WHERE FIRST_NAME
1582.
AND LAST_NAME
= 'KI'
= 'GEE' ) ) ) ;
EMPLEADOS
1584.
CASE
1585.
WHEN DEPARTMENT_ID
1586.
ELSE SALARY
1587.
END SALARY,
1588.
ESTADO_CIVIL,
SELECT PAIS
1576.
1583.
ESTADO_CIVIL, 'CLIENTE'
FROM EMPLOYEES
= 20
THEN SALARY
1589.
100
*2
4. Quitar la
1590.
COMISIN
a todos los
EMPLEADOS
que la tengan.
1591.
CASE
1592.
1593.
ELSE COMMISSION_PCT
1594.
END COMISION,
1595.
FROM EMPLOYEES
1596.
5. Nombre de la
100.000.
1597.
que tiene
REGIN
DEPARTAMENTOS
cuyo
PRESUPUESTO
excede de
SELECT REGION_NAME
1598.
FROM REGIONES
1599.
WHERE ID_REGION IN
1600.
SELECT REGION
1601.
FROM PAISES
1602.
WHERE ID_PAIS IN
1603.
SELECT PAIS
1604.
FROM LOCALIZACIONES
1605.
WHERE ID_LOCALIZACION IN
1606.
SELECT ID_LOCATION
1607.
FROM DEPARTMENTS
1608.
WHERE DEPARTMENT_ID IN
1609.
SELECT DEPARTMENT_ID
1610.
FROM EMPLOYEES
1611.
GROUP BY DEPARTMENT_ID
1612.
> 100000 ) ) ) ) ;
1613.
1615.
XXXX
= 'XX'
101