1. SQL DML
Data Manipulation Language
http://en.wikipedia.org/wiki/Data_Manipulation_Language
JOSÉ CUARTAS BASES DE DATOS
2. Definamos los términos:
• DML= Leguaje de manipulación de datos.
• Las sentecias DML permiten generar consultas para ordenar,
insertar, actulalizar, filtrar, agrupar y extraer datos de la base de
datos
Comandos DML Cláusulas DML
SELECT= Consultar registros FROM= Especifica tablas
INSERT = Carga registros WHERE= Especifica condiciones
UPDATE= Modifica valores GROUP BY= separación por grupo
DELETE= Eliminar registros HAVING = Condición sobre grupos
ORDER BY = Ordena registros
Operadores lógicos DML Operadores de comparación DML
AND = Es el “y” lógico BETWEEN= intervalos de valores
OR = Es el “o” lógico LIKE= Comparación de patrones
NOT = Negación lógica IN= especifica registros
< menor que, > mayor que, <> diferente, =
igual,<= menor i igual, >= mayor o igual
JOSÉ CUARTAS BASES DE DATOS
3. Como modificamos los datos en la base de datos:
INSERTAR
Proporciona una lista de valores de atributos para una nueva
tupla t que se han de insertar en una relación R.
La operación insertar puede violar las restricciones de integridad, por
ejemplo:
• El atributo no aparece en el dominio.
• El atributo clave primaria ya esta en el dominio.
• La clave primaria es nula = null.
• La clave externa o foránea(FK) se inserta en una tabla sin que
exista en la tabla donde es clave primaria.
JOSÉ CUARTAS BASES DE DATOS
4. Apliquemos SQL
Nuevos datos– INSERT
• Se puede insertar nuevas tuplas o filas en una tabla con la
instrucción INSERT INTO
• Ejemplos Crear la tabla productos basada en la siguiente estructura:
producto (id_producto: integer, nombre: text, precio: integer).
• Para adicionar una nueva fila (sintaxis principales)
– INSERT INTO producto VALUES (1, 'Moscato', 10500);
• Esta forma genera un error, si no se dan un valor por cada columna.
• Otra forma adicionar una nueva fila
– INSERT INTO producto (id_producto, nombre)
VALUES (2, 'Oporto');
• Esta forma como mínimo debe contener las columnas de clave primaria y
columnas únicas (UNIQUE) que no son auto incrementadas o las columnas
que no tienen un valor por defecto y a su vez no permitan nulos.
JOSÉ CUARTAS BASES DE DATOS
5. Como modificamos los datos en la base de datos:
MODIFICAR conocido como UPDATE
• Sirve para cambiar los valores de uno o mas atributos en una tupla
o tuplas de una relación.
• La operación modificar puede provocar violaciones de restricción,
cuando se modifica un valor de clave primaria o clave externa.
• Opciones para evitar la violación de integridad:
1. Rechazar la actualización.
2. Propagar la actualización, actualizando las tuplas que hagan referencia
a la tupla que se desea eliminar.
3. Modificar los valores del atributo de referencia que provoca la violación.
JOSÉ CUARTAS BASES DE DATOS
6. Apliquemos SQL
Actualiza los datos– UPDATE
• Se puede insertar nuevas tuplas o filas en una tabla con la instrucción
UPDATE
• Ejemplos Crear la tabla productos_temporales basada en la siguiente
estructura: productos_temporales (id_producto: integer, nombre: text,
precio: integer).
• Para actualizar una columna de una fila (sintaxis principales)
– UPDATE producto SET precio = 25450 WHERE nombre = 'Oporto';
• Recuerde sino se identifica las filas que se desean actualizar con la cláusula
WHERE ,ocurre una actualización de todas las filas de la tabla.
• Otra forma actualizar múltiples columnas de una o varias filas.
– UPDATE producto SET precio = 23000, nombre = „Vino Oporto„
WHERE nombre = 'Oporto';
• Las actualizaciones dependen de la condición dada para WHERE en
la clausula UPTADE.
JOSÉ CUARTAS BASES DE DATOS
7. Como modificamos los datos en la base de datos:
ELIMINACIÓN
• Sirve para eliminar todos los valores de los atributos de una Tupla o
de varias tuplas, en forma coloquial elimina una o varias filas segun
sea el caso.
• La operación eliminación puede provocar violaciones de integridad
referencial, si las claves foránea de otras filas de la base de datos
hacen referencia a la tupla que se ha de eliminar.
• Opciones para evitar la violación de integridad:
1. Rechazar la eliminación.
2. Propagar la eliminación eliminando las tuplas que hagan referencia a la
tupla que se desea eliminar.
3. Modificar los valores del atributo de referencia que provoca la violación.
JOSÉ CUARTAS BASES DE DATOS
8. Apliquemos SQL
Eliminación de filas– DELETE
• Se puede remover filas en una tabla con la instrucción DELETE
• Para eliminar filas en una tabla con una condición (sintaxis principales)
– DELETE FROM producto WHERE precio = 25450 ;
• Recuerde esto elimina todas las filas que cumplan la condición donde(WHERE)
el precio es igual a 25450.
• Si se desea eliminar todas las filas de una tabla pero dejar su
estructura se ejecuta el siguiente comando
– DELETE FROM producto
• Recuerde si se desea eliminar la tabla y su estructura se utiliza la
sentencia DROP.
– DROP TABLE productos;
JOSÉ CUARTAS BASES DE DATOS
9. Como consultamos los datos en la base de datos:
SELECT
• La instrucción SELECT se utiliza principalmente para la
recuperación de datos específicos de una Tabla o Vista.
• La estrategia es intentar construir las instrucciones SELECT de la
forma más sencilla posible, para recuperar los datos necesarios.
• Es la analogía al operador proyectar en el algebra relacional.
• Nomenclatura básica:
– SELECT nombre_de_columnas los nombres de las columnas que se
FROM tabla_a_la_que_se_consulta mostraran en el SELECT, son
separados por una coma.
Se colocan el nombre de la tabla o se
colocan los nombres de varias tablas
en caso de realizar una operación En SQL se utiliza el comodín * para
producto cruz listar todos los campos de una tabla.
JOSÉ CUARTAS BASES DE DATOS
10. Como modificamos los datos en la base de datos:
WHERE
• Especifica una condición que debe cumplirse para que los datos
sean devueltos por la consulta. Admite los operadores
lógicos AND y OR y operadores de comparación, esta .
• La cláusula WHERE es la cláusula que nos permite filtrar el
resultado de una sentencia SELECT.
• La claúsula WHERE es opcional, si no se emplea esta cláusula, la
consulta devolverá todas las filas de la tabla.
• Es la analogía al operador seleccionar en el algebra relacional
• Nomenclatura básica:
– SELECT nombre_de_columnas
FROM tabla_a_la_que_se_consulta
WHERE condición
JOSÉ CUARTAS BASES DE DATOS
11. Como modificamos los datos en la base de datos:
AS - Alias de Columna
• Este operador se utiliza para renombrar columnas o tablas.
– generalmente clarificar el significado de los datos en una
columna de salida, para asignar una cabecera a una columna.
– Se utiliza también para renombrar las tablas que se utilizan en
una consulta, generalmente se abrevia el nombre de la tabla.
JOSÉ CUARTAS BASES DE DATOS
12. Como modificamos los datos en la base de datos:
ORDER BY – Ordenación de datos
Esta cláusula permite ordenar el resultado de la consulta,
definiendo el orden en que se presentan las columnas que se
desean proyectar. Se pueden presentar en orden ascendente (por
defecto) y descendente (se coloca después de la columna a ordenar
la palabra clave DESC).
JOSÉ CUARTAS BASES DE DATOS
13. Como modificamos los datos en la base de datos:
JOINS O REUNIONES O COMBINACIONES
• http://es.wikipedia.org/wiki/Join
• Un JOIN es el resultado de una operación de combinación o
producto cruz realizada sobre dos o más tablas que cumplen una
condición generalmente.
– Se pueden realizar varios tipos de JOINs de tablas:
• Combinaciones internas los cuales se conocen como join o inner join .
• Externa completa (full outer), Externa por la izquierda (left outer), Externa
por la derecha (rigth outer).
• Cruzada (cross) conocida como producto cartesiano.
• Por esta operación JOIN podemos leer datos de diferentes tablas
en una única consulta. Lo que nos permitirá diseñar tablas
relacionadas entre ellas.
– Operador muy utilizado para obtener los registros de la combinación de
dos tablas, que en una tabla tiene una clave primaria igual a uno o
varios registros de otra tabla con la clave foránea.
JOSÉ CUARTAS BASES DE DATOS
14. Apliquemos SQL
Actualiza los datos– JOINs
• Se puede insertar nuevas tuplas o filas en una tabla con la instrucción
UPDATE
• Ejemplos Crear la tabla productos_temporales basada en la siguiente
estructura: productos_temporales (id_producto: integer, nombre: text,
precio: integer).
• Para actualizar una columna de una fila (sintaxis principales)
– UPDATE producto SET precio = 25450 WHERE nombre = 'Oporto';
• Recuerde sino se identifica las filas que se desean actualizar con la cláusula
WHERE ,ocurre una actualización de todas las filas de la tabla.
• Otra forma actualizar múltiples columnas de una o varias filas.
– UPDATE producto SET precio = 23000, nombre = „Vino Oporto„
WHERE nombre = 'Oporto';
• Las actualizaciones dependen de la condición dada para WHERE en
la clausula UPTADE.
JOSÉ CUARTAS BASES DE DATOS
15. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• El SQL es muy diferente a muchos de los lenguajes de
programación, ya que, el orden en el que se procesas las
sentencias no es el mismo en la que se escribe.
• La primera sentencia que se procesa es el FROM , mientras la
sentencia SELECT, la cual es la primera que aparece en la
instrucción , se procesa tiempo después.
• Cada paso del procesamiento genera tablas virtuales que son
entradas del siguiente paso (estas tablas internas no son accesibles
por aplicaciones o otras consultas), solo la tabla del paso final es la
que es retornado y puede ser utilizada para realizar otra operación.
JOSÉ CUARTAS BASES DE DATOS
16. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• Tablas TBLCONSUMIDOR y TBLORDENES
• Consulta:
SELECT C.IDCONSUMIDOR, COUNT(O.IDORDEN) AS NUMORDEN
FROM TBLCONSUMIDOR AS C
LEFT OUTER JOIN TBLORDENES AS O
ON C.IDCONSUMIDOR = O.IDCONSUMIDOR
WHERE C.CIUDAD = “MEDELLIN”
GROUP BY C.IDCONSUMIDOR
HAVING COUNT(O.IDORDEN) < 3
ORDER BY NUMORDEN
TBLCONSUMIDOR TBLORDENES
IDCONSUMIDOR NOMBRE CIUDAD IDORDEN IDCONSUMIDOR
AA JOSE MEDELLIN 1 AB
AB JUAN MEDELLIN 2 AB
AC DIANA MEDELLIN 3 AC
AD NATALIA BOGOTA 4 AC
5 AC
6 AD
7 NULL
JOSÉ CUARTAS BASES DE DATOS
17. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 1:
– FROM: Producto cartesiano (Reunión cruzada) de las primeras dos tablas en la
sentencia FROM y da como resultado una tabla virtual VT1
• PASO 2:
– ON: El filtro ON es aplicado a VT1. Solo las tuplas o filas para la cual la
condición <condicion_reunion> es verdadera son agregadas en VT2.
• PASO 3:
– OUTER (JOIN): Las filas de las tablas o tablas para la cual no hay coincidencias
son agregadas a la tabla VT2 como filas de reunión externas, generando VT3. Si
mas de dos tablas aparecen en la clausula FROM , el paso 1 al paso 3 es
aplicado repetidamente entre el resultado(tabla VT) del ultimo JOIN y la
siguiente tabla dentro la clausula FROM, hasta procesar todas las tablas.
JOSÉ CUARTAS BASES DE DATOS
18. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 4:
– WHERE: Es el filtro aplicado a VT3o la tabla virtual generada del paso anterior.
Solo las filas para la cual la condición en WHERE es verdadera son agregadas a
la tabla virtual VT4.
• PASO 5:
– GROUP BY: Las Filas de VT4 son organizadas en grupos basados en las listas
de las columnas especificadas en la sentencia GROUP BY generando la tabla
VT5.
• PASO 6:
– HAVING: El Filtro HAVING es aplicado a VT5solo los grupos para lo cual la
condición expresada en HAVING <condicion_having> es verdadera son
adicionada a la tabla VT6.
• PASO 7:
– SELECT: La lista de columnas es procesada generando la tabla VT7.
JOSÉ CUARTAS BASES DE DATOS
19. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 8:
– DISTINC: Las filas duplicadas son removidas de la relación VT7 generada en el
paso anterior generando VT8.
• PASO 9:
– ORDEN BY: Las Las Filas de VT4 son organizadas en grupos basados en las
listas de las columnas especificadas en la sentencia GROUP BY generando la
tabla VT5.
• PASO 10:
– TOP: El Filtro HAVING es aplicado a VT5solo los grupos para lo cual la
condición expresada en HAVING <condicion_having> es verdadera son
adicionada a la tabla VT6.
JOSÉ CUARTAS BASES DE DATOS
20. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
Aplicación
VT1 condicion
C.IDCONSUMIDOR C.NOMBRE C.CIUDAD O.IDORDEN
O.IDCONSUMIDO
R F/V
• Producto cruz o
AA JOSE MEDELLIN 1 AB F producto
AA JOSE MEDELLIN 2 AB F
AA JOSE MEDELLIN 3 AC F cartesiana entre
AA JOSE MEDELLIN 4 AC F
AA JOSE MEDELLIN 5 AC F las tablas y
AA JOSE MEDELLIN 6 AD F
AA JOSE MEDELLIN 7 NULL NULL columna de
AB
AB
JUAN
JUAN
MEDELLIN
MEDELLIN
1
2
AB
AB
V
V
evaluación de la
AB
AB
JUAN
JUAN
MEDELLIN
MEDELLIN
3
4
AC
AC
F
F
condición
AB JUAN MEDELLIN 5 AC F
AB JUAN MEDELLIN 6 AD F
AB JUAN MEDELLIN 7 NULL NULL
AC DIANA MEDELLIN 1 AB F
AC DIANA MEDELLIN 2 AB F
AC DIANA MEDELLIN 3 AC V
AC DIANA MEDELLIN 4 AC V
AC DIANA MEDELLIN 5 AC V
AC DIANA MEDELLIN 6 AD F
AC DIANA MEDELLIN 7 NULL NULL
AD NATALIA BOGOTA 1 AB F
AD NATALIA BOGOTA 2 AB F
AD NATALIA BOGOTA 3 AC F
AD NATALIA BOGOTA 4 AC F
AD NATALIA BOGOTA 5 AC F
AD NATALIA BOGOTA 6 AD V
AD NATALIA BOGOTA 7 NULL NULL
21. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 2: Tabla virtual después de aplicar el JOIN y la condición
VT2
O.IDCONSUMIDO
C.IDCONSUMIDOR C.NOMBRE C.CIUDAD O.IDORDEN R
AB JUAN MEDELLIN 1 AB
AB JUAN MEDELLIN 2 AB
AC DIANA MEDELLIN 3 AC
AC DIANA MEDELLIN 4 AC
AC DIANA MEDELLIN 5 AC
AD NATALIA BOGOTA 6 AD
JOSÉ CUARTAS BASES DE DATOS
22. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 3: aplicando la operación OUTER JOIN
VT3
O.IDCONSUMIDO
C.IDCONSUMIDOR C.NOMBRE C.CIUDAD O.IDORDEN R
AB JUAN MEDELLIN 1 AB
AB JUAN MEDELLIN 2 AB
AC DIANA MEDELLIN 3 AC
AC DIANA MEDELLIN 4 AC
AC DIANA MEDELLIN 5 AC
AA JOSE MEDELLIN NULL NULL
JOSÉ CUARTAS BASES DE DATOS
23. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 4: aplicando el operador de agregación GROUP BY
VT4
GRUPO C.IDCONSUMIDOR C.NOMBRE C.CIUDAD O.IDORDEN O.IDCONSUMIDOR
JUAN AB JUAN MEDELLIN 1 AB
AB JUAN MEDELLIN 2 AB
DIANA AC DIANA MEDELLIN 3 AC
AC DIANA MEDELLIN 4 AC
AC DIANA MEDELLIN 5 AC
JOSE AA JOSE MEDELLIN NULL NULL
JOSÉ CUARTAS BASES DE DATOS
24. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 5: aplicando el filtro HAVING
VT5
C.IDCONSUMIDO O.IDCONSUMIDO
GRUPO R C.NOMBRE C.CIUDAD O.IDORDEN R
JUAN AB JUAN MEDELLIN 1 AB
AB JUAN MEDELLIN 2 AB
JOSE AA JOSE MEDELLIN NULL NULL
JOSÉ CUARTAS BASES DE DATOS
25. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 6: Procesando sentencia SELECT
VT6
C.NOMBRE NUMORDEN
JUAN 2
JOSE 0
JOSÉ CUARTAS BASES DE DATOS
26. Apliquemos SQL
Descripción lógica- Procesamiento de una consulta
• PASO 7: Aplicando la sentencia ORDER BY e imprimiendo en
pantalla el resultado.
VT7
C.NOMBRE NUMORDEN
JOSE 0
JUAN 2
JOSÉ CUARTAS BASES DE DATOS