SQL Parte 1
SQL Parte 1
Estructurado SQL
Parte 1
Structured Query Language (Lenguaje de
Consulta Estructurado)
Es el lenguaje más usado para bases de datos
relacionales.
SQL –
Lenguaje declarativo de alto nivel.
Introducción
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
Las Sentencias del SQL se dividen en:
Sentencias DDL (Data Definition Language):
Permiten crear/modificar/borrar estructuras de
datos.
Sentencias DML (Data Manipulation
SQL - Languaje): para manipular datos
Introducción También provee sentencias para:
Definir permisos (control de acceso de usuarios)
Manejo de transacciones
Otros
C. Román 3
Términos a utilizar
tabla → relación
SQL -
Introducción fila → tupla
columna → atributo
C. Román 4
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.
Tipos de datos Date: fecha que contiene el año (de cuatro
SQL ANSI/ISO 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 y Time.
C. Román 5
Sentencias DML
C. Román 6
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] [,...]
SELECT [WHERE condicion]
[GROUP BY lista_columna]
[HAVING condicion]
[ORDER BY nombre_columna [ASC/DESC] [,...]
C. Román 7
La cláusula SELECT lista los datos a recuperar.
La cláusula FROM lista las tablas que contienen
los datos a recuperar.
Ejemplo:
SELECT
FROM -- Lista los códigos y nombres de la tabla
empleado
SELECT empCod, empNombre
FROM empleado
C. Román 8
Para calcular columnas se definen expresiones
aritméticas, que incluyan: sumas, restas,
multiplicaciones, divisiones, paréntesis.
Columnas Ejemplo:
calculadas --Calcula horas trabajadas * pago por hora
SELECT empApPat, empHorasTrabajo,
(empHorasTrabajo*empPagoHora)
FROM empleado
C. Román 9
•Se utiliza el * para acceder a todas
las columnas.
• Ejemplo:
SELECT *
-- Lista todos los datos de empleado
SELECT *
FROM empleado
C. Román 10
•DISTINCT se utiliza para eliminar filas
duplicadas de los resultados de la consulta.
• Ejemplo:
C. Román 11
La cláusula WHERE indica que se consideren
solo las filas que cumplen con una condición de
búsqueda.
Ejemplo:
WHERE
-- Lista los datos de empleados de la Sucursal 1
SELECT *
FROM empleado
WHERE empSucursal=1
C. Román 12
Con la cláusula WHERE se utilizan operadores
de comparación que comparan los valores de
dos expresiones.
Los operadores son = , <, >, <= , >=, <>
(diferente)
WHERE También se usan AND (Y), OR (O), NOT (NO)
para condiciones de búsqueda compuestas.
Operadores de
Ejemplos:
comparación
-- 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
Ejemplos:
-- Lista los datos de empleados contratados antes
del 10/1/2017
SELECT *
FROM empleado
WHERE WHERE empContrato< ‘10/1/2017’
Operadores de
comparación -- 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
Comprueba si un valor de datos se encuentra
entre dos valores especificados.
Ejemplo:
--Lista los datos de empleados con un sueldo
BETWEEN entre 4000 y 7000
SELECT *
FROM empleado
WHERE empSalario BETWEEN 4000 AND 7000
C. Román 15
Comprueba si un valor de datos se encuentra
entre los valores de un conjunto.
Ejemplo:
--Lista los datos de empleados de las sucursales
IN 1, 2 y 5
SELECT *
FROM empleado
WHERE empSucursal IN (1, 2, 5)
C. Román 16
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.
LIKE Ejemplo:
--Lista los datos de empleados cuyo apellido
comience con Pe
SELECT *
FROM empleado
WHERE empApPaterno LIKE ‘Pe%’
C. Román 17
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.
IS NULL Ejemplo:
IS NOT NULL --Lista los datos de empleados que no tienen
teléfonos registrados
SELECT *
FROM empleado
WHERE empTelefono IS NULL
C. Román 18
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
Condiciones de búsqueda cuando por lo menos una deba ser
búsqueda verdadera.
compuestas 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
Se utilizan paréntesis para agrupar los criterios
de búsqueda.
Condiciones de Ejemplo:
búsqueda SELECT *
compuestas FROM ventas
WHERE (nroOficina IN (100,102,105))
OR (nombreDirector IS NULL AND salario<8000)
C. Román 20
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
Cláusula ORDER la ordenación descendente se utiliza la cláusula
BY DESC.
Ejemplo
SELECT *
FROM ventas
ORDER BY departamento, ciudad DESC
C. Román 21
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.
Consultas con DISTINCTROW Omite los registros
predicado duplicados en la totalidad del registro y no
sólo en los campos seleccionados.
Ejemplo
SELECT TOP 10 *
FROM ventas
C. Román 22
Permite asignar un nombre a alguna columna
determinada del resultado de una consulta.
Se utiliza la palabra reservada AS.
Alias Ejemplo
SELECT nomVen AS nombreVendedor
FROM ventas
C. Román 23
Se pueden realizar cálculos de datos mediante
las funciones de columna:
SUM() calcula la suma
Consultas AVG() calcula el promedio
sumarias 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
Devuelve la suma del conjunto de valores
contenido en un campo específico de una
consulta. Su sintaxis es:
Función SUM SELECT SUM (EXPR) FROM TABLA
Ejemplo
SELECT SUM(importeVenta)
FROM ventas
C. Román 25
Calcula el promedio (media aritmética) de un
conjunto de valores contenido en un campo
especificado de una consulta. Su sintaxis es la
siguiente:
AVG SELECT AVG(EXPR) FROM TABLA
Ejemplo
SELECT AVG(importeVenta)
FROM ventas
C. Román 26
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) FROM TABLA
MIN, MAX SELECT MAX(EXPR) FROM TABLA
Ejemplo
SELECT MAX(importeVenta),
MIN(importeVenta)
FROM ventas
C. Román 27
Calcula el número de registros devueltos por
una consulta. Su sintaxis es la siguiente:
C. Román 28
Cuenta las filas resultantes de una consulta.
Ejemplo
COUNT(*) SELECT COUNT(*)
FROM ventas
WHERE importeVenta>10000
C. Román 29
Agrupa los registros con valores
idénticos, en la lista de campos
especificados, en un único registro.
Cláusula GROUP Su sintaxis es la siguiente:
BY SELECT campos
FROM tabla
WHERE criterio
GROUP BY campos del grupo
C. Román 30
Ejemplo
Cláusula GROUP SELECT nombreCliente, SUM(importeVenta)
BY FROM ventas
GROUP BY nombreCliente
C. Román 31
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
Cláusula siguiente:
HAVING SELECT campos
FROM tabla
WHERE criterio
GROUP BY campos del grupo
HAVING condición
C. Román 32
Ejemplo
SELECT nombreCliente, SUM(importeVenta)
Cláusula
FROM ventas
HAVING
GROUP BY nombreCliente
HAVING AVG(importeVenta)>10000
C. Román 33
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
UNION 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
Ejemplo.
SELECT idFabricante, idProducto
FROM productos
WHERE precio>2000
UNION
SELECT fabricante, producto
FROM pedidos
WHERE importe>3000
ORDER BY 1
C. Román 35
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
INTERSECT 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
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
EXCEPT 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
Consultas en varias tablas
La cláusula INNER combina registros
de dos tablas siempre que haya
concordancia de valores en un
Reunión campo común. Su sintaxis es la
(combinación)
interna
siguiente:
INNER JOIN SELECT campos
FROM tabla1
INNER JOIN tabla2
ON tabla1.campo1 op_comp tabla2.campo2
C. Román 39
Se debe especificar una condición de reunión
para cada par de tablas.
Ejemplo
SELECT ventas.monto, ventas.ciudad, cliente.
Reunión interna nombre, vendedor. nombre
de varias tablas 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
Operación de reunión que conecta todas las
relaciones de la tabla izquierda con los datos de
la tabla derecha.
Reunión externa Ejemplo.
izquierda SELECT codProd, codVend, nombreVend
LEFT JOIN FROM vendedor LEFT JOIN producto
ON vendedor.codVend=producto.codVend
C. Román 41
Operación de reunión que conecta todas las
relaciones de la tabla derecha con los datos de
la tabla izquierda.
Reunión externa Ejemplo.
derecha SELECT codProd, codVend, nombreVend
RIGHT JOIN FROM vendedor LEFT JOIN producto
ON vendedor.codVend=producto.codVend
C. Román 42