2. SQL –
Introducción
Structured Query Language (Lenguaje de
Consulta Estructurado)
Es el lenguaje más usado para bases de datos
relacionales.
Lenguaje declarativo de alto nivel.
Desarrollado por IBM (1974-1977).
Se convirtió en un standard definido por :
ANSI (American National Standards Institute) e
ISO (International Standards Organization)
C. Román 2
3. SQL -
Introducción
Las Sentencias del SQL se dividen en:
Sentencias DDL (Data Definition Language):
Permiten crear/modificar/borrar estructuras de
datos.
Sentencias DML (Data Manipulation
Languaje): para manipular datos
También provee sentencias para:
Definir permisos (control de acceso de usuarios)
Manejo de transacciones
Otros
C. Román 3
5. Tipos de datos
SQLANSI/ISO
Integer: Números enteros.
Float: Números reales, en coma flotante.
Char: Cadenas de texto de longitud fija.
Varchar: Cadena de texto de longitud variable.
Date: fecha que contiene el año (de cuatro
cifras), el mes y el día.
Time: La hora del día en horas, minutos y
segundos (el valor predeterminado es 0).
Datetime: Combinación de Date yTime.
C. Román 5
7. SELECT
Recupera datos (filas, columnas) de la base de
datos y los devuelve en forma de resultados de
la consulta, su sintaxis es:
SELECT [ALL/DISTINCT] lista_select
FROM tabla [alias tabla] [,...]
[WHERE condicion]
[GROUP BY lista_columna]
[HAVING condicion]
[ORDER BY nombre_columna [ASC/DESC] [,...]
C. Román 7
8. SELECT
FROM
La cláusula SELECT lista los datos a recuperar.
La cláusula FROM lista las tablas que contienen
los datos a recuperar.
Ejemplo:
-- Lista los códigos y nombres de la tabla
empleado
SELECT empCod, empNombre
FROM empleado
C. Román 8
9. Columnas
calculadas
Para calcular columnas se definen expresiones
aritméticas, que incluyan: sumas, restas,
multiplicaciones, divisiones, paréntesis.
Ejemplo:
--Calcula horas trabajadas * pago por hora
SELECT empApPat, empHorasTrabajo,
(empHorasTrabajo*empPagoHora)
FROM empleado
C. Román 9
10. SELECT *
•Se utiliza el * para acceder a todas
las columnas.
• Ejemplo:
-- Lista todos los datos de empleado
SELECT *
FROM empleado
C. Román 10
11. DISTINCT
•DISTINCT se utiliza para eliminar filas
duplicadas de los resultados de la consulta.
• Ejemplo:
-- Lista las zonas de empleados, sin incluir zonas
repetidas
SELECT DISTINCT empZona
FROM empleado
C. Román 11
12. WHERE
La cláusula WHERE indica que se consideren
solo las filas que cumplen con una condición de
búsqueda.
Ejemplo:
-- Lista los datos de empleados de la Sucursal 1
SELECT *
FROM empleado
WHERE empSucursal=1
C. Román 12
13. WHERE
Operadores de
comparación
Con la cláusula WHERE se utilizan operadores
de comparación que comparan los valores de
dos expresiones.
Los operadores son = , <, >, <= , >=, <>
(diferente)
También se usan AND (Y), OR (O), NOT (NO)
para condiciones de búsqueda compuestas.
Ejemplos:
-- Lista los datos de empleados con un
descuento mayor al 10% del sueldo
SELECT *
FROM empleado
WHERE empDescuento>(empSueldo* 0.10)
C. Román 13
14. WHERE
Operadores de
comparación
Ejemplos:
-- Lista los datos de empleados contratados antes
del 10/1/2017
SELECT *
FROM empleado
WHERE empContrato< ‘10/1/2017’
-- Lista los datos de empleados con el apellido Perez
y que tengan mas de 5 años de antiguedad
SELECT *
FROM empleado
WHERE empApPaterno=‘Perez’AND
empAntiguedad>5
C. Román 14
15. BETWEEN
Comprueba si un valor de datos se encuentra
entre dos valores especificados.
Ejemplo:
--Lista los datos de empleados con un sueldo
entre 4000 y 7000
SELECT *
FROM empleado
WHERE empSalario BETWEEN 4000 AND 7000
C. Román 15
16. IN
Comprueba si un valor de datos se encuentra
entre los valores de un conjunto.
Ejemplo:
--Lista los datos de empleados de las sucursales
1, 2 y 5
SELECT *
FROM empleado
WHERE empSucursal IN (1, 2, 5)
C. Román 16
17. LIKE
Comprueba si una columna de texto se
corresponde con un cierto texto en particular.
Se utilizan los caracteres comodines:
% para la correspondencia con cualquier secuencia
de cero o más caracteres.
_ para la correspondencia con un carácter.
Ejemplo:
--Lista los datos de empleados cuyo apellido
comience con Pe
SELECT *
FROM empleado
WHERE empApPaterno LIKE ‘Pe%’
C. Román 17
18. IS NULL
IS NOT NULL
La prueba de valor nulo IS NULL verifica que se
tenga el valor nulo (NULL).
La prueba IS NOT NULL verifica que no se
tenga el valor nulo.
Ejemplo:
--Lista los datos de empleados que no tienen
teléfonos registrados
SELECT *
FROM empleado
WHERE empTelefono IS NULL
C. Román 18
19. Condiciones de
búsqueda
compuestas
Se pueden combinar condiciones de
búsqueda simple para formar otras más
complejas, utilizando OR, AND, NOT.
OR se utiliza para combinar condiciones de
búsqueda cuando por lo menos una deba ser
verdadera.
AND se utiliza para combinar condiciones de
búsqueda cuando todas deban ser
verdaderas.
NOT se utiliza cuando la condición de
búsqueda deba ser falsa.
C. Román 19
20. Condiciones de
búsqueda
compuestas
Se utilizan paréntesis para agrupar los criterios
de búsqueda.
Ejemplo:
SELECT *
FROM ventas
WHERE (nroOficina IN (100,102,105))
OR (nombreDirector IS NULL AND salario<8000)
C. Román 20
21. CláusulaORDER
BY
Ordena los resultados de una consulta por una
o varias columnas, para varias columnas la
primera es la clave de ordenación mayor, y las
siguientes serán de ordenación menor.
Por defecto la ordenación es ascendente, para
la ordenación descendente se utiliza la cláusula
DESC.
Ejemplo
SELECT *
FROM ventas
ORDER BY departamento, ciudad DESC
C. Román 21
22. Consultas con
predicado
ALL Devuelve todos los campos de la tabla.
TOP Devuelve un determinado número de
registros de la tabla.
DISTINCT Omite los registros cuyos campos
seleccionados coincidan totalmente.
DISTINCTROW Omite los registros
duplicados en la totalidad del registro y no
sólo en los campos seleccionados.
Ejemplo
SELECTTOP 10 *
FROM ventas
C. Román 22
23. Alias
Permite asignar un nombre a alguna columna
determinada del resultado de una consulta.
Se utiliza la palabra reservada AS.
Ejemplo
SELECT nomVen AS nombreVendedor
FROM ventas
C. Román 23
24. Consultas
sumarias
Se pueden realizar cálculos de datos mediante
las funciones de columna:
SUM() calcula la suma
AVG() calcula el promedio
MIN() calcula el mínimo
MAX() calcula el máximo
COUNT() cuenta el número de valores
COUNT(*) cuenta las filas de resultados
C. Román 24
25. Función SUM
Devuelve la suma del conjunto de valores
contenido en un campo específico de una
consulta. Su sintaxis es:
SELECT SUM (EXPR) FROMTABLA
Ejemplo
SELECT SUM(importeVenta)
FROM ventas
C. Román 25
26. AVG
Calcula el promedio (media aritmética) de un
conjunto de valores contenido en un campo
especificado de una consulta. Su sintaxis es la
siguiente:
SELECT AVG(EXPR) FROMTABLA
Ejemplo
SELECT AVG(importeVenta)
FROM ventas
C. Román 26
27. MIN, MAX
Devuelven el mínimo o el máximo de un
conjunto de valores CONTENIDO en un campo
especifico de una consulta. Su sintaxis es la
siguiente:
SELECT MIN(EXPR) FROMTABLA
SELECT MAX(EXPR) FROMTABLA
Ejemplo
SELECT MAX(importeVenta),
MIN(importeVenta)
FROM ventas
C. Román 27
28. COUNT
Calcula el número de registros devueltos por
una consulta. Su sintaxis es la siguiente:
SELECT COUNT(EXPR) FROMTABLA
Ejemplo
SELECT COUNT(importeVenta)
FROM ventas
WHERE importeVenta>10000
C. Román 28
29. COUNT(*)
Cuenta las filas resultantes de una consulta.
Ejemplo
SELECT COUNT(*)
FROM ventas
WHERE importeVenta>10000
C. Román 29
30. CláusulaGROUP
BY
Agrupa los registros con valores
idénticos, en la lista de campos
especificados, en un único registro.
Su sintaxis es la siguiente:
SELECT campos
FROM tabla
WHERE criterio
GROUP BY campos del grupo
C. Román 30
32. Cláusula
HAVING
Una vez que los registros se han
agrupado utilizando GROUP BY,
HAVING determina cuáles de ellos se
van a mostrar. Su sintaxis es la
siguiente:
SELECT campos
FROM tabla
WHERE criterio
GROUP BY campos del grupo
HAVING condición
C. Román 32
34. UNION
Combina los resultados de
dos o mas consultas en una
tabla de resultados, en la
que se tendrán las tuplas
resultantes de las consultas
(una o ambas).
Para aplicar la unión ambas
tablas deben contener el
mismo número de
columnas. Los tipos de
datos en las columnas
correspondientes deben
coincidir en ambas tablas.
Las tablas no pueden estar
ordenadas con ORDER BY,
pero si el resultado.
C. Román 34
36. INTERSECT
Combina los resultados de
dos o mas consultas en una
tabla de resultados, en la
que se tendrán las tuplas
que coincidan en ambas
consultas.
Para aplicar la intersección
ambas tablas deben
contener el mismo número
de columnas. Los tipos de
datos en las columnas
correspondientes deben
coincidir en ambas tablas.
Las tablas no pueden estar
ordenadas con ORDER BY,
pero si el resultado.
C. Román 36
37. EXCEPT
Combina los resultados de
dos o mas consultas en una
tabla de resultados, en la
que se tendrán las tuplas
resultantes de una consulta
que no aparezcan en la
otra consulta.
Para aplicar except ambas
tablas deben contener el
mismo número de
columnas. Los tipos de
datos en las columnas
correspondientes deben
coincidir en ambas tablas.
Las tablas no pueden estar
ordenadas con ORDER BY,
pero si el resultado.
C. Román 37
39. Reunión
(combinación)
interna
INNER JOIN
La cláusula INNER combina registros
de dos tablas siempre que haya
concordancia de valores en un
campo común. Su sintaxis es la
siguiente:
SELECT campos
FROM tabla1
INNER JOIN tabla2
ON tabla1.campo1 op_comp tabla2.campo2
C. Román 39
40. Reunión interna
de varias tablas
Se debe especificar una condición de reunión
para cada par de tablas.
Ejemplo
SELECT ventas.monto, ventas.ciudad, cliente.
nombre, vendedor. nombre
FROM ventas INNER JOIN cliente
ON ventas.idVendedor=cliente.idVendedor
INNER JOIN vendedor
ON cliente.idVendedor=vendedor.idVendedor
WHERE ventas.ciudad=‘La Paz’
C. Román 40
41. Reunión externa
izquierda
LEFTJOIN
Operación de reunión que conecta todas las
relaciones de la tabla izquierda con los datos de
la tabla derecha.
Ejemplo.
SELECT codProd, codVend, nombreVend
FROM vendedor LEFT JOIN producto
ON vendedor.codVend=producto.codVend
C. Román 41
42. Reunión externa
derecha
RIGHT JOIN
Operación de reunión que conecta todas las
relaciones de la tabla derecha con los datos de
la tabla izquierda.
Ejemplo.
SELECT codProd, codVend, nombreVend
FROM vendedor LEFT JOIN producto
ON vendedor.codVend=producto.codVend
C. Román 42