LENGUAJE SQL
• SQL: Structured Query Language
• Lenguaje completo para manejar Bases de Datos.
• Su poder principal radica en la potencialidad que
brinda para realizar consultas a la BD.
• Se basa en comandos. Por ejemplo
SELECT apellido FROM Alumnos;
CREATE TABLE Personal;
DQL (Data Query Language):
Consulta de datos ::: SELECT
DML (Data Manipulation Language):
Manipulación de datos ::: INSERT,
SQL DELETE, UPDATE
DDL (Data Definition Language):
Administra los contenedores de datos :::
CREATE, ALTER, DROP
DCL (Data Control Language):
Privilegios de usuarios ::: GRANT
Consultas SQL básicas
Para consultar se usa la instrucción SELECT
En la forma básica, el SELECT consta de tres cláusulas:
SELECT, FROM yWHERE
• <lista de atributos> lista con los
atributos que interesa recoger de la
SELECT <lista de atributos>
consulta.
FROM <lista de tablas>
WHERE <condición> • <lista de tablas> tablas requeridas
para procesar la consulta
• <condición> condición que
restringe la búsqueda
Ejemplos
Consulta 0
Obtener el nombre, la fecha de nacimiento y la dirección de
todos los empleados
SELECT Nombre, Apellido, FechaN, Direccion
FROM EMPLEADO
Consulta 1
Obtener la fecha de nacimiento y la dirección del empleado
cuyo nombre es “José Silva”.
SELECT FechaN, Direccion
FROM EMPLEADO
WHERE Nombre=“José” AND Apellido=“Silva”
Ejemplos
Consulta 2
Obtener el nombre y número de los proyectos pertenecientes
tanto al departamento de Investigación (5) como al
departamento de Administración (4).
SELECT NombreP, NumeroP
FROM PROYECTO
WHERE NumD=5 OR NumD=4
Consulta 3
Obtener todos los atributos de los empleados con salario entre
30.000 y 50.000
SELECT *
FROM EMPLEADO
WHERE Salario>=30000 AND Salario<= 50000
Ejemplos
Consulta 4
Obtener el nombre y la dirección de todos los empleados que
pertenecen al departamento de Investigación.
SELECT Nombre, Apellido, Direccion
FROM EMPLEADO, DEPARTAMENTO
WHERE NombreD=‘Investigación’ AND NumeroD=ND
Se igualan las claves primarias
Consulta 5
Obtener el Nombre, Apellido y Depto de todos los empleados
SELECT Nombre, Apellido, NombreD
FROM DEPARTAMENTO, EMPLEADO
WHERE ND=NumeroD
Nombres ambiguos de atributos
Cuando un atributo tiene el mismo nombre en dos tablas
distintas, en la consulta se debe diferenciar anteponiendo la
tabla a la que pertenece el atributo.
Ejemplo
Consulta 6
Supongamos, para la Consulta 4, que el número de
departamento en ambas tablas es ND. La consulta quedaría:
SELECT NombreE, Direccion
FROM EMPLEADO, DEPARTAMENTO
WHERE NombreD=‘Investigación’ AND
[Link]=[Link]
Eliminación de Duplicados
A veces una consulta produce resultados repetidos. Estos
resultados se pueden eliminar usando la expresión DISTINCT.
Ejemplo
Consulta 7
Obtenga los lugares en que está distribuida la empresa.
SELECT DISTINCT LugarD
FROM LUGARES_DEPTOS
Temuco
El lugar “Temuco” saldría Santiago
tres veces si no usamos Arica
Temuco
DISTINCT Buin
Temuco
Uso de conjunto de valores
Ejemplo
Consulta 8
Obtenga el Rut de todos los empleados que trabajan en los
proyectos 1, 2 ó 3.
SELECT DISTINCT Rut
FROM TRABAJA_EN
WHERE NumP IN (1, 2, 3)
Funciones SUM, COUNT, MAX, MIN, AVG
Ejemplo
Consulta 9
Obtenga la suma de todos los salarios, el salario máximo, el
mínimo y el promedio.
SELECT SUM(Salario), MAX(Salario), MIN(Salario),
AVG(Salario)
FROM EMPLEADO
Para más claridad, podría asignarse un nombre a cada columna
usando la expresión AS:
SELECT SUM(Salario) AS SumaS, MAX(Salario) AS MaximoS,
MIN(Salario) AS MinimoS, AVG(Salario) AS PromedioS
FROM EMPLEADO
Ejemplo
Consulta 10
¿Cuántos empleados tiene el departamento de Investigación (5)?
SELECT COUNT(*)
FROM EMPLEADO
WHERE ND=5
...si no supiéramos que el Depto de Investigación tiene código 5,
lo correcto sería:
SELECT COUNT(*)
FROM EMPLEADO, DEPARTAMENTO
WHERE ND=NumeroD AND NombreD=“Investigación”
Se igualan las claves primarias
Ejemplo
Consulta 11
¿Cuántos salarios distintos hay?
SELECT COUNT(DISTINCT Salario)
FROM EMPLEADO
Consulta 12 (GROUP BY)
Para cada depto. obtenga el número del depto, el número de
empleados, y el salario promedio.
SELECT ND, COUNT(*), AVG(Salario)
FROM EMPLEADO
GROUP BY ND
Ejemplo
Consulta 13
Obtenga un listado de los empleados con los salarios reajustados
un 10%
SELECT NombreP, Apellido, Salario*1.1
FROM EMPLEADO
Ordenamiento (ORDER BY)
Consulta 14
Obtenga un listado de los empleados ordenados por Apellido
SELECT NombreP, Apellido
FROM EMPLEADO
ORDER BY Apellido
Consulta 15
Obtenga un listado con el nombre del empleado y el
departamento en que trabaja, ordenado por Departamento.
SELECT NombreP, Apellido, NombreD
FROM EMPLEADO, DEPARTAMENTO
WHERE ND=NumeroD
ORDER BY NombreD
Si además, en el listado anterior queremos ordenar, como
segundo criterio, por apellido dentro de cada departamento, la
consulta sería:
SELECT NombreP, Apellido, NombreD
FROM EMPLEADO, DEPARTAMENTO
WHERE ND=NumeroD
ORDER BY NombreD, Apellido
Segundo criterio de ordenamiento