Índice
*
* Recordemos
* Estructura básica SELECT FROM WHERE
* ALL/DISTINCT
**
* Expresiones Aritméticas, Precedencia
* Operadores de Comparación y Lógicos
* Valores nulos
* Alias (para campos)
Base de Datos - Lic. Jorge Tejada 2
Recordemos
*
* Crear, modificar y eliminar bases de datos, tablas, campos,
índice y restricciones.
* Cargar, modificar y eliminar registros de una tabla.
Base de Datos - Lic. Jorge Tejada 3
Base Ejemplo
Base de Datos - Lic. Jorge Tejada 4
Base Ejemplo
Base de Datos - Lic. Jorge Tejada 5
Estructura Básica
*
* Tres clausulas: SELECT, FROM y WHERE
* SELECT
* Listar los atributos deseados del resultado de una consulta
* FROM
* Lista las tablas que deben ser analizadas en la evaluación de la
expresión.
* WHERE
* Predicado de selección sobre los atributos de las tablas que
aparecen el la clausula FROM
Base de Datos - Lic. Jorge Tejada 6
Estructura Básica
*
* Ej.:
SELECT fincaid, fincaNombre
FROM finca
SELECT loteNombre
FROM lote
Base de Datos - Lic. Jorge Tejada 7
Escritura
*
* Las sentencias SQL no son sensibles a mayúsculas o
minúsculas.
* Las sentencias SQL pueden estar en una o más líneas.
* Las palabras clave no se pueden abreviar o dividir entre
líneas.
* Las cláusulas se sitúan normalmente en líneas separadas.
* Se utilizan sangrados para mejorar la legibilidad.
* Las sentencias SQL pueden terminar en punto y coma (;).
* Cuando hay mas de una sentencia el uso de (;) es
obligatorio.
* Convención: Las palabras reservadas se usan en mayúsculas.
Base de Datos - Lic. Jorge Tejada 8
ALL/DISTINCT
*
* SQL no filtra automáticamente duplicados.
* Palabras clave ALL/DISTINCT
* Ubicadas después de la clausula SELECT permiten especificar cuando se
aceptan o no duplicados.
* ALL es por default.
SELECT DINCTINCT fincaid, fincaNombre
FROM finca
SELECT ALL fincaid, fincaNombre
FROM finca
SELECT fincaid, fincaNombre
FROM finca
Base de Datos - Lic. Jorge Tejada 9
Comodín *
*
* “*” (asterisco)
* El símbolo asterisco se utiliza para denotar todos los atributos
SELECT * FROM finca
SELECT * FROM lote
Base de Datos - Lic. Jorge Tejada 10
Índice – Recordemos – SQL
*
* Puede contener también expresiones aritméticas que
contengan los operadores, +, –,* y / operando sobre
constantes o campos (atributos de tablas).
SELECT lotevariedadSuperficie*10000
FROM lotevariedad
Base de Datos - Lic. Jorge Tejada 11
Índice – Recordemos – SQL
*
SELECT lotevariedadQPCrecimiento +
lotevariedadQPProduccion
FROM lotevariedad
Base de Datos - Lic. Jorge Tejada 12
Índice – Recordemos – SQL
*
SELECT lotevariedadSuperficie*10000+1 FROM
lotevariedad
SELECT lotevariedadSuperficie*(10000+1) FROM
lotevariedad
Base de Datos - Lic. Jorge Tejada 13
Índice – Recordemos – SQL
1 ) *, / de derecha a izquierda.
2 ) +, - de derecha a izquierda.
Base de Datos - Lic. Jorge Tejada 14
Índice – Recordemos – SQL
*
* Un valor nulo es aquel que no está disponible, no está
asignado, es desconocido o no es aplicable.
* Un valor nulo no es lo mismo que un cero o un espacio en
blanco.
SELECT * FROM lotevariedad
Base de Datos - Lic. Jorge Tejada 15
Valores Nulos
*
* Las expresiones aritméticas que contienen un valor nulo se
evalúan como nulas.
SELECT lotevariedadQPCrecimiento +
lotevariedadQPProduccion
FROM lotevariedad
Base de Datos - Lic. Jorge Tejada 16
Valores Nulos
*
* Los valores nulos no se pueden comparar con los operadores
de comparación.
* lotevariedadAnio = NULL Incorrecto
* lotevariedadAnio <> NULL Incorrecto
* Para saber si un campo es o no nulo usamos:
* lotevariedadAnio IS NULL
* lotevariedadAnio IS NOT NULL
Base de Datos - Lic. Jorge Tejada 17
Cláusula WHERE, Operadores de Comparación y Lógicos
*
* Permite especificar el o los criterios que deben cumplir las
filas buscadas.
* Podemos utilizar los operadores lógicos y de comparación.
SELECT fincaId, fincaNombre
FROM finca
WHERE fincaId<='2'
Base de Datos - Lic. Jorge Tejada 18
Cláusula WHERE, Operadores de Comparación y Lógicos
*
SELECT * FROM lotevariedad
WHERE (loteId<='5') AND
(loteVariedadAnioPlantacion IS NOT NULL)
Base de Datos - Lic. Jorge Tejada 19
Cláusula WHERE, Operadores de Comparación y Lógicos
*
SELECT * FROM lotevariedad
WHERE (variedadId<='2') OR (loteId>='7')
Base de Datos - Lic. Jorge Tejada 20
Cláusula WHERE, Operadores de Comparación y Lógicos
*
SELECT * FROM lotevariedad
WHERE (variedadId<='2') OR (loteId>='7')
Base de Datos - Lic. Jorge Tejada 21
ORDER BY
*
* Siempre se ubica al final de la sentencia y nos permite
ordenar por uno o varios campos.
* Se puede especificar si el orden es ascendente o
descendente.
* Afecta la performance de la búsqueda de la consulta.
* Se puede utilizar el ordinal de los campo buscados.
SELECT fincaId, fincaNombre
FROM finca
ORDER BY fincaNombre
Base de Datos - Lic. Jorge Tejada 22
ORDER BY
*
SELECT fincaId, fincaNombre
FROM finca
ORDER BY fincaNombre DESC
Base de Datos - Lic. Jorge Tejada 23
ORDER BY
*
SELECT loteId, variedadId
FROM lotevariedad
ORDER BY 2,1
Base de Datos - Lic. Jorge Tejada 24
Índice – Recordemos – SQL
*
SELECT loteId, lotevariedadQPCrecimiento,
lotevariedadQPProduccion
FROM lotevariedad
ORDER BY loteId
Base de Datos - Lic. Jorge Tejada 25
Índice – Recordemos – SQL
*
SELECT loteId AS ID,
lotevariedadQPCrecimiento AS PantasCrec,
lotevariedadQPProduccion AS 'Pantas en
Producción'
FROM lotevariedad
ORDER BY loteId
Base de Datos - Lic. Jorge Tejada 26
Índice – Recordemos – SQL
*
* Es un operador de comparación que se utiliza dentro de la
cláusula WHERE para establecer rango de valores entre el
criterio de búsqueda de un campo dado.
* WHERE campo BETWEEN lim_inf AND lim_sup
* Incluye los extremos, es decir es equivalente a
* WHERE (campo>= lim_inf) AND (campo<=lim_sup)
SELECT loteId, variedadId FROM lotevariedad
WHERE variedadId BETWEEN '2' AND '4'
Base de Datos - Lic. Jorge Tejada 27
Índice – Recordemos – SQL
*
* Son funciones que toman una colección de valores como
entrada y producen un único valor como salida.
* Se ubica luego de la cláusula WHERE.
* SUM, AVG, MIN, MAX, COUNT
SELECT SUM(lotevariedadQPProduccion) AS Total
FROM lotevariedad
WHERE variedadId BETWEEN '2' AND '4'
Base de Datos - Lic. Jorge Tejada 28
Índice – Recordemos – SQL
*
* El atributo o atributos especificados en la cláusula GROUP
BY se usan para formar grupos
SELECT loteId AS ID,
SUM(lotevariedadQPProduccion) AS Total
FROM lotevariedad
GROUP BY loteId
Base de Datos - Lic. Jorge Tejada 29
Índice – Recordemos – SQL
*
SELECT loteId AS ID,
SUM(lotevariedadQPProduccion) AS Total
WHERE lotevariedadQPProduccion>=0
FROM lotevariedad
GROUP BY loteId
Base de Datos - Lic. Jorge Tejada 30
Índice – Recordemos – SQL
*
* A veces es más útil establecer una condición que se aplique
a los grupos más que una que se aplique a los registros.
* Los predicados de la cláusula HAVING se aplican después de
la formación de grupos.
SELECT loteId AS ID,
SUM(lotevariedadQPProduccion) AS Total
FROM lotevariedad GROUP BY loteId
HAVING SUM(lotevariedadQPProduccion)>=550
Base de Datos - Lic. Jorge Tejada 31
Índice – Recordemos – SQL
*
* LIMIT se utiliza para limitar el numero de registros devueltos por
la búsqueda. Nunca son devueltos mas de los registros
especificados en el LIMIT. Si pueden ser menos.
* OFFSET (desplazamiento) indica cuantos registros son salteados
antes de iniciar la primer fila a devolver.
* OFFSET por default es 0
* SQL devuelve los registros sin ningún orden en particular. Por este
motivo al usar LIMIT y OFFSET es conveniente usar ORDER BY,
pues sino el resultado puede ser aleatorio.
SELECT loteId AS LID, variedadId AS VID
FROM lotevariedad
ORDER BY 1 LIMIT 3 OFFSET 2
Base de Datos - Lic. Jorge Tejada 32
Índice – Recordemos – SQL
*
SELECT loteId AS LID,
variedadId AS VID
FROM lotevariedad
ORDER BY 1
SELECT loteId AS LID, variedadId AS VID
FROM lotevariedad
ORDER BY 1 LIMIT 3 OFFSET 2
Base de Datos - Lic. Jorge Tejada 33
Índice – Recordemos – SQL
*
SELECT [ALL | DISTINCT]
select_expr [, select_expr ...]
[
FROM tabla
[WHERE where_condicion]
[GROUP BY {col_nombre}]
[HAVING where_condicion]
[ORDER BY {col_nombre | expr | position}
[ASC | DESC], ...]
[LIMIT numero [OFFSET numero]]
]
Base de Datos - Lic. Jorge Tejada 34
Resumen Visto
*
SELECT, COUNT,
ALL, DISTINCT, * GROUP BY,
FROM, HAVING
WHERE,
<,<=,>,>=,=,
NULL (Valores Nulos),
AND, OR, NOT,
BETWEEN,
ORDER BY,
AS (Alias),
LIMIT, OFFSET,
SUM, AVG, MAX, MIN,
Base de Datos - Lic. Jorge Tejada 35
Resumen Visto
*
* CREATE * NOT * EXISTS * BEGIN
* DROP * >, < * ANY * BEGINSTRANS
* ALTER * <>, = * LIMIT/TOP * COMMINSTRANS
* SELECT * >=, <= * OFFSET * ROLLBACK
* INSERT * BETWEEN * AS * ROLLBACKTRANS
* UPDATE * LIKE * UNION/ UNON * INDEX
* DELETE * AVG ALL * UNIQUE
* FROM * COUNT * Valores Nulos * JOIN
* WHERE * SUM * IF * INNER
* GROUP BY * MAX * CASE * LEFT
* HAVING * MIN * WHEN * RIGHT
* ORDER BY * +, -, *, / y % * END * FULL OUTER
* ASC, DESC * ALL, DISTINCT, * * BEFORE * INTO
* AND * IN * AFTER * SET
* OR * NOT IN * IS, IS NOT * Valores Nulos
* NULL
Base de Datos - Lic. Jorge Tejada 36
Ejercicios
*
* Buscar todos los Lotes
* Buscar todos los lotes que tengan Id menor a 10
* Buscar todos los campos de la tabla lotevariedad
* Buscar todos los años de plantación de la tabla lotevariedad
* Buscar todos los años de plantación de la tabla lotevariedad
* Buscar todos los años de plantación distintos de la tabla
lotevariedad
* Buscar todos los años de plantación distintos de la tabla
lotevariedad que no sean nulos
* Buscar todos los años de plantación distintos de la tabla
lotevariedad que no sean nulos ordenados
decrecientemente
Base de Datos - Lic. Jorge Tejada 37
Preguntas
Base de Datos - Lic. Jorge Tejada 38