Sentencias sql

Post on 09-Jul-2015

359 views 0 download

Transcript of Sentencias sql

Sistema Manejador

De BD

Lenguaje de

Manipulación de

Datos

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.

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.

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

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

Tablas de ejemplo

Autos

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)

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

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_tabla

WHERE 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_campo

FROM 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_tabla

WHERE 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_campo

FROM nombre_tabla

WHERE 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_campo

FROM nombre_tabla

WHERE 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_campo

FROM nombre_tabla

WHERE 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_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

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.

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_tabla

GROUP 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 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

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/len

guaje+sql/165.aspx

•Material de la materia gestión de datos