Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Manipulación de
Datos en la Base
de Datos.
1.1- Sentencia SELECT
El sub lenguaje DML (data manipulation languaje) define las sentencias de
manipulación de datos SELECT, INSERT, UPDATE y DELETE, que permiten
seleccionar, insertar, modificar y eliminar datos de tablas que están dentro
de una base de datos, datos restringidos por la cláusula WHERE en caso
que sea utilizada.
1
Dada la tabla EMPLEADOS con los campos:
EMPLEADOS
ID: clave primaria.
PK ID
APELLIDOS: apellido/s del empleado.
APELLIDOS NOMBRES: nombre/s del empleado.
NOMBRES
SALARIO SALARIO: salario mensual del empleado.
La consulta siguiente:
salario as SALARIO,
salario*1,2 as AUMENTO
from empleados
GOMEZ, EDUARDO con salario de: 100 con un 20% resulta: 120
RODRIGUEZ, SEBASTIAN con salario de: 123 con un 20% resulta: 147,6
FERNANDEZ, PABLO con salario de: 345 con un 20% resulta: 414
Las funciones de filas simples, retornan un solo valor por cada fila de una
tabla o vista consultada.
2
Estas funciones pueden ser utilizadas en la sentencia SELECT dentro de la
propia sentencia o en las cláusulas WHERE o HAVING.
select apellidos,
nombres,
salario
from empleados;
select apellidos,
nombres,
salario * 1.1
from empleados;
3
La cláusula FROM es utilizada dentro de la sentencia SELECT para enumerar
los orígenes desde donde se traerán los datos mostrados en la propia
sentencia SELECT.
4
CLUBES Dada la tabla CLUBES con los campos.
PK ID ID: clave primaria.
NOMBRE NOMBRE: nombre del club.
el producto cartesiano mostrará que cada club juega con el resto e incluso
consigo mismo, lo cual resultaría imposible:
5
Aldosivi de Mar del Plata Aldosivi de Mar del Plata
Aldosivi de Mar del Plata Almirante Brown
Aldosivi de Mar del Plata Atlético Tucumán
Aldosivi de Mar del Plata Banfield
Aldosivi de Mar del Plata Boca Unidos de Corrientes
Aldosivi de Mar del Plata Brown de Adrogué
Aldosivi de Mar del Plata Crucero del Norte
Aldosivi de Mar del Plata Defensa y Justicia
Aldosivi de Mar del Plata Douglas Haig de Pergamino
Aldosivi de Mar del Plata Ferro Carril Oeste
Aldosivi de Mar del Plata Gimnasia de Jujuy
Aldosivi de Mar del Plata Huracán
Aldosivi de Mar del Plata Independiente de Avellaneda
Aldosivi de Mar del Plata Independiente Rivadavia de Mendoza
Aldosivi de Mar del Plata Instituto de Córdoba
Aldosivi de Mar del Plata Patronato de Paraná
Aldosivi de Mar del Plata San Martin de San Juan
Aldosivi de Mar del Plata Sarmiento de Junín
Aldosivi de Mar del Plata Sportivo Belgrano de San Francisco
Aldosivi de Mar del Plata Talleres de Córdoba
Aldosivi de Mar del Plata Unión de Santa Fe
Aldosivi de Mar del Plata Villa San Carlos
Almirante Brown Aldosivi de Mar del Plata
Almirante Brown Almirante Brown
Almirante Brown Atlético Tucumán
Almirante Brown Banfield
Almirante Brown Boca Unidos de Corrientes
Almirante Brown Brown de Adrogué
Almirante Brown Crucero del Norte
Almirante Brown Defensa y Justicia
Almirante Brown Douglas Haig de Pergamino
Almirante Brown Ferro Carril Oeste
Almirante Brown Gimnasia de Jujuy
Almirante Brown Huracán
Almirante Brown Independiente de Avellaneda
Almirante Brown Independiente Rivadavia de Mendoza
Almirante Brown Instituto de Córdoba
Almirante Brown Patronato de Paraná
Almirante Brown San Martin de San Juan
Almirante Brown Sarmiento de Junin
Almirante Brown Sportivo Belgrano de San Francisco
Almirante Brown Talleres de Córdoba
Almirante Brown Unión de Santa Fe
Almirante Brown Villa San Carlos
6
si modificamos el SELECT colocando la condición en el WHERE (veremos
más adelante su utilización) evitamos que se muestre información
imposible (marcada en rojo anteriormente):
7
La consulta debe quedar así:
Es importante destacar que se han usado alias de tablas para identificar las
columnas ‘nombre’, que como vienen de la misma tabla, pero repetida en
el FROM, se las ha calificado con la letra que se escribe, en esta cláusula, a
continuación de la tabla. Esta forma de nombrar las columnas de una tabla,
en una posición determinada, se denomina alias de tabla y, como
recomendación, se usó la letra inicial del rol o del significado que tiene
cada repetición de la tabla SELECT, para este caso, se adoptó la ‘l’ para local
y la ‘v’ para visitante.
PK ID PK ID PK ID
9
También se pueden combinar las condiciones, lo que permite que se las
evalúe, simultáneamente, con los coordinadores AND y OR.
= igual
<> distinto de
< ALL es menor que todos los valores de una lista o sub consulta.
> ALL es mayor que todos los valores de una lista o sub consulta.
<= ALL permite detectar al menor de todos los valores de una lista o
sub consulta.
>= ALL permite detectar al mayor de todos los valores de una lista o
sub consulta.
< ANY es menor que algunos de los valores de una lista o sub
consulta.
> ANY es mayor que algunos de los valores de una lista o sub
consulta.
10
NOT IN no es igual que al menos uno de los valores de una lista o
sub consulta.
11
ALUMNOS ALUMNOS_X_CARRERAS CARRERAS
PK ID PK ID PK ID
CARRERAS COUNT(*)
SIS 2
SOF 3
ABO 3
Si se usa una función de grupo sin la cláusula GROUP BY, éstas se aplicarán
a todo el conjunto de filas seleccionadas. Se usan las funciones de grupo
también en la cláusula HAVING, para filtrar los grupos que no cumplen con
las condiciones. WHERE filtra grupos antes que se armen los grupos y
HAVING filtra filas una vez que se armaron los grupos.
Todas las funciones de grupo ignoran los valores nulls, esto es, si en la
columna ‘Apellido’ se va contar con COUNT(Apellidos) y tiene en todas las
filas valores null, esta función devolverá 0 (cero); si solo en algunas tuviera
nulls, contará todas las filas con valores distintos de null.
12
El asterisco en COUNT(*) le indica a la función que cuente todas las filas de
la o las tablas que están en el FROM. Según la definición de una tabla
relacional, ésta no puede tener una fila con dos valores null o fila nula.
EposibleLEGAJO MATERIA
anidar funciones de grupo, por NOTA
ejemplo, dada la tabla ‘Notas’:
a calcular el promedio de la nota más alta de cada materia, se puede hacer:
ABG67489 DER201 7
select avg(max(nota)) from notas group by id_materia;
ADM98654 ADM235 7
avg(max(nota))
7,5CPB67923 ADO123 8
RHU98342 DER435el agrupamiento interno
Esta consulta evalúa 9 (MAX(nota)) trayendo
PSI98462 ADM152 10
las notas más altas de cada materia, las agrupa nuevamente y, luego, les
CPB95642
calcula el promedio. ADM023 10
RHU98546 DER123 de cada materia (7,
Tomó la nota máxima 2 9, 10, 4) y las promedió
CPB87235
(30/4)=7,5. ADM023 4
Tomó la nota máxima de cada materia (7, 9, 10, 4) y las promedió (30/4) =
7,5.
13
las funciones y otros cálculos y formateos realizados con esta sentencia. Es
posible combinar varias columnas para ordenar y el orden de aparición de
estas columnas en la cláusula ORDER BY no es trivial, comenzará por la
primera columna que aparece luego de la palabra BY.
Así, si se usa DESC como indicador del sentido del ordenamiento, mostrará
de mayor a menor y, si es ASC, de menor a mayor. Esto es, en cada
columna.
donde:
FROM: especifica las tablas de las que se van a obtener filas. La cláusula
FROM es necesaria excepto cuando la lista de selección sólo contiene
constantes, variables y expresiones aritméticas (no nombres de columna).
14
INNER: especifica que se devuelvan todos los pares de filas
coincidentes. Descarta las filas no coincidentes de las dos tablas.
Éste es el valor predeterminado si no se especifica ningún tipo de
combinación.
LEFT: especifica que todas las filas de la tabla de la izquierda que no
cumplan la condición especificada se incluyan en el conjunto de
resultados, además de todas las filas que devuelva la combinación
interna. Las columnas de salida de la tabla de la izquierda se
establecen a NULL.
RIGHT: especifica que todas las filas de la tabla de la derecha que no
cumplan la condición especificada se incluyan en el conjunto de
resultados, además de las que devuelva la combinación interna. Las
columnas de salida de la tabla de la derecha se establecen a NULL.
FULL: si una fila de la tabla de la izquierda o de la derecha no
coincide con los criterios de selección, especifica que la fila se
incluya en el conjunto de resultados y las columnas de resultados
que corresponden a la otra tabla se establezcan como NULL. Se
trata de una adición a todas las filas que normalmente devuelve la
combinación interna.
WHERE: limita las filas devueltas en el conjunto de resultados mediante el
uso de predicados. No hay límite en el número de predicados que se
pueden incluir en una condición de búsqueda.
15
1.1.6- Funciones de Caracteres.
Las funciones de manejo de caracteres alfanuméricos aceptan argumentos
de tipo carácter y retornan caracteres o valores numéricos.
16
select lpad ('universidad',4,'x') from dual;
-- al ejecutarlo devolverá 'univ'
17
select trim (' Universidad ') from dual;
-- al ejecutarlo devolverá 'Universidad'
18
select translate ('UNIVERSIDAD','VUS','056') from dual;
-- al ejecutarlo devolverá 5NI0ER6IDAD.
19
mod(x,y): devuelve el resto de la división x/y.
20
select sign(120) from dual;
al ejecutarlo devolverá 1
21
-- al ejecutarlo devolverá "25/02/07" por ser el último día delmes.
22
Los operadores aritméticos "+" (más) y "-" (menos) pueden emplearse con
fechas.
select sysdate-3;
-- al ejecutarlo devolverá 3 días antes de la fecha actual.
23
1.2- Sentencia INSERT
La sentencia INSERT, es otra de la sentencias del DML, y en este caso nos
da la posibilidad de agregar nuevos registros a una tabla de la base de
datos, brindando conjuntamente la posibilidad de definir valores a todos a
cada uno de los campos de la misma.
PK ID PK ID_CLI PK ID PK ID
PK ID_DOM
APELLIDOS PK ID_TIP CALLE DESCRIPCION
NOMBRES NUMERO CODIGO_POSTAL
DNI_TIPO PISO ID_PRO
DNI DEPARTAMENTO
FECHA_NACIMIENTO ID_LOC
ESTADO_CIVIL
PROVINCIAS
TIPOS_DNI
DOMICILIOS_TIPOS
PK ID
PK ID
SOCIOS_PROFESIONES PK ID DESCRIPCION
DESCRIPCION ID_PAI
PK ID_SOC DESCRIPCION
PK ID_PRO
PK ID_SOC PK ID PK ID
PK ID_PEL
PROFESIONES NOMBRE DESCRIPCION
FECHAHORA
PK ID
DESCRIPCION
PK ID PK ID PK ID_SAL
PK ID_PEL
DESCRIPCION DESCRIPCION PK FECHAHORA
ID_TIP_SAL
ESTADO
24
insert into socios (id, apellidos, nombres, dni_tipo, dni, fecha_nacimiento,
estado_civil) values (secuencia_socios.nextval, ’LOPEZ’, ’JUAN’, 1,
23925838, ’26/09/1974’, ’SOLTERO’);
insert into socios (id, apellidos, nombres, estado_civil) values (234, ’LOPEZ’,
’JUAN’, ’SOLTERO’);
25
insert into socios (apellidos, nombres, estado_civil) values (’LOPEZ’, ’JUAN’,
’SOLTERO’);
insert into socios values (234, ’LOPEZ’, ’JUAN’, null, null, null, ’SOLTERO’);
insert into socios values (’LOPEZ’, ’JUAN MARIA’, null, null, null, ’SOLTERO’);
SOCIOS CLIENTES
PK ID PK ID
APELLIDOS APELLIDOS
NOMBRES NOMBRES
DNI_TIPO FECHA_NACIMIENTO
DNI ESTADO_CIVIL
FECHA_NACIMIENTO USUARIO
ESTADO_CIVIL
26
insert into socios values (‘LOPEZ’, ’JUAN’, ’DNI’, 23925838, 26/09/1974,
’SOLTERO’)
o
insert into socios (apellidos,nombres,dni) VALUES (‘LOPEZ’, ’JUAN’,
23925838)
PK ID PK ID_CLI PK ID PK ID
PK ID_DOM
APELLIDOS PK ID_TIP CALLE DESCRIPCION
NOMBRES NUMERO CODIGO_POSTAL
DNI_TIPO PISO ID_PRO
DNI DEPARTAMENTO
FECHA_NACIMIENTO ID_LOC
ESTADO_CIVIL
PROVINCIAS
TIPOS_DNI
DOMICILIOS_TIPOS
PK ID
PK ID
SOCIOS_PROFESIONES PK ID DESCRIPCION
DESCRIPCION ID_PAI
PK ID_SOC DESCRIPCION
PK ID_PRO
PK ID_SOC PK ID PK ID
PK ID_PEL
PROFESIONES NOMBRE DESCRIPCION
FECHAHORA
PK ID
DESCRIPCION
PK ID PK ID PK ID_SAL
PK ID_PEL
DESCRIPCION DESCRIPCION PK FECHAHORA
ID_TIP_SAL
ESTADO
27
- modificación de un campo de todos los registros en la tabla SOCIOS.
28
UPDATE: especifica la tabla en la que se modifican los registros.
WHERE: especifica los criterios que deben satisfacer los registros para
marcarlos para su modificación. Puede incluir tantas condiciones como
desee, si las conecta con el operador AND u OR. También puede utilizar el
operador NOT para invertir el valor de una expresión lógica.
PK ID PK ID_CLI PK ID PK ID
PK ID_DOM
APELLIDOS PK ID_TIP CALLE DESCRIPCION
NOMBRES NUMERO CODIGO_POSTAL
DNI_TIPO PISO ID_PRO
DNI DEPARTAMENTO
FECHA_NACIMIENTO ID_LOC
ESTADO_CIVIL
PROVINCIAS
TIPOS_DNI
DOMICILIOS_TIPOS
PK ID
PK ID
SOCIOS_PROFESIONES PK ID DESCRIPCION
DESCRIPCION ID_PAI
PK ID_SOC DESCRIPCION
PK ID_PRO
PK ID_SOC PK ID PK ID
PK ID_PEL
PROFESIONES NOMBRE DESCRIPCION
FECHAHORA
PK ID
DESCRIPCION
PK ID PK ID PK ID_SAL
PK ID_PEL
DESCRIPCION DESCRIPCION PK FECHAHORA
ID_TIP_SAL
ESTADO
29
- eliminación de varios registros en la tabla SOCIOS según algún criterio obtenido a
partir de una subconsulta.
WHERE: especifica los criterios que deben satisfacer los registros para marcarlos
para su eliminación. Puede incluir tantas condiciones como desee, si las conecta
con el operador AND u OR. También puede utilizar el operador NOT para invertir
el valor de una expresión lógica.
30
Bibliografía Lectura 1
Reinosa, E; Maldonado, C; Muñoz, E; Damiano, L; Abrutsky, M; (2012), “Base de
Datos”, Capítulo 3 – SQL (p. 112 a p. 127), Argentina, Alfaomega Grupo Editor
Argentino S.A.
31