Está en la página 1de 43

REVISIN 4 (2007)

PROFESOR : JAVIER ANDRS GUTIRREZ

Breve visin de SQL*PLUS

INDICE

1.

BREVE VISIN DE SQL*PLUS. .................................................................................................3

2.

ORDENES E INSTRUCCIONES DE SQL*PLUS. .....................................................................3

3.

CREACIN Y MANIPULACIN DE TABLAS.........................................................................4

4.

INSTRUCCIONES SELECT ... FROM........................................................................................4

5.

INSTRUCCIN WHERE ..............................................................................................................5

6.

EJERCICIOS. .................................................................................................................................5

7.

CONTINUANDO CON LAS OPERACIONES SELECT. ..........................................................6

8.

PROFUNDIZANDO EN LA INTRUCCIN WHERE. .............................................................6

9.

INSTRUCCIN ORDER BY.......................................................................................................11

10.

CLAUSULA LIMIT......................................................................................................................12

11.

EJERCCIOS. ...............................................................................................................................13

12.

UTILIZACIN DE FUNCIONES...............................................................................................15

13.

EJERCICIOS. ...............................................................................................................................23

14.

SELECCIONES ANIDADAS.......................................................................................................24

15.

JOINS .............................................................................................................................................25

16.

OTRAS OPERACIONES CON CONJUNTOS..........................................................................26

17.

EJERCCIOS. ...............................................................................................................................28

18.

MANIPULACIN DE DATOS. ..................................................................................................29

19.

EJERCICIOS ................................................................................................................................32

20.

CREACIN DE TABLAS............................................................................................................33

21.

VISTAS (A PARTIR DE LA VERSIN MYSQL 5.0.1). .............................................................35

22.

EJERCCIOS. ...............................................................................................................................36

ANEXO I ...................................................................................................................................................37

PGINA 2 de 43

Breve visin de SQL*PLUS

1. Breve visin de SQL*PLUS.

Sql*plus es un procesador interactivo que permite actuar con


la Base de datos, con el se podrn hacer operaciones variadas,
estas operaciones son aquellas que siempre acompaan a la base
de datos:

operaciones de insercin filas.


operaciones de borrado de filas.
operaciones de modificaciones de filas.
operaciones de consulta de tablas.
operaciones de creacin, modificacin, destruccin de
tablas.

Todo SGBD (sistema gestor de base de datos) que trabaje


con un modelo de base de datos debe permitir hacer las
operaciones antes mencionadas.
Ejemplos de estas operaciones pueden ser:
SELECT CODPRO, NOMBRE, POBLACIN
FROM PROVEEDOR
WHERE ZONA=2;
CREATE TABLE CLIENTE
( CODIGO INT(3) NOT NULL,
NOMBRE VARCHAR(15),
POBLACION VARCHAR(15),
ACTIVIDAD VARCHAR(6),
ESTATUS VARCHAR(3),
PRIMARY KEY(CODIGO));
INSERT INTO CLIENTE VALUES(1,MANUEL CAMPO, MADRID, MODA, 10);

2. ORDENES E INSTRUCCIONES DE SQL*PLUS.


Vamos a comenzar por el hecho que tenemos unas tablas ya en
la base de datos y que deseamos hacer consultas.
SELECT CODPRO, NOMBRE, POBLACIN
FROM PROVEEDOR
WHERE ZONA=2;

PGINA 3 de 43

Breve visin de SQL*PLUS

3. Creacin y manipulacin de tablas.

Sql*plus permite de manera interactiva, como ya hemos dicho,


crear, actualizar, ver y borrar tablas en la BD.
Ejemplo:
CREATE TABLE CLIENTES2
(CODIGO INT(5) NOT NULL,
NOMBRE VARCHAR(15),
POBLACION VARCHAR(15),
TELEFONO INT(9) NOT NULL,
ACTIVIDAD VARCHAR(8),
ESTATUS VARCHAR(3),
PRIMARY KEY(CODIGO));

Una vez creada la tabla podemos insertar filas o valores a las


tablas:
INSERT
MODA,3 );

INTO

CLIENTES2

