Inducción A SQL
Inducción A SQL
Inducción A SQL
Valores nulos
El valor nulo NULL representa la ausencia de información, o bien por desconocimiento del
dato, o bien porque no procede.
Debe diferenciarse de cualquier otro valor, entre ellos del valor 0 si se trata de un dato
numérico, y de la cadena de caracteres vacía, si es un dato de tipo caracter.
Una columna de una tabla podría admitir valores nulos (NULL) o no (NOT NULL). Por
defecto admite nulos.
job VARCHAR2(9),
mgr VARCHAR2(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno VARCHAR2(2)
INSERT INTO emp VALUES('1245', 'Jose', 'Analista', NULL, '12-Jan-1997', 34000, 300.05, '12')
La sentencia SELECT
[WHERE <condicion_where>]
[HAVING <condicion_having>]
La sentencia SELECT tiene varias cláusulas o partes diferentes con una función específica.
La sentencia SELECT básica está formada por las cláusulas SELECT, FROM, WHERE y ORDER
BY.
1. FROM (obligatoria)
2. WHERE (optativa)
Indica un predicado que expresa la condición que debe cumplir cada fila que interviene en
la consulta. Así la consulta se restringe a las filas que cumplen la condición.
3. SELECT (obligatoria)
Incluye los datos que se solicitan en la consulta, normalmente una o varias expresiones.
Alternativamente un * indica todas las columnas de las tablas involucradas. Si hubiese filas
repetidas, por defecto aparecen, pero no lo hacen si se incluye DISTINCT.
4. ORDER BY (optativa)
Permite determinar el criterio de ordenación de las filas de la tabla resultado. Sin ella
obtendremos las mismas filas, pero puede que en órdenes distintos.
Predicados
Los predicados expresan condiciones. Si aparecen en una clausula WHERE indican una
condición que las filas de las tablas involucrada deben cumplir.
Pueden ser simples, si incluyen una única condición, o compuestos si constan de varias, o
sea, si combinan varios predicados simples, unidos por los operadores AND, OR y NOT.
Predicados simples
Inicialmente veremos los predicados simples en su formato más elemental. Son los siguientes:
De comparación.
De valor nulo.
Los predicados de comparación no sirven para determinar los valores nulos. Por ejemplo, no es
válido COMM = NULL porque sería discernir si un valor que puede ser desconocido es igual a otro
también desconocido.
De rango (BETWEEN).
Compara si los valores de una expresión están o no entre los de otras dos.
Comprueba si el valor de una expresión coincide con alguno de los incluidos en una lista de
valores.
SELECT * SELECT *
Pueden formar parte de una expresión. Constan de un nombre y pueden tener uno o más
argumentos entre paréntesis. El resultado es un valor. Hay muchas funciones. Un breve lista:
Numéricas o aritméticas:
y de longitud <exp3>.
De fecha y tiempo:
CURRENT_DATE Fecha actual del sistema. Ej.: SELECT CURRENT_DATE FROM DUAL
[,<resultado_en_otro_caso>]
Hemos visto las funciones de agrupamiento actuando sobre un conjunto formado por la totalidad
de las filas involucradas en la consulta.
En SQL pueden formarse diversos conjuntos que vendran dados por la igualdad en los valores
Una serie de filas forman un conjunto si tienen los mismos valores para una o más columnas.
...8a
...5b ...8a
...2c
...1b
EJEMPLO:
Si deseamos obtener el máximo del salario de los empleados para cada departamento,
tendremos que formar tantos conjuntos como departamentos distintos que tienen empleados
haya, agrupar en cada conjunto a los empleados del mismo departamento, y obtener el máximo
del salario para cada uno de los conjuntos.
MAX(SAL) DEPTNO
5000 10
3000 20
2850 30
Condiciones sobre los conjuntos
De la misma forma que la clausula WHERE indica una condición sobre las filas, la clausula
HAVING permite establecer una condición sobre los conjuntos. Sólo los conjuntos que cumplan la
condición del HAVING seguirán formando parte de la consulta.
La condición impuesta en el HAVING tiene que ser aplicable a cada conjunto formado por
la acción de la clausula GROUP BY.
SELECT MAX(sal), MIN(sal), SUM(sal), COUNT(empno), deptno FROM emp WHERE sal > 1500
GROUP BY deptno
SELECT MAX(sal), MIN(sal), SUM(sal), COUNT(empno), deptno FROM emp WHERE sal > 1500
Sintaxis:
UPDATE
Sintaxis:
UPDATE <tabla> SET <columna1> = <expresi on1> [, <columna2> = <expresi on2>, ...]
[ WHERE <predicado> ]
DELETE
Sintaxis: