1 - Introduccion SQL
1 - Introduccion SQL
Introducción SQL
1. Introducción .................................................................................................................................... 2
2. Sintaxis ............................................................................................................................................ 3
3. SELECT ............................................................................................................................................. 4
4. DISTINCT .......................................................................................................................................... 5
5. WHERE ............................................................................................................................................. 6
6. AND & OR ........................................................................................................................................ 7
7. ORDER BY ........................................................................................................................................ 8
8. SELECT TOP ...................................................................................................................................... 9
9. LIKE ................................................................................................................................................ 10
10. IN ................................................................................................................................................. 11
11. BETWEEN ..................................................................................................................................... 12
12. ALIAS............................................................................................................................................ 13
13. JOIN ............................................................................................................................................. 15
14. INNER JOIN .................................................................................................................................. 17
15. LEFT JOIN ..................................................................................................................................... 18
16. RIGHT JOIN .................................................................................................................................. 20
17. FULL JOIN..................................................................................................................................... 21
18. UNION ......................................................................................................................................... 23
Página 1 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
1. Introducción
En un principio los programas accedían físicamente al disco para escribir los datos, algo que
implicaba que el programa tuviese que implementar toda la lógica de una base de datos para
permitir agregar, modificar o eliminar datos.
Con el tiempo se han desarrollado lo que se conoce como sistemas de bases de datos
relacionales, que permiten mantener entidades (Artículo, Ficha médica o Factura), sus
respectivas relaciones (Una ficha médica corresponde a un solo paciente) y sus atributos (Una
ficha médica contiene fecha de entrada, fecha de salida, síntomas… etc).
Estos sistemas poseen además una interfaz para acceder a ellos llamada SQL o Structured
Query Language (lenguaje de consultas estructurado) que permiten hacer peticiones de una
base de datos usando una notación muy similar a lenguaje natural, como muestra el siguiente
ejemplo:
Este código tendría como objetivo hacer una petición a la base de datos pacientes, buscar el
identificador 1 y devolver la fila (o filas) resultante de la petición.
Estos sistemas permiten mantener cierta integridad de los datos, y usando ciertas reglas se
pueden definir tablas y restricciones como muestra el siguiente ejemplo:
• SQL Server de Microsoft: Es la solución por excelencia del stack Microsoft. Existen al
menos una docena de ediciones diferentes dirigidas a un público específico, desde la
versión Express, gratuita y con limitaciones (1 GB de consumo de memoria y 4 GB de
capacidad) hasta la Datacenter, que permite el uso de 256 núcleos (poca cosa…) y
dirigida a un mercado empresarial.
Página 2 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
• MySQL: Anteriormente propiedad de Sun Microsystems y con doble licencia (libre para
proyectos compatibles con la licencia GNU GPL y privativa para el resto de los proyectos,
que implica la compra de una licencia), actualmente propiedad de Oracle, es la base de
datos más empleada por la comunidad OpenSource (+6.000.000 de instalaciones).
• PosgreSQL: Empleada en ámbito docente aunque no por ello menos potente que la
anterior, libre (licencia BSD) y mantenida por la comunidad de desarrolladores.
• Oracle: Considerado por muchos uno de los sistemas de bases de datos más complejos,
usado fundamentalmente en el mercado de servidores empresariales donde su
hegemonía ha sido casi total hasta hace poco, por la competencia del resto de sistemas
antes mencionados. Posee también una versión Express (gratuita).
2. Sintaxis
Tablas
Una Base de Datos generalmente contiene una o más tablas. Cada tabla es identificada por un
nombre (e.g. "Cliente" o "Pedido"). Las tablas contienen registros (filas) con datos.
Página 3 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
La tabla anterior contiene cinco registros (uno para cada cliente) y siete columnas (ClienteID,
NombreCliente, NombreContacto, Dirección, Ciudad, CodigoPostal y País).
Sentencias SQL
La mayor parte de las acciones que debe llevar a cabo en una base de datos se hacen con
sentencias SQL.
La siguiente sentencia SQL selecciona todos los registros de la tabla "Cliente":
Ejemplo
SELECT * FROM Cliente;
Punto y coma es la forma estándar para separar cada instrucción SQL en sistemas de bases de
datos que permiten que más de una sentencia de SQL que se debe ejecutar en la misma llamada
al servidor.
Comandos SQL
3. SELECT
La sentencia SELECT se utiliza para seleccionar los datos de una base de datos.
Página 4 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
4 Around the Horn Thomas Hardy 120 Hanover London 1651 Argentina
Sq.
Ejemplo SELECT
La siguiente sentencia SQL selecciona las columnas "NombreCliente" y las columnas "Ciudad" de
la tabla "Cliente":
Ejemplo
SELECT NombreCliente,Ciudad FROM Cliente;
Ejemplo SELECT *
La siguiente sentencia SQL selecciona todas las columnas de la tabla "Cliente":
Ejemplo
SELECT * FROM Cliente;
4. DISTINCT
La instrucción SELECT DISTINCT se utiliza para devolver (diferentes) sólo valores distintos.
En una tabla, una columna puede contener muchos valores duplicados; y a veces sólo desea una
lista de los diferentes valores (distintos).
La palabra clave DISTINCT se puede utilizar para devolver (diferentes) sólo valores distintos.
Página 5 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Ejemplo
SELECT DISTINCT Ciudad FROM Cliente;
5. WHERE
La cláusula WHERE se utiliza para filtrar registros.
La cláusula WHERE se utiliza para extraer sólo aquellos registros que cumplen un criterio
especificado.
Ejemplo
SELECT * FROM Cliente
WHERE Pais='Mexico';
Ejemplo
SELECT * FROM Cliente
WHERE ClienteID=1;
Página 6 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Operador Descripción
= Igual
<> Distinto. Nota: En algunas versiones de SQL este operador se puede escribir
como !=
6. AND & OR
Los operadores AND & OR se utilizan para filtrar registros en función de más de una condición.
Ejemplo
SELECT * FROM Cliente
WHERE Pais='Alemania'
AND Ciudad='Berlin';
Página 7 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Ejemplo Operador OR
La siguiente sentencia SQL selecciona todos los clientes de la ciudad "Berlin" OR "München", en
la tabla "Cliente":
Ejemplo
SELECT * FROM Cliente
WHERE Ciudad='Berlin'
OR Ciudad='München';
La siguiente sentencia SQL selecciona todos los clientes del país "Alemania" Y la ciudad debe ser
igual a "Berlin" OR "München", en la tabla "Cliente":
Ejemplo
SELECT * FROM Cliente
WHERE Pais='Alemania'
AND (Ciudad='Berlin' OR Ciudad='München');
7. ORDER BY
La palabra clave ORDER BY se utiliza para ordenar el conjunto de resultados (result-set).
Ordena los registros en orden ascendente por defecto. Para ordenar los registros en orden
descendente, se puede utilizar la palabra clave DESC.
Ejemplo ORDER BY
La siguiente sentencia SQL selecciona todos los clientes de la tabla "Cliente", ordenados por la
columna "País":
Ejemplo
SELECT * FROM Cliente
ORDER BY Pais;
Página 8 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Ejemplo
SELECT * FROM Cliente
ORDER BY Pais DESC;
Ejemplo
SELECT * FROM Cliente
ORDER BY Pais,NombreCliente;
8. SELECT TOP
La cláusula SELECT TOP se utiliza para especificar el número de registros para volver.
Puede ser muy útil en tablas grandes con miles de registros. La devolución de un gran número
de registros puede tener un impacto en el rendimiento.
Nota: No todos los sistemas de bases de datos compatibles con la cláusula SELECT TOP.
Sintaxis MySQL
SELECT nombre_columna(s)
FROM nombre_tabla
LIMIT numero;
Ejemplo
SELECT *
FROM Persona
LIMIT 5;
Página 9 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Sintaxis Oracle
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE ROWNUM <= numero;
Ejemplo
SELECT *
FROM Persona
WHERE ROWNUM <=5;
Ejemplo
SELECT TOP 2 * FROM Cliente;
Ejemplo
SELECT TOP 50 PERCENT * FROM Cliente;
9. LIKE
El operador LIKE se utiliza en una cláusula WHERE para buscar un patrón específico en una
columna.
La siguiente sentencia SQL selecciona todos los clientes de una ciudad empezando por la letra
"s":
Ejemplo
SELECT * FROM Cliente
WHERE Ciudad LIKE 's%';
Página 10 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Consejo: El signo "%" se usa para definir comodines (letras faltantes), tanto antes como
después de que el patrón. Usted aprenderá más acerca de los comodines en el próximo capítulo.
La siguiente sentencia SQL selecciona todos los clientes con una ciudad que termina con la letra
"s":
Ejemplo
SELECT * FROM Cliente
WHERE Ciudad LIKE '%s';
La siguiente sentencia SQL selecciona todos los clientes con un país que contiene el patrón
"pais":
Ejemplo
SELECT * FROM Cliente
WHERE Pais LIKE '%pais%';
El uso de la palabra clave NOT permite seleccionar los registros que no coinciden con el patrón.
La siguiente sentencia SQL selecciona todos los clientes con un país que no contiene el patrón
"pais":
Ejemplo
SELECT * FROM Cliente
WHERE Ciudad NOT LIKE '%pais%';
10. IN
El operador IN le permite especificar varios valores en una cláusula WHERE.
Sintaxis SQL IN
SELECT nombre_columna(s)
FROM nombre_tabla
WHERE nombre_columna IN (valor1,valor2,...);
Ejemplo Operador IN
La siguiente sentencia SQL selecciona todos los clientes con una Ciudad de "Paris" o "Londres":
Ejemplo
SELECT * FROM Cliente
WHERE Ciudad IN ('Paris','Londres');
Página 11 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
11. BETWEEN
El operador BETWEEN selecciona valores dentro de un rango. Los valores pueden ser números,
texto o fechas.
1 Chais 1 1 10 boxes x 20 18
bags
2 Chang 1 1 24 - 12 oz 19
bottles
Ejemplo
SELECT * FROM Producto
WHERE Precio BETWEEN 10 AND 20;
Ejemplo
SELECT * FROM Producto
WHERE Precio NOT BETWEEN 10 AND 20;
Página 12 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Ejemplo
SELECT * FROM Producto
WHERE (Precio BETWEEN 10 AND 20)
AND NOT CategoriaID IN (1,2,3);
Ejemplo
SELECT * FROM Producto
WHERE NombreProducto BETWEEN 'C' AND 'M';
Ejemplo
SELECT * FROM Producto
WHERE NombreProducto NOT BETWEEN 'C' AND 'M';
12. ALIAS
Los alias SQL se utilizan para cambiar el nombre temporal de una tabla o un encabezado de
columna.
Los alias de SQL se utilizan para dar a una tabla de base de datos, o a una columna de una
tabla, un nombre temporal.
Básicamente los alias se crean para que los nombres de columna sean más legibles.
Página 13 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
10354 58 8 2014-11-14 3
10355 4 6 2014-11-15 1
10356 86 6 2014-11-18 2
Ejemplo
SELECT NombreCliente AS Cliente, NombreContacto AS [Persona Contacto]
FROM Cliente;
Ejemplo
SELECT NombreCliente, Direccion+', '+Ciudad+', '+CodigoPostal+', '+Pais AS
Direccion
FROM Cliente;
Página 14 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Ejemplo
SELECT o.PedidoID, o.FechaPedido, c.NombreCliente
FROM Cliente AS c, Pedido AS o
WHERE c.NombreCliente="Around the Horn" AND c.ClienteID=o.ClienteID;
Ejemplo
SELECT Pedido.PedidoID, Pedido.FechaPedido, Cliente.NombreCliente
FROM Cliente, Pedido
WHERE Cliente.NombreCliente="Around the Horn" AND
Cliente.ClienteID=Pedido.ClienteID;
13. JOIN
Una cláusula SQL JOIN utiliza para combinar filas a partir de dos o más tablas, basándose en un
campo común entre ellas.
El tipo más común de unión es: SQL INNER JOIN. Un SQL INNER JOIN devuelve todas las filas
de varias tablas donde se cumpla la condición de unión.
10308 2 2014-09-18
10309 37 2014-09-19
10310 77 2014-09-20
Página 15 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Observe que la columna "ClienteID" de la tabla "Pedido" se refiere al cliente en la tabla "Cliente".
La relación entre las dos tablas anteriores es la columna "ClienteID".
Entonces, si nos encontramos con la siguiente instrucción SQL (que contiene un INNER JOIN):
Ejemplo
SELECT Pedido.PedidoID, Cliente.NombreCliente, Pedido.FechaPedido
FROM Pedido
INNER JOIN Cliente
ON Pedido.ClienteID=Cliente.ClienteID;
Antes de continuar con los ejemplos, haremos una lista de los tipos de las diferentes uniones
SQL que puede utilizar:
• INNER JOIN: Devuelve todas las filas cuando hay por lo menos un matcheo en ambas
tablas.
• LEFT JOIN: Devuelve todas las filas de la tabla izquierda y las filas coincidentes de la
tabla de la derecha.
• RIGHT JOIN: Devuelve todas las filas de la tabla derecha, y las filas coincidentes de la
tabla izquierda.
• FULL JOIN: Devuelve todas las filas cuando hay un matcheo en una de las tablas.
Página 16 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
o:
SELECT nombre_columna(s)
FROM tabla1
JOIN tabla2
ON tabla1.nombre_columna=tabla2.nombre_columna;
Página 17 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
10308 2 7 2014-09-18 3
10309 37 3 2014-09-19 1
10310 77 8 2014-09-20 2
Ejemplo
SELECT Cliente.NombreCliente, Pedido.PedidoID
FROM Cliente
INNER JOIN Pedido
ON Cliente.ClienteID=Pedido.ClienteID
ORDER BY Cliente.NombreCliente;
Nota: La palabra clave INNER JOIN selecciona todas las filas de ambas tablas siempre que haya
una coincidencia entre las columnas. Si hay filas en la tabla "Cliente" que no tienen coincidencias
en "Pedido", no se listarán estos clientes.
o:
SELECT nombre_columna(s)
FROM tabla1
LEFT OUTER JOIN tabla2
ON tabla1.nombre_columna=tabla2.nombre_columna;
Nota: En algunas bases de datos el LEFT JOIN se llama LEFT OUTER JOIN.
Página 18 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
10308 2 7 2014-09-18 3
10309 37 3 2014-09-19 1
10310 77 8 2014-09-20 2
Ejemplo
SELECT Cliente.NombreCliente, Pedido.PedidoID
FROM Cliente
LEFT JOIN Pedido
ON Cliente.ClienteID=Pedido.ClienteID
ORDER BY Cliente.NombreCliente;
Nota: El LEFT JOIN devuelve la palabra clave todas las filas de la tabla izquierda (Cliente),
incluso si no hay coincidencias en la tabla derecha (Pedido).
Página 19 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
o:
SELECT nombre_columna(s)
FROM tabla1
RIGHT OUTER JOIN tabla2
ON tabla1.nombre_columna=tabla2.nombre_columna;
Nota: En algunas bases de datos RIGHT JOIN se llama RIGHT OUTER JOIN.
10308 2 7 2014-09-18 3
10309 37 3 2014-09-19 1
10310 77 8 2014-09-20 2
Página 20 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
The following SQL statement will return all employees, and any orders they have placed:
Ejemplo
SELECT Pedido.PedidoID, Empleado.Nombre
FROM Pedido
RIGHT JOIN Empleado
ON Pedido.EmpleadoID=Empleado.EmpleadoID
ORDER BY Pedido.PedidoID;
Nota: La palabra clave RIGHT JOIN devuelve todas las filas de la tabla derecha (Empleado),
incluso si no hay coincidencias en la tabla izquierda (Pedido).
La palabra clave FULL OUTER JOIN combina el resultado tanto izquierdo como derecho.
Página 21 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
10308 2 7 2014-09-18 3
10309 37 3 2014-09-19 1
10310 77 8 2014-09-20 2
La siguiente sentencia SQL selecciona todos los clientes, y todos los pedidos:
NombreCliente PedidoID
Alfreds Futterkiste
10382
10351
Página 22 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Nota: La palabra clave FULL OUTER JOIN devuelve todas las filas de la tabla izquierda (Cliente),
y todas las filas de la tabla derecha (Pedido). Si hay filas de "Cliente" que no tienen
coincidencias en "Pedido", o si hay filas en "Pedido" que no tienen coincidencias en "Cliente", las
filas se listan también.
18. UNION
El operador UNION de SQL combina el resultado de dos o más instrucciones SELECT.
El operador UNION se usa para combinar el conjunto de resultados de dos o más instrucciones
SELECT.
Observe que cada instrucción SELECT dentro de la Unión debe tener el mismo número de
columnas. Las columnas deben tener tipos de datos similares. También, las columnas de cada
instrucción SELECT deben estar en el mismo orden.
Nota: El operador UNION selecciona sólo valores distintos de forma predeterminada. Para
permitir valores duplicados, utilice la palabra clave ALL con UNION.
Nota: Los nombres de columna del conjunto de resultados de una UNION suelen ser iguales a
los nombres de columna en la primera instrucción SELECT de la UNION.
Página 23 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
2 New Orleans Cajun Shelley Burke P.O. Box New 70117 USA
Delights 78934 Orleans
Ejemplo
SELECT Ciudad FROM Cliente
UNION
SELECT Ciudad FROM Proveedor
ORDER BY Ciudad;
Nota: UNION no se puede utilizar para enumerar TODAS las ciudades de las dos tablas. Si
varios clientes y proveedores comparten la misma ciudad, cada ciudad sólo se mostrará una vez.
UNION selecciona sólo valores distintos. Utilice UNION ALL para seleccionar también los valores
duplicados.
Ejemplo
SELECT Ciudad FROM Cliente
UNION ALL
SELECT Ciudad FROM Proveedor
ORDER BY Ciudad;
Página 24 de 25
6to Año - Electrónica Introducción SQL Ing. Juan Manuel Soto
Ejemplo
SELECT Ciudad, Pais FROM Cliente
WHERE Pais='Alemania'
UNION ALL
SELECT Ciudad, Pais FROM Proveedor
WHERE Pais='Alemania'
ORDER BY Ciudad;
Página 25 de 25