Sentencias sql

52
Sistema Manejador De BD Lenguaje de Manipulación de Datos

Transcript of Sentencias sql

Page 1: Sentencias sql

Sistema Manejador

De BD

Lenguaje de

Manipulación de

Datos

Page 2: Sentencias sql

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.

Page 3: Sentencias sql

MySQL Query Browser es una utilidad para trabajar con la

base de datos MySQL. Es un editor de sentencias SQL visual,

que además incorpora herramientas para optimizar las

consultas.

Dispone también de un editor de tablas y registros, que

permite crear nuevas tablas o cambiar las existentes y la

posibilidad de cambiar los registros, es decir, los datos

almacenados en las tablas.

Page 4: Sentencias sql

Dispone de los siguientes componentes:

- Editor de sentencias SQL, que permite crear sentencias,

visual o manualmente, y moverse por el historial de

sentencias que se han ido generando.

- Visor de resultados, para que se puedan examinar los

resultados devueltos por las consultas y comparar los

resultados obtenidos entre varias sentencias SQL. Se pueden

tener activas varias consultas a la vez, seleccionando la que

queremos visualizar con una pestaña. Desde el visor de

resultados podemos editar también los campos, pero debe

estar activa la opción "Edit".

Page 5: Sentencias sql

- Navegador de objetos, en la parte lateral derecha, para

manejar las bases de datos, favoritos o historial. Se puede

visualizar aquí un esquema de las distintas bases de datos,

con sus distintas tablas y registros, que se utilizarán luego

para generar las sentencias visualmente.

- Visor de información, en la parte de abajo a la derecha, que

tiene una interesante referencia acerca de la base de datos

MySQL, con acceso a la sintaxis, librería de funciones, etc.

Page 6: Sentencias sql

Tablas de ejemplo

Autos

Page 7: Sentencias sql

Clientes

Page 8: Sentencias sql

INSERT

Sintaxis básica para insertar datos en

una tabla:

INSERT INTO nombre_tabla

(campo1, campo2, ...) VALUES

(valor1, 'cadena1', ...)

Page 9: Sentencias sql

Ejemplo:

INSERT INTO autos

(patente,marca,modelo,color,kilometraje)

VALUES ('ABC123', 'RENAULT',

'MEGANE TR100', 'NEGRO DIAMANTE',

78000)

Page 10: Sentencias sql

UPDATE

Para modificar los datos de una tabla se

usa UPDATE. Sintaxis:

UPDATE nombre_tabla

SET campo_1 = nuevo_valor

WHERE condición

También es posible UPDATE múltiples

campos al mismo tiempo. Sintaxis:

• UPDATE nombre_tabla

SET campo_1 = valor1, campo_ 2 =

valor2 WHERE condición

Page 11: Sentencias sql

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.

Page 12: Sentencias sql

DELETEPara borrar registros de una tabla se usa

DELETE FROM.Sintaxis:

DELETE FROM nombre_tabla

WHERE condición

Ejemplo:

DELETE FROM Autos WHERE

patente=‘ABC123’

Borra los registros de autos que tengan

“ABC123” en el campo patente.

Page 13: Sentencias sql

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

Page 14: Sentencias sql

Ejemplo:

SELECT marca FROM autos

Resultado:

Muestra sólo el campo “marca” de todos

los registros de autos

Page 15: Sentencias sql

Para seleccionar todos los registros

distintos de una tabla se usa DISTINCT.

Sintaxis:

SELECT DISTINCT nombre_campo

FROM nombre_tabla

Page 16: Sentencias sql

Ejemplo:

SELECT DISTINCT marca FROM Autos

Resultado:

Muestra sólo el campo “marca” de todos los

registros de “autos”, omitiendo los valores

repetidos.

Page 17: Sentencias sql

Para seleccionar condicionalmente los

datos de una tabla se usa la cláusula

WHERE:

Sintaxis:

SELECT nombre_campo FROM

nombre_tabla

WHERE condición

Page 18: Sentencias sql

Ejemplo:

SELECT telefono FROM Clientes WHERE

nombre=‘Juan’

Resultado:

Muestra el teléfono de todos los clientes cuyo

nombre sea Juan.

Page 19: Sentencias sql

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

Page 20: Sentencias sql

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.

Page 21: Sentencias sql

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_campo

FROM nombre_tabla

WHERE nombre_campo IN (valor1,

valor2, ...)

Page 22: Sentencias sql

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.

Page 23: Sentencias sql

