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