Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios...

Post on 03-Jan-2015

5 views 1 download

Transcript of Introducción Lenguaje de manipulación de datos (Data Manipulation Language) Permite a los usuarios...

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