BETWEEN permite la selección de un

rango de valores.

Sintaxis:

SELECT nombre_campo

FROM nombre_tabla

WHERE nombre_campo BETWEEN

valor1 AND valor2

Page 24: Sentencias sql

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.

Page 25: Sentencias sql

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_campo

FROM nombre_tabla

WHERE nombre_campo

LIKE patrón

Page 26: Sentencias sql

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'

Page 27: Sentencias sql

Ejemplo:

SELECT * FROM autos WHERE modelo

LIKE ‘GOL%’

Resultado:

Muestra todos los campos de los autos cuyo

modelo comience con GOL.

Page 28: Sentencias sql

Para enumerar el resultado en un orden

particular (ascendente y descendente)se

usa ORDER BY. Sintaxis:

SELECT nombre_campo

FROM nombre_tabla

WHERE 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

Page 29: Sentencias sql

Ejemplo:

SELECT * FROM autos WHEREmarca=‘Ford’ ORDER BY modelo ASC,

kilometraje DESC

Resultado:

Muestra todos los campos de los autos de marca Ford ordenados alfabéticamente por modelo, y luego por kilometraje en forma descendente.

Page 30: Sentencias sql

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

Page 31: Sentencias sql

Ejemplo:

SELECT AVG(kilometraje) FROM autos

Resultado:

Muestra el promedio de los kilometrajes

de todos los autos.

Page 32: Sentencias sql

Para agrupar por un campo específico se

utiliza GROUP BY.

Sintaxis:

SELECT nombre_campo1,

SUM(nombre_campo2)

FROM nombre_tabla

GROUP BY nombre_campo1

Page 33: Sentencias sql

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.

Page 34: Sentencias sql

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)

Page 35: Sentencias sql

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

Page 36: Sentencias sql

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

Page 37: Sentencias sql

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(*)”.

Page 38: Sentencias sql

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

Page 39: Sentencias sql

Ejemplo:

INSERT INTO clientes

SELECT * FROM proveedores

Inserta todos los registros de proveedores

en la tabla clientes (los campos de ambas

tablas deben coincidir).

Page 40: Sentencias sql

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).

Page 41: Sentencias sql

INNER JOIN

(Combinaciones internas)

Sintaxis:

SELECT campos FROM tabla1

JOIN tabla2

ON tabla1.campo1=tabla2.campo2

Page 42: Sentencias sql

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.

Page 43: Sentencias sql

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).

Page 44: Sentencias sql

LEFT JOIN

Sintaxis:

SELECT campos FROM tablaizquierda

LEFT JOIN tabladerecha ON

tablaizquierda.campo=

tabladerecha.campo

Page 45: Sentencias sql

Ejemplo:

SELECT * FROM autos LEFT JOIN clientes ON autos.patente =clientes.patente

Resultado:

Muestra todos los autos, incluso los que no tienen cliente

Page 46: Sentencias sql

RIGHT JOIN

Sintaxis:

SELECT campos FROM tablaizquierda

RIGHT JOIN tabladerecha ON

tablaizquierda.campo=

tabladerecha.campo

Page 47: Sentencias sql

Ejemplo:

SELECT * FROM autos

RIGHT JOIN clientes ON

autos.patente =clientes.patente

Resultado:

Muestra todos los clientes, incluso los que no

tienen auto

Page 48: Sentencias sql

FULL JOIN

Sintaxis:

SELECT campos FROM tablaizquierda FULL JOIN tabladerecha ON tablaizquierda.campo1 = tabladerecha.campo2

Page 49: Sentencias sql

Ejemplo:

SELECT * FROM autos AS A FULL JOINclientes AS C ON A.patente =C.patente

Resultado:

Muestra todos los clientes, incluso los que no tienen auto; y todos los autos, incluso los que no tienen cliente

Page 50: Sentencias sql

CROSS JOIN

(Producto cartesiano)

Sintaxis:

SELECT campos FROM tabla1 CROSS

JOIN tabla2

Page 51: Sentencias sql

Ejemplo:

SELECT * FROM platos CROSS JOIN

postres

Muestra todas las combinaciones posibles

(plato-postre).

Page 52: Sentencias sql

Bibliografía

•http://sql.1keydata.com/es/sql-insert-

into.php

•http://es.wikipedia.org/wiki/Celda_activa

•http://sql.manivesa.com/tutoriales+sql/len

guaje+sql/165.aspx

•Material de la materia gestión de datos