introducción lenguaje de manipulación de datos (data manipulation language) permite a los usuarios...
TRANSCRIPT
Introducción
• Lenguaje de manipulación de datos (Data Manipulation Language)
• Permite a los usuarios llevar a cabo las tareas de consulta o manipulación de la BD.
• El más popular es SQL.
Tablas de ejemploAutos
Clientes
INSERT
Sintaxis básica para insertar datos en una tabla:
INSERT INTO nombre_tabla (campo1, campo2, ...) VALUES (valor1, 'cadena1', ...)
Ejemplo:
INSERT INTO autos (patente,marca,modelo,color,kilometraje)
VALUES ('ABC123', 'RENAULT','MEGANE TR100', 'NEGRO DIAMANTE',78000)
UPDATEPara modificar los datos de una tabla se
usa UPDATE. Sintaxis:
UPDATE nombre_tablaSET campo_1 = nuevo_valorWHERE condición
También es posible UPDATE múltiples campos al mismo tiempo. Sintaxis:
• UPDATE nombre_tablaSET campo_1 = valor1, campo_ 2 = valor2 WHERE condición
Ejemplo:
UPDATE autos SET Marca=‘Ford’ WHERE Modelo=‘Focus’
Asigna la cadena “Ford” en el campo marca, a todos los registros que tengan “Focus” como valor en el campo Modelo.
DELETEPara borrar registros de una tabla se usa
DELETE FROM.Sintaxis:
DELETE FROM nombre_tablaWHERE condición
Ejemplo:
DELETE FROM Autos WHERE patente=‘ABC123’
Borra los registros de autos que tengan “ABC123” en el campo patente.
SELECT
Para seleccionar registros de una tabla se usa la cláusula SELECT. Sintaxis:
SELECT nombre_campo1, nombre_campo2 FROM nombre_tabla
El símbolo * (asterisco) permite seleccionar todos los campos de una tabla.Sintaxis:
SELECT * FROM nombre_tabla
Ejemplo:
SELECT marca FROM autos
Resultado:
Muestra sólo el campo “marca” de todos los registros de autos
Para seleccionar todos los registros distintos de una tabla se usa DISTINCT.
Sintaxis:
SELECT DISTINCT nombre_campoFROM nombre_tabla
Ejemplo:
SELECT DISTINCT marca FROM Autos
Resultado:
Muestra sólo el campo “marca” de todos los registros de “autos”, omitiendo los valores repetidos.
Para seleccionar condicionalmente los datos de una tabla se usa la cláusula WHERE:
Sintaxis:
SELECT nombre_campo FROM nombre_tablaWHERE condición
Ejemplo:
SELECT telefono FROM Clientes WHERE nombre=‘Juan’
Resultado:
Muestra el teléfono de todos los clientes cuyo nombre sea Juan.
La condición del WHERE puede ser una condición compuesta. Estas están formadas por múltiples condiciones simples conectadas por AND u OR.
Sintaxis:SELECT nombre_campo FROM
nombre_tablaWHERE condición simple AND/OR condición simple
Ejemplo:
SELECT patente FROM Autos WHERE modelo=‘Megane’ AND kilometraje>50
Resultado:
Muestra la patente de los autos cuyo modelo sea MEGANE y su kilometraje sea mayor que 50.
La cláusula WHERE compara sus campos comúnmente con valores únicos, pero también es posible comparar con un "conjunto" de valores. Esto es realizable a través del operador IN:
Sintaxis:
SELECT nombre_campoFROM nombre_tablaWHERE nombre_campo IN (valor1, valor2, ...)
Ejemplo:
SELECT kilometraje FROM autos WHERE marca in (‘Ford’, ‘Renault’, ‘Fiat’)
Resultado:
Muestra el kilometraje de los autos cuya marca sea Ford o Renault o Fiat.
BETWEEN permite la selección de un rango de valores.
Sintaxis:
SELECT nombre_campoFROM nombre_tablaWHERE nombre_campo BETWEEN valor1 AND valor2
Ejemplo:
SELECT * FROM autos WHERE kilometraje BETWEEN 10000 AND 20000
Resultado:
Muestra todos los campos de los autos cuyo kilometraje esté entre 10.000 y 20.000 km.
LIKE permite hacer una búsqueda basada en un patrón en vez de especificar exactamente lo que se desea (como en IN) o determinar un rango (como en BETWEEN). Sintaxis:
SELECT nombre_campoFROM nombre_tablaWHERE nombre_campo LIKE patrón
Patrón generalmente consiste en comodines.
• 'A_Z': Todas las líneas que comience con 'A', otro carácter y termine con 'Z'. Por ejemplo, 'ABZ' y 'A2Z'
• ‘F%':Todas las líneas que comienzan con 'F'. Por ejemplo, ‘Fiat' y ‘Ford'
• ‘%t‘: Todas las líneas que terminan con ‘t'. Por ejemplo, 'Renault', 'Fiat' y 'Peugeot'
• '%o%': Todas las líneas que contienen “o” en cualquier lado. Por ejemplo, 'Peugeot' y 'Ford'
Ejemplo:
SELECT * FROM autos WHERE modelo LIKE ‘GOL%’
Resultado:
Muestra todos los campos de los autos cuyo modelo comience con GOL.
Para enumerar el resultado en un orden particular (ascendente y descendente)se usa ORDER BY. Sintaxis:
SELECT nombre_campoFROM nombre_tablaWHERE condición ORDER BY nombre_campo ASC/DESC
Es posible ordenar por más de una columna. En este caso, la cláusula ORDER BY anterior se convierte en:
ORDER BY nombre_campo1 ASC/DESC, nombre_campo2 ASC/DESC
Ejemplo:SELECT * FROM autos WHERE
marca=‘Ford’ ORDER BY modelo ASC, kilometraje DESCResultado:
Muestra todos los campos de los autos de marca Ford ordenados alfabéticamente por modelo, y luego por kilometraje en forma descendente.
Es posible hacer cálculos matemáticos, para esto se utilizan las funciones:
- AVG (promedio) - COUNT (contar) - MAX (máximo) - MIN ( mínimo) - SUM (suma)La sintaxis para el uso de funciones es:SELECT tipo de función(nombre_campo)
FROM nombre_tabla
Ejemplo:
SELECT AVG(kilometraje) FROM autos
Resultado:
Muestra el promedio de los kilometrajes de todos los autos.
Para agrupar por un campo específico se utiliza GROUP BY.
Sintaxis:
SELECT nombre_campo1, SUM(nombre_campo2)FROM nombre_tablaGROUP BY nombre_campo1
Ejemplo:
SELECT marca, AVG(kilometraje) FROM autos GROUP BY marca
Resultado:
Muestra todas las marcas de autos con su promedio de kilometraje agrupado por marca.
Para limitar el resultado según alguna condición de función aritmética se usa HAVING.
Sintaxis:
SELECT nombre_campo1, SUM(nombre_campo2)FROM nombre_tablaGROUP BY nombre_campo1HAVING (condición de función aritmética)
Ejemplo:SELECT marca, AVG(kilometraje) FROM
autos GROUP BY marca HAVING AVG(kilometraje) < 50000
Resultado:
Muestra todas las marcas de autos con su promedio de kilometraje agrupado por marca, siempre y cuando el promedio de km sea menor a 50000
Hay dos tipos de alias que se utilizan con mayor frecuencia. Alias de columna y de tabla.
Alias de columna: Para la organización del resultado. Existen casos donde el título de la columna puede complicarse (especialmente si incluye operaciones aritméticas).
Alias de tabla: Se coloca un alias directamente luego del nombre de tabla en la cláusula FROM.
Sintaxis: SELECT alias_tabla.nombre1_columna as
alias_columnaFROM nombre_tabla as alias_tabla
Ejemplo:
SELECT COUNT(*) as Total de autos FROM autos
Resultado:
Muestra el total de autos. El nombre de la columna será “Total de Autos” en lugar de “COUNT(*)”.
Combinar sentencias
Para insertar filas múltiples en una tabla se usa la siguiente sintaxis:
INSERT INTO tabla1 (campo1, campo2, ...)SELECT campoA, campoB, ...FROM tabla2
Ejemplo:
INSERT INTO clientes
SELECT * FROM proveedores
Inserta todos los registros de proveedores en la tabla clientes (los campos de ambas tablas deben coincidir).
Trabajar con más de un tabla (JOIN)
Hay tres tipos de combinaciones:
1. Combinaciones internas (INNER JOIN),
2. Combinaciones externas (OUTER JOIN) y
3. Combinaciones cruzadas (CROSS JOIN).
INNER JOIN(Combinaciones internas)
Sintaxis:
SELECT campos FROM tabla1
JOIN tabla2
ON tabla1.campo1=tabla2.campo2
Ejemplo:
• SELECT * FROM clientes INNER JOIN autos ON clientes.patente=autos.patente
Resultado:
No muestra los clientes que no tienen auto, ni los autos que no tienen cliente.
OUTER JOIN(Combinaciones externas)
Existen tres tipos de combinaciones externas:
• Left outer join (o left join).
• Right outer join (o right join).
• Full outer join (o full join).
LEFT JOIN
Sintaxis:
SELECT campos FROM tablaizquierda LEFT JOIN tabladerecha ON tablaizquierda.campo= tabladerecha.campo
Ejemplo:SELECT * FROM autos LEFT JOIN clientes
ON autos.patente =clientes.patente Resultado:
Muestra todos los autos, incluso los que no tienen cliente
RIGHT JOIN
Sintaxis:
SELECT campos FROM tablaizquierda RIGHT JOIN tabladerecha ON tablaizquierda.campo= tabladerecha.campo
Ejemplo:
SELECT * FROM autos
RIGHT JOIN clientes ON
autos.patente =clientes.patente
Resultado:
Muestra todos los clientes, incluso los que no tienen auto
FULL JOIN
Sintaxis:
SELECT campos FROM tablaizquierda FULL JOIN tabladerecha ON tablaizquierda.campo1 = tabladerecha.campo2
Ejemplo:SELECT * FROM autos AS A FULL JOIN
clientes AS C ON A.patente =C.patenteResultado:
Muestra todos los clientes, incluso los que no tienen auto; y todos los autos, incluso los que no tienen cliente
CROSS JOIN (Producto cartesiano)
Sintaxis:
SELECT campos FROM tabla1 CROSS JOIN tabla2
Ejemplo:
SELECT * FROM platos CROSS JOIN postres
Muestra todas las combinaciones posibles (plato-postre).
Bibliografía
•http://sql.1keydata.com/es/sql-insert-into.php
•http://es.wikipedia.org/wiki/Celda_activa
•http://sql.manivesa.com/tutoriales+sql/lenguaje+sql/165.aspx
•Material de la materia gestión de datos