VALUES(5,JUAN

DELGADO,

MADRID,1111,

Y tambin podemos eliminar la tabla de una manera completa


con la sentencia siguiente:
DROP TABLE CLIENTES2;

Siendo PEPE1 el nombre de una tabla.


Para conocer los campos que tiene una tabla existe un
comando que es el siguiente:
DESC CLIENTES;

Con este comando nos muestra los campos y tipos de la tabla


clientes.
4. Instrucciones SELECT ... FROM
La instruccin SELECT tiene como funcin, el acceder a las
tablas de la base de datos.
SELECT CODIGO, ZONA
FROM ZONAS;

PGINA 4 de 43

Breve visin de SQL*PLUS

Nos ha permitido obtener los CODIGOS Y ZONAS de la tabla


ZONAS.
5. INSTRUCCIN WHERE
La instruccin WHERE permite enunciar las condiciones de la
seleccin.
Ejemplo:
Si deseamos seleccionar el cdigo de proveedor, nombre del
proveedor y su poblacin, para aquellos que estn en la zona 2.
SELECT CODPRO, NOMBRE, POBLACIN
FROM PROVEEDOR
WHERE ZONA=2;

Las columnas especificadas en las instrucciones SELECT y


WHERE deben pertenecer a la(s) tabla(s) indicada(s).
Si en la expresin lgica se utilizan caracteres, estos debern
estar entre los signos .
Los operadores lgicos son los siguientes: =, <, >, >=, <=, !=.

6. EJERCICIOS.

 Crear una tabla que contengan los datos de una persona:


nombre, primer apellido, direccin, ciudad, cdigo postal,
telfono y D.N.I.
 Dar de alta a los miembros de tu grupo de trabajo.
 Visualizar todos los datos de la tabla.
 Seleccionar solamente el tuplo de una persona determinada.
 Seleccionar de la tabla PERSONAL los campos NOMBRE y
CAT.
 Seleccionar en la tabla personal aquellas personas que
ganen ms de 601.01/mes.

PGINA 5 de 43

Breve visin de SQL*PLUS

7. CONTINUANDO CON LAS OPERACIONES SELECT.


Vamos a continuar viendo ejemplos de la sentencia SELECT,
supongamos que se desea obtener el cdigo, nombre y zona de
todos los proveedores.
SELECT CODPRO, NOMBRE, ZONA
FROM PROVEEDOR;

Tambin se desea saber el cdigo, nombre, nuevo precio y el


antiguo precio de los productos que adquirimos ms
frecuentemente. El nuevo precio se calcular aadiendo el 10%
al antiguo. Adems se encabezar la nueva columna con un
nuevo ttulo.
SELECT CODART, ARTICULO, PRECIO*0.10+PRECIO NUEVO_PRECIO, PRECIO
FROM ARTICULO;

Para eliminar las duplicaciones de valores de un dominio


utilizaremos la funcin DISTINCT.
Un ejemplo que refleje lo anterior seria para la obtencin de
los diferentes artculos que nos han pedido.
SELECT DISTINCT CODART FROM PEDIDOS;

La funcin DISTINCT puede ser aplicada a ms de una


columna.
8. PROFUNDIZANDO EN LA INTRUCCIN WHERE.
Supongamos que queremos seleccionar el cdigo, nombre y
poblacin de los clientes que residen en Madrid.
SELECT CODIGO, NOMBRE, POBLACION
FROM CLIENTES
WHERE POBLACION=MADRID;

Especificaciones:
-

Se pueden comparar constantes numricas con el


contenido de una columna.
Se puede comparar el contenido de una columna con una
cadena alfanumrica, esta debe de estar entre comillas.

PGINA 6 de 43

Breve visin de SQL*PLUS

Se puede comparar el valor de una columna con una


expresin numrica.
Se puede comparar el valor de una columna con otra.

Ejemplo: Listar las personas que perciben unas extras


superiores al 10% de su salario.
SELECT NOMBRE, CAT, SALARIO
FROM PERSONAL
WHERE EXTRAS > 0.10*SALARIO;

Los operadores que se pueden utilizar en la instruccin


WHERE son los siguientes:
SIGNO
=
!=
>
<
>=
<=

SIGNIFICADO
Igual.
Diferente.
Superior.
Inferior.
Superior o Igual
Inferior o Igual

Las condiciones pueden ser complejas indicando a cada


lado de los operadores una expresin aritmtica. Tambin
esto se consigue a travs de los operadores BOOLEANOS
AND y OR.
Ejemplo: Seleccin de los pedidos realizados por el
cliente de cdigo 14 y que son menores de 14 unidades, la
fecha y el artculo.
SELECT FECHA, CODART, CODCLI
FROM PEDIDOS
WHERE CODCLI=14
AND UNIDADES < 14;

Ejemplo: Seleccin del cdigo cliente, fecha del pedido,


cdigo de artculo y las unidades pedidas por los clientes de
cdigo 10 y 14 en la tabla de pedidos.
SELECT CODCLI, FECHA, CODART, UNIDADES
FROM PEDIDOS
WHERE CODCLI=14
OR CODCLI=10;

PGINA 7 de 43

Breve visin de SQL*PLUS

Adems podemos tambin encontrar los operadores


booleanos AND
y OR pudiendo combinarse en una
instruccin WHERE. Cuando aparece ms de un operador
distinto se puede usar o no usar el parntesis para indicar el
orden de preferencia de evaluacin de la condicin.
En el caso de no utilizar los parntesis, el orden de
evaluacin de la condicin es el siguiente: primero se evala
las condiciones AND y el resultado con las condiciones OR.
Ejemplo: la expresin
WHERE GRUPO=20 OR GRUPO=10 AND CAT=CHOFER

Tiene el mismo sentido que:


WHERE GRUPO=20 OR (GRUPO=10 AND CAT=CHOFER)

Pero totalmente diferente a:


WHERE (GRUPO=20 OR GRUPO=10) AND CAT=CHOFER

En la primera y segunda expresin la seleccin se har


con todo el personal de grupo 20 o grupo 10, este ltimo
adems con categora de chofer. Mientras por otro lado la
tercera expresin se refiere a todas las personas del grupo 10
y grupo 20 con categora de chofer ambas.

Continuando con los operadores, tambin existen


operadores que permiten especificar el valor de una columna
dentro de un rango de valores.
Ejemplo: Selecciona cdigo de artculo, nombre y precio
de los artculos de valor comprendido entre 18.03 y 48.08
SELECT CODART, ARTICULO, PRECIO
FROM ARTICULO
WHERE PRECIO BETWEEN 18.03 AND 48.08;

Los intervalos indicados con incluidos en la seleccin o


sea la seleccin anterior se poda haber sustituido por esta:

PGINA 8 de 43

Breve visin de SQL*PLUS

WHERE PRECIO >=18.03 AND PRECIO<=48.08

Tambin la condicin NOT BETWEEN est permitida.


Otra forma de seleccin es a travs de la enumeracin
de un conjunto de valores.
Ejemplo: Seleccione del nombre, numero de personal,
categora y grupo de las personas cuyo grupo sea 20 o 40.
SELECT NOMBRE, NPER, CAT, GRUPO
FROM PERSONAL
WHERE GRUPO IN (20,40);

Los valores de esta lista pueden ser literales o


numricos, El operador IN es equivalente a una serie de OR.
Ejemplo:
WHERE GRUPO=20 OR GRUPO=40

Tambin de forma contraria a la anterior se puede


especificar los valores que no deseamos seleccionar.
Ejemplo: Selecciona el nombre, nmero personal,
categora, y grupo de las personas que no tienen como
nmero de grupo ni el 20 ni el 40.
SELECT NOMBRE, NPER, CAT, GRUPO
FROM PERSONAL
WHERE GRUPO NOT IN (20,40);

El operador NOT IN es equivalente a una serie de !=


asociados a AND.
Ejemplo:
WHERE GRUPO !=20 AND GRUPO != 40

Otras veces la seleccin la podemos hacer realizando la


comparacin con parte del literal.

PGINA 9 de 43

Breve visin de SQL*PLUS

Ejemplo: Selecciona el cdigo del artculo, nombre,


nmero de proveedor de todos los productos que comienza su
nombre por C.
SELECT CODART, ARTICULO, PROVEEDOR
FROM ARTICULO
WHERE ARTICULO LIKE C%;

El carcter % en el modelo indica cualquier literal,


varios o ningn carcter. Adems este carcter puede ser
situado en cualquier lugar del literal expresado en el modelo.
Ejemplo: Seleccionar aquellos artculos que su nombre
comience por C, termine por S y tenga una I en cualquier
lugar intermedio.
SELECT CODART, ARTICULO, PROVEEDOR
FROM ARTICULO
WHERE ARTICULO LIKE C%I%S;

Se puede tambin realizar la seleccin comparando


literales, fijando longitudes y valores en lugares determinados.
Para ello se utiliza _ (underscore).
Ejemplo: Listar todos los artculos que tengan un cdigo
de artculo de cinco caracteres y el ltimo sea una N.
SELECT CODART, ARTICULO
FROM ARTICULO
WHERE CODART LIKE ____N;

NOTA: Recuerda que debes poner 4 underscores.


Como es de suponer estas formas de crear expresiones
de seleccin se pueden combinar.
Ejemplo: Listar los artculos cuyo nombre contiene una
M en la tercera posicin.
SELECT CODART, ARTICULO
FROM ARTICULO
WHERE ARTICULO LIKE __M%;

NOTA: Se deben poner 2 underscores.

PGINA 10 de 43

Breve visin de SQL*PLUS

La seleccin se puede realizar, tambin, por el criterio


de ausencia de valor.
Ejemplo: Seleccionar aquellos empleados que no tienen
ninguna remuneracin extra.
SELECT NOMBRE, CAT, SALARIO, EXTRAS
FROM PERSONAL
WHERE EXTRAS IS NULL;

El sentido de NULL es el de ausencia de datos, no


significa esto ni ceros ni espacios. Dos valores NULL no son
iguales.
Como es lgico, la negacin de NULL es realizable.
Ejemplo: Seleccionar aquellos empleados que tengan
renumeracin extra.
SELECT NOMBRE, CAT, SALARIO, EXTRAS
FROM PERSONAL
WHERE EXTRAS IS NOT NULL;

9. INSTRUCCIN ORDER BY.

Esta
instruccin
permite
ordenar
los
datos
seleccionados, ya que los datos en la tabla estn en un orden
indeterminado o carecen de l.
Ejemplo: Seleccionar los proveedores y ordenarlos por
el nmero de zona.
SELECT CODPRO, NOMBRE, POBLACION, ZONA
FROM PROVEEDOR
ORDER BY ZONA

Por defecto la ordenacin es ascendente, si se desea el


orden descendente hay que indicarlo.
La columna o columnas que sirven para la ordenacin,
no tienen que ser mencionadas, obligatoriamente, en la
instruccin SELECT pero si en la instruccin ORDER BY.

PGINA 11 de 43

Breve visin de SQL*PLUS

La instruccin puede servirse de varias columnas para la


ordenacin.
Ejemplo: Listar los proveedores ordenados por zonas y
cdigos de productos en orden descendente.
SELECT NOMBRE, POBLACION, ZONA, CODPRO
FROM PROVEEDOR
ORDER BY ZONA, CODPRO DESC;

En este caso la secuencia de ordenacin la determina el


orden de enumeracin de las columnas a ordenar.
Otra forma de designar el orden de clasificacin es
indicando el orden de posicin de las columnas en las
instruccin SELECT. Basndose en el mismo ejemplo
anterior.
SELECT CODPRO, NOMBRE, POBLACION, ZONA
FROM PROVEEDOR
ORDER BY 4, 1 DESC;

10.

CLAUSULA LIMIT.

La preparacin de un query complicado implica


normalmente un proceso de prueba y error. Aunque no se
cometan errores, siempre se empieza escribiendo queries que
slo realizan una parte de lo que se desea alcanzar. Luego,
se van mejorando gradualmente hasta llegar al objetivo
buscado.
Cuando se trabaja con tablas autnticas con muchos
miles de filas, puede ser demasiado engorroso ir obteniendo
repetidas salidas con cientos de filas. Es obvio que no se
pueden observar en la pantalla del cliente de texto de mysql.
La clusula limit tiene dos parmetros, si slo se indica
un parmetro ste significa el nmero de filas a mostrar. En el
caso que se indiquen los dos, entonces, el primero indica
dnde se comienza la muestra de datos y el segundo el
nmero de filas a mostrar. La primera fila de una tabla
cualquiera comienza en la posicin cero.

PGINA 12 de 43

Breve visin de SQL*PLUS

Ejemplo: Mostrar los campos CAT, NOMBRE y SALARIO de


la tabla de PERSONAL. Muestra slo las tres primeras filas.
SELECT CAT, NOMBRE, SALARIO
FROM PERSONAL
LIMIT 3;

Las clusulas mencionadas, SELECT...FROM.. ,


WHERE, ORDER BY, y LIMIT deben escribirse, si aparecen,
en ese orden. SELECT siempre aparece y va en primer lugar.
Las otras 3 son optativas.

11.

EJERCCIOS.

 Expresiones aritmticas.
Seleccionar el NOMBRE, SALARIO, EXTRAS y calcular
una cuarta columna PAGA-EXTRA que sea el resultado de
aplicar un 20% al salario.
Crear una columna suplementaria TOTAL_EXTRA que
sea el resultado de sumar el SALARIO ms la
PAGA_EXTRA.
 Selecciones.
Seleccionar el personal cuyas EXTRAS sean inferiores
al 10% de su salario (tabla PERSONAL).
Seleccionar los proveedores cuya ZONA sea inferior o
igual a 5 (tabla PROVEEDOR).
Seleccionar aquellos
comience por LA.

proveedores

cuyo

NOMBRE

 Ordenacin de las selecciones.


Seleccionar todos los proveedores y ordenarlos por el
nmero de ZONA (tabla PROVEEDOR).

PGINA 13 de 43

Breve visin de SQL*PLUS

 Otros.
Seleccionar el artculo, proveedor y precio de todos los
productos cuyo precio sea inferior a 6.01 o que el nombre
del producto comience por la letra C.
Seleccionar el nombre, categora y salario de las
personas que tengan un salario entre 300.51 y 540.91
Incluidos los lmites. Presentar las cabeceras de las
columnas NOMBRE y CATEGORA EN EL CENTRO. El
orden de los datos ser el del salario en orden decreciente.
Seleccionar el artculo, proveedor y precio de los
artculos cuyo precio sea de 1.80, 2.40, 3.01, 7.21, 12.02,
48.08. Ordenar los datos a travs de la columna 1 en
orden alfabtico.

PGINA 14 de 43

Breve visin de SQL*PLUS

12.

UTILIZACIN DE FUNCIONES

Las funciones se pueden utilizar sobre campos y valores


numricos y literales en las instrucciones: SELECT, WHERE y
ORDER BY.
Ejemplo: Visualizar el cdigo, zona y la abreviacin de la
zona de la tabla Zonas. Ordenando los datos seleccionados por
la abreviacin de la zona.
SELECT CODIGO, ZONA, SUBSTR(ZONA,1,4) INICIALES
FROM ZONAS
ORDER BY SUBSTR(ZONA,1,4);

FUNCIONES DE CADENAS:

ASCII(CADENA)  Devuelve el valor ASCII del primer


carcter literal (Mysql).
Ejemplo:
SELECT ASCII(JUA);

Devuelve 74
SELECT ASCII(A);

Devuelve 65
CHAR(NUMERO) Convierte un valor numrico en un
carcter correspondiente en la codificacin ascii .
Ejemplo:
SELECT CHAR(65);

Devuelve A
LENGTH(CADENA)  Devuelve la longitud de un literal .
Ejemplo:
SELECT LENGTH(SQLPLUS);

Devuelve 7

PGINA 15 de 43

Breve visin de SQL*PLUS

LOWER(CADENA)  Convierte los caracteres del literal de


maysculas a minsculas.
LPAD(CADENA, NUMERO, CADENA2)  Rellena por la
izquierda con tantas CADENA2 hasta que se alcance la
longitud igual al NUMERO.
Ejemplo:
SELECT LPAD(ORACLE,10,O);

Devuelve OOOOORACLE
LTRIM(CADENA)  Realiza la funcin de eliminar los
blancos de la izquierda.
RTRIM(CADENA)  Realiza la funcin de eliminar los
blancos por la derecha.
RPAD(CADENA, NUMERO, CADENA2)  Realiza la misma
funcin que LPAD, pero solamente que ahora se realiza por la
derecha .
SUBSTR(CADENA, NUMERO1, NUMERO2)  Devuelve los
caracteres de la CADENA desde la posicin indicada en el
NUMERO1 y como longitud de la cadena el NUMERO2.
Adems tenemos otras funciones (SUBSTRING(str,pos,len),
LEFT(str,len),RIGHT(str,len),MID(str,pos,len),INSTR(str,substr),
REPLACE(str,from_str,to_str), REVERSE(str), REPEAT(str,count)

).

UPPER(CADENA)  Transforma las letras de la CADENA de


minsculas a maysculas.
CONCAT(CADENA1,CADENA2..)  Concatena dos o ms
literales.

CAST (CADENA AS TIPO)  Convierte una secuencia de


nmeros entre comillas al tipo especificado (SIGNED,
UNSIGNED, DATE .).
Ejemplo:
SELECT CAST(12345 AS SIGNED);

PGINA 16 de 43

Breve visin de SQL*PLUS

Ejemplo: Seleccionar el cdigo de proveedor, nombre y


poblacin de los proveedores, que residan en ciudades que
comiencen sus nombres por las letras PA.
SELECT CODPRO, NOMBRE, POBLACION
FROM PROVEEDOR
WHERE SUBSTR(POBLACION,1,2)=PA;

FUNCIONES NUMRICAS:
ABS(NUMERO)  Devuelve el valor absoluto del nmero
indicado.
Ejemplo:
SELECT ABS(-7);

// Devuelve 7

MOD(NUMERO1, NUMERO2)  Devuelve el resto de dividir


el NUMERO1 entre el NUMERO2.
Ejemplo:
SELECT MOD(12,7);

// Devuelve 5

POWER(NUMERO1, NUMERO2) Eleva a la potencia


indicada por el NUMERO2 la base indicada por el NUMERO1.
Ejemplo:
SELECT POWER(2,4);

// Devuelve 16

SIGN(NUMERO)  Devuelve el signo del numero indicado, la


convencin es 1 para nmeros negativos, 0 para el cero, 1
para los positivos.
SQRT(NUMERO)  Extrae la raz cuadrada de un NUMERO.
Si el valor es menor a cero devuelve NULL.
ROUND(NUMERO1,NUMERO2) Redondea el NUMERO1
tantas posiciones como indica el NUMERO2 en la parte
decimal del primero, usa la regla del cinco en el redondeo.

PGINA 17 de 43

Breve visin de SQL*PLUS

GREATEST (NUMERO1, NUMERO2 .....)  Devuelve el


mayor valor de la lista.
Ejemplo:
SELECT GREATEST (1, 2, 3, 4, 5);

// Devuelve 5

LEAST (NUMERO1, NUMERO2 ....) Devuelve el valor


inferior de la lista de valores indicados.
En todas las funciones numricas pueden ser sustituidos
por nombres de columnas de la BD, con la condicin que
stas sean numricas.
Ejemplo: Seleccione el cdigo de cliente, fecha, cdigo del
artculo y unidades de la tabla de Pedidos, donde las unidades
mdulo 4 den resultado 2.
SELECT CODCLI, FECHA, CODART, UNIDADES
FROM PEDIDOS
WHERE MOD(UNIDADES,4) = 2;

Ejemplo: Seleccionar nombre, salario, extras de aquellos


empleados que tengan no nulos. Indicando para cada uno de
los seleccionados la cantidad superior entre el salario o los
extras.
SELECT NOMBRE, SALARIO, EXTRAS, GREATEST (SALARIO,EXTRAS)
FROM PERSONAL
WHERE EXTRAS IS NOT NULL;

FUNCIONES CON FECHAS:


CURDATE() Esta funcin da la fecha del da.
Ejemplo:
SELECT CURDATE();

Obtenemos la fecha en el formato de fecha Ao-MesDa propio de MySQL.


DAYNAME()Dada una fecha, esta funcin da el nombe ( en
ingls) del da de la semana correspondiente.
PGINA 18 de 43

Breve visin de SQL*PLUS

Ejemplo:
SELECT DAYNAME(CURDATE());

DAYOFWEEK() Es complementaria de la anterior. En vez


de darnos el nombre del da de la semana nos da un cdigo
numrico de 1 a 7. El cdigo 1 representa el Domingo, el 2 el
Lunes, y as hasta el 7 que representa el Sbado.
Ejemplo:
SELECT DAYOFWEEK(CURDATE());

DATE_FORMAT() Nos permite presentar las fechas en


otros formatos. Los formatos que usaremos son '%d/%m/%y' y
'%d/%m/%Y'.
Ejemplo:
SELECT DATE_FORMAT(CURDATE(),%d/%m/%Y');

DATE_ADD()Esta funcin nos permite agregar a una fecha


cierto nmero de das ( o meses y aos)
Ejemplo: Cul es la fecha de dentro de 15 das?
SELECT DATE_ADD(CURDATE(), INTERVAL 15 DAY);

o mejor :
SELECT DATE_FORMAT(DATE_ADD(CURDATE(),INTERVAL 15 DAY) ,%d/%m/%Y');

DATE_SUB()Esta funcin le quita cierto nmero de das (o


meses y aos) a una fecha.
Ejemplo: Cul es la fecha de hace 15 das?
SELECT DATE_FORMAT(DATE_SUB(CURDATE(),INTERVAL 15 DAY),%d/%m/%Y');

DATEDIFF() Esta funcin obtiene la diferencia, en das,


entre dos fechas.
Ejemplo :
SELECT DATEDIFF(2005-4-1,2004-5-30);

Este query produce 306, lo que significa que del


30/5/2004 al 1/4/2005 van 306 das.
PGINA 19 de 43

Breve visin de SQL*PLUS

YEAR(), MONTH() ,DAY()extraen de una fecha el ao, el


mes y da correspondientes.
Ejemplo:
SELECT MONTH(2005-4-1); produce 4, el nmero del mes.

Ejemplo: Obtener el da de la semana en espaol.


SELECT
CASE DAYOFWEEK(CURDATE())
WHEN 1 THEN 'Domingo'
WHEN 2 THEN 'Lunes'
WHEN 3 THEN 'Martes'
WHEN 4 THEN 'Mircoles'
WHEN 5 THEN 'Jueves'
WHEN 6 THEN 'Viernes'
WHEN 7 THEN 'Sbado'
END AS Da de la Semana;

FUNCIN CON VALORES NULOS:


Existe una funcin llamada IFNULL que se utiliza
fundamentalmente para sustituir el valor NULL por un valor.
Su sintaxis es IFNULL(columna, valor_nuevo),
devuelve el valor de la columna si no es nulo, y en caso
contrario, devuelve el valor_nuevo.
Ejemplo:
SELECT SALARIO+IFNULL(EXTRAS,0)
FROM PERSONAL;

Ejemplo: Seleccione el nombre, salario, las extras y


substituya el valor nulo por un cero en la tabla de empleados.
SELECT NOMBRE, SALARIO, IFNULL(EXTRAS,0)
FROM PERSONAL;

Ejemplo: En el siguiente ejemplo vamos a ver lo que ocurre


cuando se suma un valor NULL a un nmero, de ah la
importancia de controlar los valores NULL.
SELECT NOMBRE, EXTRAS+SALARIO, IFNULL(EXTRAS,0)+ SALARIO
FROM PERSONAL;

PGINA 20 de 43

Breve visin de SQL*PLUS

FUNCIONES DE GRUPOS DE DATOS:


SQL nos permite formar grupos lgicos de datos que
tengan caractersticas comunes en sus valores o contenido.
Sobre estos conjuntos lgicos de dominios se pueden realizar
distintos tipos de estadsticas.
Las funciones que se usan ms son:
FUNCIN
AVG
COUNT

RESULTADO
Media aritmtica del grupo.
Cuenta el nmero de valores
del grupo.
Mximo valor del grupo.
Mnimo valor del grupo.
Suma de los valores del
grupo.

MAX
MIN
SUM

Todas ellas tambin funcionan en Mysql.


Las funciones MAX, MIN, COUNT pueden aplicarse a
valores tanto alfanumricos como a valores de fecha.
Ejemplo: Calcula la suma de los salarios y pagos extras de
los empleados de la tabla personal.
SELECT SUM(SALARIO), SUM(EXTRAS)
FROM PERSONAL;

Ejemplo: Contar el nmero de personas que trabajan en la


empresa.
SELECT COUNT(NOMBRE)
FROM PERSONAL;

Ejemplo: Contar las distintas categoras que existen en la


empresa.
SELECT COUNT(DISTINCT CAT)
FROM PERSONAL;

Ejemplo: Contar el nmero de personas que pertenecen al


grupo 50.

PGINA 21 de 43

Breve visin de SQL*PLUS

SELECT COUNT(*)
FROM PERSONAL
WHERE GRUPO=50;

El * permite contar el nmero de filas que cumplen las


condiciones.
Ejemplo: Calcular la suma de salarios de las personas que
pertenecen al grupo 50.
SELECT SUM(SALARIO), SUM(EXTRAS)
FROM PERSONAL
WHERE GRUPO=50;

Existe una instruccin que puede acompaar al SELECT


que es el GROUP BY, se utiliza para definir grupos.
Ejemplo: Sumar el total de salarios y pagos extras por grupos
de trabajadores.
SELECT GRUPO, SUM(SALARIO), SUM(EXTRAS)
FROM PERSONAL
GROUP BY GRUPO;

Tambin las funciones se pueden anidar.


Ejemplo:
SELECT AVG(SUM(SALARIO)), SUM(AVG(SALARIO))
FROM PERSONAL
GROUP BY GRUPO;

Ejemplo: Listar y contar las personas que trabajan en cada


categora y ordenarlas por orden creciente de grupo. Aadir
una lnea de totales (usar WITH ROLLUP en el GROUP BY)
SELECT GRUPO, CAT, COUNT(*)
FROM PERSONAL
GROUP BY GRUPO,CAT WITH ROLLUP;

Tambin existe otra instruccin que es HAVING, esta


instruccin permite especificar los grupos de informacin que
se desea extraer.

PGINA 22 de 43

Breve visin de SQL*PLUS

Ejemplo: Seleccionar la tabla personal las categoras donde


hay ms de dos personas con la misma categora.
SELECT GRUPO, CAT, COUNT(*)
FROM PERSONAL
GROUP BY GRUPO, CAT
HAVING COUNT(*)>2;

Como indica la sintaxis de la instruccin HAVING,


permite expresar las condiciones que deben de cumplir el
grupo de datos tratados.
Las condiciones expresadas en la instruccin deben
afectar solamente a aquellas especificadas en la instruccin
GROUP BY.
La instruccin WHERE puede utilizarse en combinacin
con la instruccin HAVING.
13.

EJERCICIOS.

1. Seleccionar los artculos que han sido pedidos dos o ms


veces (Tabla de pedidos).
2. Calcular el total de los salarios anuales por grupo en otra
columna adicional incluyendo los extras anuales por grupo
(Tabla de PERSONAL).
3. Determinar cuantos productos distintos hay en la tabla de
pedidos (TABLA PEDIDOS).
4. Calcular el total del valor de los productos cuto nombre
comienza por C, P o E (TABLA ARTICULO)

PGINA 23 de 43

Breve visin de SQL*PLUS

14.

Selecciones anidadas.

El anidamiento de selecciones permite ir delimitando el grupo


de datos sobre el que se va a trabajar. El anidamiento ofrece la
posibilidad de especificar condiciones que al seleccionar se
filtrarn tantas veces como anidamientos tengamos. Funciona en
Mysql desde la versin 4.1.

Ejemplo: Seleccionar los proveedores cuya zona sea Catalua.


SELECT NOMBRE, POBLACION, ZONA
FROM PROVEEDOR
WHERE ZONA=
( SELECT CODIGO
FROM ZONAS
WHERE ZONA=CATALUNYA);

Ejemplo: Seleccionar las personas que tienen un salario superior


al superior de los salarios de los trabajadores del grupo 20.
SELECT NOMBRE, CAT, GRUPO
FROM PERSONAL
WHERE SALARIO >
(SELECT MAX(SALARIO)
FROM PERSONAL
WHERE GRUPO=20);

Los anidamientos de selecciones se pueden utilizar los


operadores booleanos.
Ejemplo: Seleccionar las personas cuya categora sea igual a la
de PABLO OLIAS, o aquellas que tengan un salario superior a la
de FERNANDO TAPIAS.
SELECT NOMBRE, CAT, SALARIO, FECINC
FROM PERSONAL
WHERE CAT=
(SELECT CAT
FROM PERSONAL
WHERE NOMBRE=PABLO OLIAS)
OR
SALARIO >=
(SELECT SALARIO
FROM PERSONAL
WHERE NOMBRE=FERNANDO TAPIAS);

PGINA 24 de 43

Breve visin de SQL*PLUS

Ejemplo: Seleccionar los proveedores que residen en las zonas de:


CATALUNYA, ARAGON o AL ANDALUS.
SELECT NOMBRE, POBLACIN, CODPRO, ZONA
FROM PROVEEDOR
WHERE ZONA IN
( SELECT CODIGO FROM ZONAS
WHERE ZONA IN (CATALUNYA, ARAGON, AL ANDALUS))
ORDER BY NOMBRE;

Ejemplo: Seleccionar las personas que tengan el mismo salario y


grupo de JOSE BERMEJO.
SELECT NOMBRE, CAT, SALARIO
FROM PERSONAL
WHERE (GRUPO, SALARIO) IN
(SELECT GRUPO, SALARIO
FROM PERSONAL
WHERE NOMBRE=JOSE BERMEJO);

Ejemplo: Seleccionar aquellos proveedores de productos que


superen algunos de sus productos el precio de 12.02 .
SELECT NOMBRE, POBLACION, CODPRO
FROM PROVEEDOR
WHERE EXISTS
(SELECT PROVEEDOR FROM ARTICULO
WHERE
PROVEEDOR.CODPRO=ARTICULO.PROVEEDOR
ARTICULO.PRECIO > 12.02);

15.

AND

JOINS

La seleccin de datos de varias tablas pueden realizarse desde


una sola secuencia SELECT.
En el caso de existir columnas con el mismo nombre, en la
instruccin WHERE hay que prefijar la columna con el nombre de la
tabla a la que pertenece, tabla.columna.
Ejemplo: Se desea presentar cada proveedor, con su zona de
ubicacin.
SELECT NOMBRE, POBLACION, PROVEEDOR.ZONA, ZONAS.ZONA
FROM PROVEEDOR, ZONAS
WHERE PROVEEDOR.ZONA= ZONAS.CODIGO;

PGINA 25 de 43

Breve visin de SQL*PLUS

Se pueden unir tantas tablas como se deseen en una


secuencia SQL. Esto se realiza a travs de columnas comunes a
las tablas unidas, a estos se les denomina criterios de join.
La instruccin WHERE es la que nos permite indicar los
criterios del join.
De la observacin de la instruccin se deduce que, si se
desea fusionar n tablas es necesario tener n-1 expresiones de
join.
A este tipo de join se denomina Equi-join. Dicho de otra
forma: es Equi-join el join de las tablas R y S sobre los atributos
Ai y Bj segn las calificacin Ai = Bj .
El caso ms general de la join es el producto cartesiano
de las tablas con las que se opera. Esto se produce cuando en la
instruccin WHERE no se especfica condicin alguna de join.
Ejemplo: Seleccin de los clientes cuyo nombre comience por
una T y fusin con la tabla de estatus.
SELECT NOMBRE, POBLACION, DENOMINACION
FROM CLIENTES, ESTATUS
WHERE NOMBRE LIKE T%;

Existe la posibilidad de extraer, en la secuencia join,


aquellas filas que no se han podido fusionar con otras de la tabla,
adems de las filas para las cuales la condicin del join se ha
verificado.
Ejemplo: Seleccionar los proveedores y las zonas de residencia
as como aquellas zonas en las que no se tienen proveedores.
SELECT NOMBRE, POBLACION, ZONAS.ZONA
FROM PROVEEDOR LEFT JOIN ZONAS ON PROVEEDOR.ZONA =CODIGO;

16.

OTRAS OPERACIONES CON CONJUNTOS.

Existen Otras operaciones para realizar JOIN de tablas. Estas


operaciones son la UNION, UNION ALL, ALL, ANY.

PGINA 26 de 43

Breve visin de SQL*PLUS

La UNION aade N filas del resultado de la primera seleccin a


las M filas resultantes de otra seleccin obteniendo como resultado
una tabla de N+M filas menos las filas que fueran duplicadas.
La UNION ALL hace lo mismo que UNION slo que no elimina
duplicados y coloca una tabla detrs de la otra.
El ALL se utiliza para seleccionar filas que cumplen una
condicin con todas las filas de una subquery.
El ANY se utiliza para seleccionar filas que cumplen una
condicin con algunas las filas de una subquery.

Ejemplo: En esta seleccin se va a tomar el nmero de


personal, nombre y grupo de las personas que pertenecen al grupo
40 y todos los miembros de personal cuyo nombre comienza por J.
SELECT NPER, NOMBRE, GRUPO
FROM PERSONAL
WHERE GRUPO=40
UNION
SELECT NPER, NOMBRE, GRUPO
FROM PERSONAL
WHERE NOMBRE LIKE J%;

Ejemplo: Mustrame el nombre, salario del empleado que


cobra ms en la empresa.
SELECT NOMBRE, SALARIO
FROM PERSONAL
WHERE SALARIO >=ALL(SELECT SALARIO FROM PERSONAL);

PGINA 27 de 43

Breve visin de SQL*PLUS

17.

EJERCCIOS.

1. Seleccionar los proveedores de aquellos productos que han


sido pedidos dos o ms veces. Editar el Nombre del
proveedor, el artculo y la cantidad pedida.
2. Seleccionar y sumar los productos pedidos por un cliente ms
de una vez.
3. Seleccionar los productos pedidos por cada cliente indicando
el nombre del cliente, el producto as como el total de cada
pedido por producto.
4. Determinar en que localidad habitan aquellas personas que
tienen un salario mensual situado entre 180.30 y 534.90 .
Indicar sus nombres, categoras, nombre del servicio as como
la localidad.
5. Seleccionar aquellas personas que tengan un salario superior
al de PABLO OLIAS.
6. Seleccionar aquellas personas que tengan un salario que se
encuentre entre el mximo y el mnimo del salario relativo al
nivel 4.

PGINA 28 de 43

Breve visin de SQL*PLUS

18.

MANIPULACIN DE DATOS.

Entre las instrucciones de manipulacin de datos tenemos la


instrucciones de insercin que como su nombre indica sirve para
insertar filas en las tablas.
Ejemplo: Insertar en la tabla actividades la nueva actividad
materiales de construccin con el cdigo 00.
INSERT INTO ACTIVIDADES VALUES (00,MATERIALES DE CONS.);

Si despus queremos visualizarlo, y de esta manera


asegurarnos de que se ha insertado correctamente haremos lo
siguiente:
SELECT * FROM ACTIVIDADES WHERE CODIGO=0;

Antes de insertar o dar de alta datos en una tabla, esta debe


haber sido creada. La asignacin de valores a cada fila se debe
hacer en la misma secuencia en las que figuran en la tabla. Si por el
contrario se desea asignar el valor solamente a algunas columnas,
estas debern ser mencionadas con sus nombres.
Ejemplo: Copiar de la tabla personal los datos de las personas que
cobran un salario inferior a 601.01 a la tabla perso1.
CREATE TABLE PERSO1
(NOM1 CHAR(20),
CAT1 CHAR(10),
SAL1 NUMBER(6));
INSERT INTO PERSO1(NOM1, CAT1, SAL1)
SELECT NOMBRE, CAT, SALARIO
FROM PERSONAL
WHERE SALARIO <601.01;
SELECT * FROM PERSO1;

Las columnas que figuran en la instruccin INSERT son


aquellas que figuran en la tabla receptora. De la misma forma el
orden de las columnas tambin debe ser el mismo en la instruccin
INSERT que en la instruccin SELECT y el mismo que existe en la
tabla.

PGINA 29 de 43

Breve visin de SQL*PLUS

Como ya se ha dicho, en el caso en el que slo se desee


asignar valores a algunas columnas, hay que nombrarlas
explcitamente e indicar los valores de forma posicional.
Ejemplo:
INSERT INTO PERSONAL(NPER, NOMBRE, CAT, SALARIO, GRUPO)
VALUES (1111,PEPE GOMEZ, COBRADOR,1202.02,40);
SELECT * FROM PERSONAL
WHERE NOMBRE =PEPE GOMEZ;

Otra instruccin de manipulacin


instrucciones de modificacin UPDATE.

de

datos

son

las

Ejemplo:
UPDATE PERSONAL
SET NOMBRE=JOSE PEREZ
WHERE NOMBRE=PEPE GOMEZ;
SELECT * FROM PERSONAL WHERE NOMBRE =JOSE PEREZ;

La instruccin UPDATE acta sobre todos los valores de la


tabla que verifiquen la condicin expresada en la instruccin
WHERE. En el caso de que la instruccin WHERE no se utilice, la
modificacin ser realizada en todas las filas en la columna
designada.
Existe la posibilidad de asignar un valor nulo NULL a una
columna, siempre y cuando la definicin de la tabla permita asignar
valores nulos a esa columna.
A travs de una sola secuencia UPDATE se pueden realizar
distintas modificaciones en cada fila.
Ejemplo: Realizar un aumento del 10% en el salario y asignar una
paga extra de un 15% del salario, a todos los empleados del grupo
40.
SELECT * FROM PERSONAL WHERE GRUPO=40;
UPDATE PERSONAL
SET SALARIO =SALARIO*1.1,
EXTRAS=SALARIO*0.15
WHERE GRUPO=40;
SELECT * FROM PERSONAL WHERE GRUPO=40;

PGINA 30 de 43

Breve visin de SQL*PLUS

Ejemplo: Incrementar el salario en un 15% aquellas personas que


no tengan pagas extras.(Funciona en Mysql desde la 4.1)
UPDATE PERSONAL
SET SALARIO =SALARIO*1.15
WHERE EXTRAS IS NULL

Tambin la instruccin UPDATE puede tener unas sintaxis


como sigue:
UPDATE <tabla>
SET <columna> =(SELECT <columna> FROM )
WHERE <condicin>

Otra de las instrucciones de modificacin de datos es la de


borrado de datos (DELETE).
Para comprobar el uso de las transacciones en la base de
datos debemos pasar las tablas al tipo INNODB. Usaremos tambin
un cliente mysql de tipo texto( mysql hdir uusuario -pclave).
Si queremos usar las transacciones en modo manual en todas
debemos usar desde el cliente mysql de tipo texto del siguiente
comando:
SET AUTOCOMMIT=0;

Si por el contrario queremos usarlo slo en alguna, debemos


usar START TRANSACTION.
Ejemplo: Borrar de la tabla personal todas las personas cuyo
salario sea superior a 601.01 mensuales.
START TRANSACTION;
DELETE FROM PERSONAL WHERE SALARIO > 601.01;
ROLLBACK;

Por ltimo existen instrucciones de manipulacin de datos que


sirven para rechazar o aceptar los cambios, ya que todas las
operaciones hechas se modifican en memoria SGA y no se vuelcan

PGINA 31 de 43

Breve visin de SQL*PLUS

hasta que se salga de la herramienta o se ejecute una sentencia


COMMIT o ROLLBACK.
El COMMIT es la operacin que acepta todas las operaciones
hechas desde el ltimo COMMIT.
El ROLLBACK deshace todas las operaciones hechas desde
el ltimo COMMIT que se ha consolidado.
19.

EJERCICIOS

1. Crear una tabla a partir de la tabla PERSONAL donde no


aparezcan las columnas GRUPO y EXTRAS.
2. Actualice el salario en la tabla personal con el 10% de las
extras de cada empleado.

PGINA 32 de 43

Breve visin de SQL*PLUS

20.

CREACIN DE TABLAS

La orden de CREATE TABLE permite la creacin y definicin


de la estructura de tablas.

Ejemplo: Creacin de una tabla, ARTICULO, con seis campos por


registro.
CREATE TABLE ARTICULO
(CODART VARCHAR(6),
DENOMINACION VARCHAR(15),
PROVEEDOR VARCHAR(15),
CODPRO INT(4) NOT NULL,
PRECIO INT(4) NOT NULL,
PRIMARY KEY(CODART));

Las caractersticas de la instruccin CREATE TABLE son las


siguientes:
La tabla creada por un usuario es particular al usuario. O sea
un nombre de tabla es nico para uniusuario dado.
Lo mismo sucede con el nombre de las columnas de una
tabla. Estas son particulares a la tabla.
La definicin de un dominio con la palabra clave NOT NULL,
garantiza, a travs del diccionario, la existencia de un valor en las
acciones de ACTUALIZACIN e INSERCIN.
Como se puede observar, existe la posibilidad de copiar parte
de la tabla. Esta copia afecta a la estructura de la tabla as como los
datos que se copian.
CREATE TABLE EXTRAS
AS SELECT NOMBRE, CAT, SALARIO, ESTRAS
FROM PERSONAL
WHERE GRUPO=40;
SELECT * FROM EXTRAS;

A la hora de definir el tipo de los datos, tendremos los


siguientes:

PGINA 33 de 43

Breve visin de SQL*PLUS

CHAR(n) o VARCHAR(n) o VARCHAR2(n)  Permite definir


una cadena de caracteres alfanumricos de una longitud n.
DECIMAL(n,d)  Define una variable de tipo numrico. EL
nmero total de dgitos es definido por n y el nmero de
decimales que tiene lo define d.
INT(n)  Define una variable de tipo numrico. EL nmero
total de dgitos es definido por n.
DATE  Especifica el tipo de dato en formato fecha.
Existen muchos ms y dependiendo de la versin aparecen
algunos nuevos. Pero, estos son los ms bsicos y que reflejan los
datos ms frecuentes que se almacena en la base de datos.
Existen operaciones bsicas sobre las tablas, como son la
modificacin de tipos de datos de una columna de la misma, o el
aadir una nueva columna a la tabla.
Ejemplo: Agregar a la tabla personal un campo que permita indicar
la edad de cada trabajador.
ALTER TABLE PERSONAL ADD EDAD NUMBER(2);

Ejemplo: Modificar la longitud de la columna CAT (CATEGORIA) de


la tabla DEPT, amplindola a 15 caracteres.
ALTER TABLE PERSONAL MODIFY CAT CHAR(15);

Ejemplo: Eliminar de la tabla personal el campo edad.


ALTER TABLE PERSONAL DROP COLUMN EDAD;

Otras operaciones que hay son las de borrar o eliminar la


estructura de la tabla.
DROP TABLE PERSO1;

Si se realiza el borrado de una tabla con esta sentencia,


produce el borrado de los datos as como la eliminacin de la
estructura sin previo aviso por parte del sistema. El borrado de un
atabla solamente lo puede hacer su propietario.
Adems no existe la posibilidad de activar ROLLBACK una
vez ejecutado un DROP TABLE.

PGINA 34 de 43

Breve visin de SQL*PLUS

Otra operacin es la de modificar el nombre de una tabla, esta


operacin se realizara de la forma siguiente:
RENAME ESTATUS TO TIPOCLIENTE

Este cambio tambin solo puede ser llevado a cabo por el


propietario de la tabla.

21.

Vistas (A partir de la versin mysql 5.0.1).

La utilizacin de vistas permiten aadir a los datos las


caractersticas de seguridad en los datos.
La vista se puede considerar como una tabla virtual derivada
dela seleccin de una tabla real de la Base de datos. Y siempre se
crea o define a travs de selecciones de una o ms tablas.
Ejemplo: Se dispone de la tabla personal de la que se quiere
realizar una vista. En esta vista slo nos interesa las columna
NOMBRE, SALARIO, FECINC, CAT y que cumpla que el salario
debe ser mayor de 420.71 . (No hay funciona en Mysql)
Para ver el contenido de la tabla hacemos:
SELECT * FROM PERSONAL;
Y para crear la vista se har
CREATE VIEW PERSONAL1 AS
SELECT NOMBRE, SALARIO, FECINC, CAT
FROM PERSONAL
WHERE SALARIO >420.71;
SELECT * FROM PERSONAL1;

Los nombre de las comunas, de la vista, son las misma que


los de la tabla original, por defecto. Estas pueden, si se desea, ser
diferentes de las columnas primitivas. Esto puede ser necesario,
cuando se necesita una vista resultado de la tabla primitiva.
EJEMPLO: Crear una vista que resulte de la suma de los salarios
de la tabla personal.
CREATE VIEW SUMAS (TOTAL_SAL) AS
SELECT SUM(SALARIO)
FROM PERSONAL;

PGINA 35 de 43

Breve visin de SQL*PLUS

SELECT * FROM SUMAS;

Para eliminar una vista se debe realizar a travs de la


siguiente instruccin:
DROP VIEW <nombre de vista>
EJEMPLO: Eliminacin de la vista EXTRAS.
DROP VIEW EXTRAS;

22.

Ejerccios.

 Crear una visin a partir de la tabla PERSONAL eliminando los


campo EXTRAS y GRUPO.
 Crear una nueva vista a partir de personal donde estn todos
los empleados con un salario superior a 3.01 .
 Crear una vista a partir de la ya creada anteriormente que
contengan solamente los empleados con salario superior a
420.71 .
 Borrar, en la ultima visin creada, los empleados que tengan un
ingreso inferior a 601.01 . No realizar el COMMIT de esta
ltima accin.
 Realizar el ROLLBACK del ejercicio anterior.
 Realizar un incremento salaria del 10% a quellos empleados
que tengan unos ingresos mensuales situados entre 601.01 y
721.21. Esto a travs de la visin creada anteriormente. Y
comprobar si se han realizado la actualizaciones salariales de
los datos a traves de la tabla de PERSONAL.

PGINA 36 de 43

Breve visin de SQL*PLUS

ANEXO I
Para la realizacin de ejemplos y ejercicios del manual se han
creado una pequea base, formada por las tablas siguientes:
b.
c.
d.
e.
f.
g.
h.
i.
j.
k.

PERSONAL
ACTIVIDADES
PROVEEDOR
ARTICULO
CLIENTES
PEDIDOS
ESTATUS
ZONAS
SALARIOS
SERVICIOS

Las cuales se comienzan a detallar seguidamente:


SQL> DESC PERSONAL
Nombre
Nulo?
------------------------------- -------NPER
NOT NULL
NOMBRE
CAT
FECINC
SALARIO
EXTRAS
GRUPO

Tipo
----NUMBER(6)
VARCHAR2(20)
VARCHAR2(10)
DATE
NUMBER(7,2)
NUMBER(7,2)
NUMBER(3)

SQL> DESC ACTIVIDADES


Nombre
Nulo?
Tipo
------------------------------- -------- ----CODIGO
NOT NULL NUMBER(2)
ACTIVIDAD
VARCHAR2(20)
SQL> DESC PROVEEDOR
Nombre
Nulo?
------------------------------- -------CODPRO
NOT NULL
NOMBRE
POBLACION
ZONA
MAYOR

Tipo
----NUMBER(3)
VARCHAR2(15)
VARCHAR2(15)
NUMBER(2)
NUMBER(3)

SQL> DESC ARTICULO


Nombre
Nulo?
------------------------------- -------CODART
NOT NULL
ARTICULO
PROVEEDOR
PRECIO

Tipo
----VARCHAR2(5)
VARCHAR2(20)
NUMBER(3)
NUMBER(6,2)

PGINA 37 de 43

Breve visin de SQL*PLUS

SQL> DESC CLIENTES


Nombre
Nulo?
------------------------------- -------CODIGO
NOT NULL
NOMBRE
POBLACION
ACTIVITI
ESTADO

Tipo
----NUMBER(2)
VARCHAR2(16)
VARCHAR2(15)
NUMBER(2)
NUMBER(2)

SQL> DESC PEDIDOS


Nombre
Nulo?
------------------------------- -------CODCLI
FECHA
CODART
UNIDADES
NUMPEDIDO
NOT NULL

Tipo
----NUMBER(2)
DATE
VARCHAR2(5)
NUMBER(3)
NUMBER(2)

SQL> DESC ESTATUS


Nombre
Nulo?
Tipo
------------------------------- -------- ----CODIGO
NOT NULL NUMBER(2)
DENOMINACION
VARCHAR2(20)
SQL> DESC ZONAS
Nombre
Nulo?
Tipo
------------------------------- -------- ----CODIGO
NOT NULL NUMBER(2)
ZONA
VARCHAR2(20)
SQL> DESC SALARIOS
Nombre
Nulo?
------------------------------- -------NIVEL
NOT NULL
INF
SUP

Tipo
----NUMBER(2)
NUMBER(7,2)
NUMBER(7,2)

SQL> DESC SERVICIOS


Nombre
Nulo?
------------------------------- -------GRUPO
NOT NULL
NOMBRE
LOCALIDAD

Tipo
----NUMBER(3)
VARCHAR2(15)
VARCHAR2(15)

Y el contenido de las tablas seria el siguiente:


SQL> SELECT * FROM PERSONAL;
NPER
GRUPO
----------------700111
10
750123
10

NOMBRE

CAT

FECINC

SALARIO

EXTRAS

-------------------- ---------- -------- --------- --------PEDRO MOLINA

CHOFER

01/01/87

420.71

ANTONIO BREA

PORTERO

20/01/87

300.51

PGINA 38 de 43

12.02

Breve visin de SQL*PLUS

750987 BENITO ORTIZ

CAJERO

15/06/79

450.76

DIRECTOR

20/03/75

1803.04

770200 ELEUTERIO ALFARO

CONTABLE

08/09/77

721.21

200250 MARISOL GONZALES

SECRETARIA 25/10/78

480.81

200270 JOSEFINA CUESTA

SECRETARIA 17/02/79

420.71

700540 FERNANDO TAPIAS

AGENTE

20/01/80

601.01

120.20

700570 JOSE BERMEJO

AGENTE

15/07/80

601.01

90.15

700610 PABLO OLIAS

AGENTE

23/08/81

540.91

120.20

700620 EMILIO TORO

CHOFER

10/10/81

450.76

60.10

770700 JUAN ORTIZ

JEFE-ALMAC 24/10/82

721.21

700111 PEDRO MACHACA

CONTABLE

15/02/83

691.15

ADMINISTRA 23/04/83

1202.02

20
1 FRANCISCO PEREZ
100
50
50
50
40
40
40
10
30
50
1770 RAFAEL GUTIERREZ
50
750800 RAMON ROMERALES

CAJERO

25/11/84

420.71

20
15 filas seleccionadas.
SQL> SELECT * FROM ACTIVIDADES;
CODIGO
--------2
6
8
10
12
14
16
18
20
22
24
26
28
30

ACTIVIDAD
-------------------COSMETICOS Y PERFUME
ULTRAMARINOS
CARNICERIA
PRODUCTOS LACTEOS
BRICOLAGE
BEBIDAS Y ALCOHOLES
CARPINTERIA
PINTURA
PRET A PORTER
MODA INFANTIL
ROPA INTERIOR FEM.
AUTOMOVIL
PAPELERIA
LIBRERIA Y PAPELERIA

14 filas seleccionadas.
SQL> SELECT * FROM PROVEEDOR;
CODPRO
--------12
14
26
28
310
312
414

NOMBRE
--------------FLOR SALVAJE SA
BRILLANTE S.A.
LAS ISLAS S.A.
LA CHAROLESA SA
LA LECHERA S.A
EL PUNTERO S.L
LA BOTA S.L

POBLACION
ZONA
MAYOR
--------------- --------- --------BARCELONA
2
82
BARCELONA
2
74
LUGO
3
66
ORENSE
3
58
SANTANDER
4
410
REINOSA
4
416
BILBAO
1
414

PGINA 39 de 43

Breve visin de SQL*PLUS

416
518
520
622
624
726
728
830
82
74
66
58
410

FORMON S.A
LA BROCHA S.L.
ETIQUETA L.T.D
DIABOLO S.A.
PLAISIR S.A.
RECAMBIO S.L.
CUADERNOS S.A
EL TIEMPO S.A.
SENTEURS S.A
LA ABEJA S.A.
EL NAVEGANTE SA
LA CHULETA S.A
CABARALES S.L.

VITORIA
BILBAO
CAIN
TOLOSA
PAMPLONA
LOGROO
HARO
PALMA
IBIZA
ZARAGOZA
HUESCA
LEON
PALENCIA

1
1
5
6
6
7
7
8
8
9
9
10
10

312
414
10
520
10
726
830
728
12
14
26
28
310

20 filas seleccionadas.
SQL> SELECT * FROM ARTICULO;
CODAR
----02COL
02JAB
04DET
04LIM
06CON
06ESP
08CAR
08EMB
10QUE
10LEC
12HER
12TOR
14REF
14ALC
16MAD
16UTI
18BRO
18PIN
20MAS
20FEM
22NTA
22NIO
24ALT
24BAJ
26ACE
26MOT
28OFI
28ESC
30GPU
30ESP
30INF

ARTICULO
PROVEEDOR
PRECIO
-------------------- --------- --------FLEUR SAUVAGE
12
7.21
ROGER ET GALET
82
2.40
ARIELES
14
4.51
LIMPIATODO
74
2.58
ESPARRAGOS NAVARROS
26
2.22
PIMIENTA
66
0.90
ENTRECOTE
28
6.61
CHORIZO IBERICO
58
10.22
MANCHEGO CURADO
310
7.21
LECHE DESNATADA
410
0.30
MARTILLO
312
4.33
PUNTAS MADERA
312
1.80
GASEOSA CASERA
414
0.24
CAVA CODORNIU
414
3.19
AGLOMERADO
416
2.58
FORMON MEDIANO
416
3.07
BROCHA SINTETICA
518
1.38
ESMALTE BRILLANTE
518
3.31
TRAJES ENTRETIEMPO
520
54.09
CONJUNTOS SPORT
520
54.09
UNIFORME ESCOLAR
622
48.08
CONJUNTOS DEPORTIVOS
622
36.06
SUJETADOR SEDA
624
30.05
COMBINACION SINTETIC
624
12.02
RETROVISOR TM
726
5.23
CARBURADOR IBIZA
726
57.10
PAPEL DINA4
728
6.01
CUADERNOS ESPIRAL
728
6.01
NOVELAS SERIE NEGRA
830
2.10
BIOLOGIA GENERAL
830
27.05
COMICS INFANTILES
830
1.20

31 filas seleccionadas.
SQL> SELECT * FROM CLIENTES;
CODIGO
--------1
4
2

NOMBRE
---------------GERMAN MARTINEZ
EUGENIO NARRILO
EMILIO OLIAS

POBLACION
ACTIVITI
ESTADO
--------------- --------- --------MADRID
2
1
PALENCIA
6
4
BURGOS
8
5

PGINA 40 de 43

Breve visin de SQL*PLUS

3
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

FRANCISCO ROMER
PABLO CUESTA
BENITO CANTARE
VICENTE BERMEJO
SINESIO TORIBIO
JESUS ALFARO
TORCUATO PEREZ
ANTONIO CAMACHO
JACINTO TORRES
FERNANDO ARIAS
ANSELMO LOPEZ
ANGEL CAMACHO
JUAN PINTO
FRANCISCO RAMOS
MANUEL CASTRO
BERNARDO ORTIZ
VICENTE PEREZO
LUIS MORCILLO
FERNANDO LARIOS
LUIS GUILLEN
RAFAEL MASIA
LUIS HERENCIA
MANUEL MENA
RAMON MARAJUDO
EMILIO VILLA
FRANCISCO BREA
EUGENIO MOLINA

VALLADOLID
LEON
SORIA
SEGOVIA
MADRID
BURGOS
VALLADOLID
PALENCIA
LEON
SORIA
SEGOVIA
AVILA
SALAMANCA
MADRID
BURGOS
VALLADOLID
PALENCIA
LEON
SORIA
SEGOVIA
AVILA
SALAMANCA
BARCELONA
TARRASA
MADRID
BARCELONA
TARRASA

30 filas seleccionadas.
SQL> SELECT * FROM PEDIDOS;
CODCLI
--------1
2
5
7
9
11
2
4
6
8
10
1
2
4
10
6
8
12
14
16
18
20
3
7
9
25
30

FECHA
-------01/01/87
02/01/87
05/01/87
12/01/87
20/01/87
02/02/87
05/02/87
06/02/87
07/02/87
07/02/87
07/02/87
09/02/87
09/02/87
10/02/87
14/03/87
10/02/87
14/03/87
15/03/87
15/03/87
16/03/87
17/03/87
17/03/87
17/03/87
18/04/87
18/04/87
20/04/87
20/04/87

CODAR UNIDADES NUMPEDIDO


----- --------- --------02COL
2
1
02JAB
9
2
04DET
7
3
06CON
15
4
08CAR
6
5
10QUE
4
6
12HER
20
7
14REF
50
8
16MAD
30
9
18PIN
25
10
20FEM
70
11
26ACE
55
12
28ESC
20
13
30ESP
22
14
08EMB
13
17
18BRO
30
15
14ALC
45
16
14ALC
8
18
20MAS
15
19
12HER
21
20
06ESP
50
21
10LEC
70
22
16MAD
60
23
28OFI
40
24
20MAS
20
25
26ACE
10
26
08EMB
80
27

PGINA 41 de 43

4
20
14
12
18
16
10
12
20
18
16
14
12
10
8
6
4
2
20
16
12
8
4
2
6
10
14

2
3
10
7
9
6
8
10
8
9
7
6
5
4
3
2
1
10
8
6
4
2
1
3
5
7
9

Breve visin de SQL*PLUS

3
12
8
25
18
14
9
17
21
8
14
16
21
19

21/05/87
21/05/87
25/05/87
25/05/87
26/05/87
26/05/87
28/05/87
28/05/87
30/05/87
30/05/87
01/06/87
01/06/87
02/06/87
02/06/87

02COL
08CAR
14REF
20MAS
20MAS
08CAR
04LIM
16MAD
04LIM
24BAJ
28OFI
12HER
16UTI
06CON

75
65
15
25
25
95
100
33
43
55
25
85
10
15

41 filas seleccionadas.
SQL> SELECT * FROM ESTATUS;
CODIGO
--------1
2
3
4
5
6
7
8
9
10
11

DENOMINACION
-------------------MOROSO
BUEN PAGADOR
PAGADOR IRREGULAR
BUENO
CLIENTE ESPORADICO
EXCELENTE
MAYORISTA
PROBLEMATICO
SITUACION DIFICIL
MUY MAL(CUIDADO)
FIEL

11 filas seleccionadas.
SQL> SELECT * FROM ZONAS;
CODIGO
--------1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

ZONA
-------------------EUSKAL HERRIA
CATALUNYA
GALICIA
CANTABRIA
ASTURIAS
NAVARRA
RIOJA
BALEARES
ARAGON
CASTILLA-LEON
MADRID
COMU. VALENCIA
CASTILLA LA MANCHA
EXTREMADURA
AL ANDALUS
MURCIA
CANARIAS

17 filas seleccionadas.
SQL> SELECT * FROM SALARIOS;

PGINA 42 de 43

28
29
30
31
31
33
34
35
36
37
38
39
40
41

Breve visin de SQL*PLUS

NIVEL
INF
SUP
--------- --------- --------1
180.30
294.50
2
300.51
414.70
3
420.71
534.90
4
540.91
775.31
5
781.32
3005.06
SQL> SELECT * FROM SERVICIOS;
GRUPO
--------10
20
30
40
50
100

NOMBRE
--------------MANTEN Y SERV.
CAJA Y CONTA.
SERVICIOS GEN.
SERV. COMERCIAL
ADMIN. Y CONTA.
DIRECCION GEN.

LOCALIDAD
--------------MADRID
BURGOS
ALCORCON
LEGANES
BARCELONA
LAS ROZAS

6 filas seleccionadas.

PGINA 43 de 43

También podría gustarte