Bd Gicd Tema5 Ansisql+Mysql
Bd Gicd Tema5 Ansisql+Mysql
Bd Gicd Tema5 Ansisql+Mysql
TEMA 5.
EL LENGUAJE RELACIONAL
SQL
Asignatura: Bases de Datos
Tema 5. El lenguaje relacional SQL
2
Objetivos
Conocer la sintaxis del lenguaje SQL con el fin de
Contenidos
Introducción
Definición de datos
CREATE TABLE, DROP TABLE
Con un inciso: Datos Lógicos o Booleanos
Recuperación o Selección de datos
SELECT
Modificación de datos
INSERT, UPDATE, DELETE
Tema 5. El lenguaje relacional SQL
4
Bibliografía
[CB 2015] Connolly, T.M.; Begg C.E.: Database
Systems: A Practical Approach to Design,
Implementation, and Management, 6th Edition.
Pearson. (Capítulos 5,6y7)
[EN 2016] Elmasri, R.; Navathe, S.B.: Fundamentals of
Creación de tablas
8
Creación de tablas
9
Numéricos
Enteros y Reales
◼ INTEGER (también INT), SMALLINT,
◼ REAL (simple precisión), DOUBLE PRECISION, FLOAT(p)
Con formato
◼ NUMERIC(p,e) o DECIMAL(p,e) ( también DEC(p,e) )
p: precisión (número total de dígitos del número)
e: escala (cuantos dígitos, de los p totales, son decimales); el
valor por omisión de e=0
Ejemplo: NUMERIC(7,2) corresponde a números con 7 dígitos en
total, de los cuales 2 son decimales: 99.999,99
Definición de Datos
Cadena de caracteres
Longitud fija CHAR(n) n: nº de caracteres; por omisión n=1
Longitud variable VARCHAR(n) n: máximo nº de caracteres
Temporales
DATE (10 posiciones) = YEAR, MONTH, DAY (yyyy-mm-dd)
TIME (8 posiciones) = HOUR, MINUTE, SECOND (hh:mi:ss)
◼ Sólo permitidas fechas y horas válidas
TIMESTAMP (marca de tiempo)
◼ Incluye DATE, TIME, fracciones de segundo
◼ Y, si se incluye WITH TIME ZONE, incluye desplazamiento respecto al
UTC (tiempo universal coordinado o huso horario estándar)
Definición de Datos
Hay que incluir una cláusula UNIQUE para cada una de las
claves alternativas que tenga la tabla
Las diapositivas
Una clave UNIQUE puede ser compuesta con fondo gris
contienen código
escrito en el SQL
de MySQL
CREATE TABLE PACIENTE (
num_historial CHAR(15) NOT NULL,
DNI CHAR(9) NULL,
nombre VARCHAR(60) NOT NULL,
f_nacimiento DATE NOT NULL,
NSS INTEGER(12) NOT NULL,
PRIMARY KEY(num_historial),
UNIQUE (DNI),
UNIQUE (NSS, f_nacimiento)
); Dos pacientes pueden tener el mismo
Tiene 2 claves alternativas: hay NSS (por ejemplo, varios niños
que definirlas por separado hermanos que como pacientes usan el
NSS de uno de sus progenitores).
Por eso NSS en solitario no es clave
Definición de Datos
HOTEL
codigo
aa nombre …
SALON_HOTEL
H001 ZENIT hotel idSalon capacidad …
H002 NH AMISTAD H001 S1 60
H003 HESPERIA H001 S2 50
H004 NELVA H001 S3 100
H005 CAMPANILE H002 S1 85
H006 IBIS H002 S2 50
H003 S1 25 RESERVA_SALON
numero hotel salon fecha …
H004 S1 95
H004 S2 50 2 H001 S2 14/09/2019
H004 S3 85 3 H001 S1 14/09/2019
5 H002 S1 15/10/2019
1 H002 S2 09/09/2019
Un mismo salón 6 H003 S1 19/10/2019
puede ser 7 H004 S1 20/10/2019
reservado varias 4 H001 S1 09/10/2019
veces
8 H004 S1 18/11/2019
Datos Lógicos o Booleanos
29
... );
Puede definir restricciones que involucran varias columnas
*Toda película se estrena tras finalizar su rodaje
CREATE TABLE PELICULA ( Esto obliga a que todas las
filas de PELICULA hagan
..., TRUE esta condición
CONSTRAINT peli_fechas
CHECK (fecha_fin_rodaje < fecha_estreno),
... );
Definición de Datos
En SQL de MySQL
Descripción de tabla (Esquema Lógico Estándar)
EDITORIAL(nombre, calle, numero, cod_post, ciudad)
Admiten nulos: codpost
Clave primaria: nombre
AUTOR(id,nombre,apellido1,apellido2,año_nacim,pais,num_premios)
Admiten nulos: apellido2
Clave primaria: id
Comprobación: (num_premios>0 AND num_premios<99)
ESCRITO_POR(libro, autor)
Admiten nulos: Ninguno
Clave primaria: (libro, autor)
Clave ajena: libro Referencia_a LIBRO(ISBN)
Clave ajena: autor Referencia_a AUTOR(id)
Eliminar tablas
43
SQL de MySQL
Sentencia DROP TABLE
DROP TABLE EMPLEADO;
Destrucción de una tabla (estructura y contenido)
◼ Eliminasus filas (liberando el espacio reservado)
◼ La tabla desaparece del esquema de base de datos
◼ Y se borra su definición del Diccionario de Datos (metadatos)
EMPLEADO
nombre apellido nss dni fechanacim ciudad estadocivil salario nssjefe dep
DEPARTAMENTO
nombre coddep nssdire
FAMILIAR
nssemp numero nombre sexo fechanacim parentesco
* Código y nombre del departamento dirigido por el/la empleadx con NSS 111
SELECT coddep, nombre
FROM DEPARTAMENTO
WHERE nssdire = 111;
* Nombres, apellidos y estado civil de lxs empleadxs que no estén solterxs
SELECT nombre, apellido, estadocivil
FROM EMPLEADO
WHERE estadocivil <> 'S';
* Nombres de lxs familiares que tienen parentesco ‘HIJO’ con algún/a empleadx
SELECT nombre
FROM FAMILIAR
WHERE parentesco = 'HIJO';
* NSS y nombre de empleadxs del departamento ‘D3’ que cobran más de 910€
SELECT nss, nombre
FROM EMPLEADO
WHERE dep = 'D3' AND salario > 910;
Recuperación de Datos
SELECT *
nombre coddep nssdire
FROM DEPARTAMENTO
WHERE nombre = 'INVESTIGACION'; INVESTIGACION D2 222
Recuperación de Datos
Operador LIKE
Comparación de cadenas de caracteres (textos)
Suele usar caracteres reservados (comodines):
‘%’ significa “una cantidad cualquiera de caracteres (letras y dígitos)”
‘_’ significa “un solo carácter (una letra o un dígito)”
* Nombres y apellidos de empleadxs de Las Torres de Cotillas o Cabezo de Torres
SELECT nombre, apellido
FROM EMPLEADO
WHERE ciudad LIKE '%TORRES%' ;
Operaciones aritméticas
Aplicación de operadores aritméticos ( +, -, *, / ) sobre valores
numéricos
Se muestra el resultado de la operación, pero no se modifica
ningún dato almacenado en la tabla
* ¿Cómo quedarían los salarios de lxs empleadxs del departamento D3 tras
un aumento del 10% ? apellido nombre 1.1*salario
SELECT apellido, nombre, 1.1*salario CALAVERA RIGOBERTA 990
FROM EMPLEADO
WHERE dep = 'D3'; FABERGÉ CASIANA 1012
NULL
No es un valor, sino una marca que indica desconocimiento o
ausencia de información
Comparar NULL usando =, <>, >, >=, <, <=, con cualquier cosa
siempre da FALSE o UNKNOWN
◼ NULL es distinto a cualquier otra cosa, incluso a otro NULL
EDITORIAL
nombre calle numero cod_post ciudad
Espasa Josefa Valcárcel 42 28027 Madrid
Santillana Avenida de los Artesanos 6 28760 Tres Cantos, Madrid
Edebé Paseo San Juan Bosco 62 08017 Barcelona
LIBRO
ISBN titulo año edicion num_copias editorial
9788408217251 Un científico en el supermercado 2019 1 14 Espasa
9788491223542 Malamandra 2019 5 5 Santillana
9788468315775 Mentira 2015 4 12 Edebé
9788467009101 Divina comedia 2010 50 25 Espasa
9788468319612 La nueva vida del señor Rutin 2014 23 16 Edebé
Recuperación de Datos
* Todos los datos del empleado ‘SOLANO’ junto con los datos de
su departamento
Si lo hacemos “a mano”, buscamos en la tabla EMPLEADO la
fila que tiene el valor ‘SOLANO’ en la columna “apellido”
Esa fila contiene los datos de dicho empleado. Pero no
tenemos todos los datos del departamento, sino sólo su
código ‘D1’ (columna “dep”)
Los datos de los departamentos están en DEPARTAMENTO
* Para todo empleado, mostrar sus datos junto con los datos de
su departamento
Es necesario combinar cada fila de la tabla EMPLEADO con
aquella fila de DEPARTAMENTO cuyo valor en “coddep” sea
igual al valor de “dep”
Se consigue aplicando la operación REUNIÓN (JOIN) a las
dos tablas
SELECT *
FROM EMPLEADO, DEPARTAMENTO
WHERE dep = coddep;
Al poner las DOS tablas en la cláusula FROM
separadas por una coma, el SGBD entiende
que tiene que hacer una reunión entre ellas,
aplicando la cláusula WHERE
Recuperación de Datos
EMPLEADO DEPARTAMENTO
nombre apellido nss ... dep nombre coddep nssdire
JONÁS SOLANO 123 … D1 INVESTIGACION D2 222
RIGOBERTA CALAVERA 321 … D3 ADMINISTRACION D1 111
EUSEBIO MULETAS 222 … D2 PERSONAL D3 333
MACARENO SOSO 111 … D1 TRAINING D4 NULL
CASIANA FABERGÉ 333 … D3
FILOMENA RASCAS 234 … D1 SELECT *
GUMERSINDA MIMOS 543 … NULL FROM EMPLEADO, DEPARTAMENTO
WHERE dep = coddep;
nombre apellido nss ... dep nombre coddep nssdire
Resultado del JONÁS SOLANO 123 … D1 ADMINISTRACION D1 111
JOIN: una tabla RIGOBERTA CALAVERA 321 … D3 PERSONAL D3 333
con una fila por EUSEBIO MULETAS 222 … D2 INVESTIGACION D2 222
cada dos filas
MACARENO SOSO 111 … D1 ADMINISTRACION D1 111
vinculadas de las
CASIANA FABERGÉ 333 … D3 PERSONAL D3 333
tablas origen
FILOMENA RASCAS 234 … D1 ADMINISTRACION D1 111
Importante: En el resultado del JOIN no está la empleada GUMERSINDA MIMOS , ¿Por qué?
Tampoco aparece el departamento TRAINING. ¿Por qué?
Recuperación de Datos
Pues es aquel que tiene como “nss” el mismo valor que el familiar
tiene en “nssemp”
Así, es necesario combinar cada fila de EMPLEADO con cada
fila de FAMILIAR tal que el valor de “nssemp” coincida con el
de “nss”
Se consigue aplicando la operación REUNIÓN (JOIN) a las
dos tablas:
SELECT *
FROM EMPLEADO, FAMILIAR
WHERE nss = nssemp;
Recuperación de Datos
Importante: En el resultado del JOIN faltan varios empleados (CASIANA por ejemplo) ¿Por qué?
¿Y faltan familiares? ¿Por qué?
Recuperación de Datos
SELECT lista_columnas_de_R_y_S
FROM R, S
WHERE condición_de_reunión;
* Para cada familiar que sea hijo/a de un/a empleadx, mostrar su parentesco, el
nss del empleadx del cual es familiar, junto con el estado civil y ciudad de dichx
empleadx
SELECT parentesco, nss, estado_civil, ciudad
FROM EMPLEADO, FAMILIAR → reunión o join de dos tablas
WHERE nss=nssemp → condición de reunión entre tablas
AND parentesco LIKE 'HIJ_'; → condición de selección;
Recuperación de Datos
EJEMPLAR
PRESTAMO
ISBN numero estante libro ejemplar socio fecha …
9788408217251 1 H4
9788408217251 1 S02 14/09/2019
9788408217251 2 H4
9788408217251 2 S03 14/09/2019
9788408217251 3 H5
9788408217251 3 S06 15/10/2019
9788467009101 1 M2
9788467009101 1 S04 09/09/2019
9788467009101 2 M2
9788467009101 1 S04 19/10/2019
9788468319612 1 S1
9788408217251 3 S02 20/10/2019
9788491223542 1 S2
9788491223542 2 S03 09/10/2019
9788491223542 2 A3
9788491223542 2 S01 18/11/2019
9788468315775 1 S7
Selección incondicional
No incluir WHERE en una SELECT equivale a una condición TRUE
para todas las filas
Si en la cláusula FROM aparece sólo una tabla, se obtienen
todas las filas de dicha tabla
* Seleccionar los nss de todos los empleados
SELECT nss
FROM EMPLEADO;
Si el FROM incluye más de una tabla, se obtiene el producto
cartesiano entre dichas tablas
Se combina cada fila de una tabla con todas las filas de la otra
* Obtener todas las combinaciones de departamentos y empleados
SELECT * ¿Qué era el
FROM EMPLEADO, DEPARTAMENTO; PRODUCTO
CARTESIANO?
Recuperación de Datos
… sigue…
JONÁS SOLANO 123 11A 10/10/1945 MURCIA P 1100 111 D1 PERSONAL D3 333
RIGOBERTA CALAVERA 321 21C 12/11/1974 YECLA C 900 333 D3 PERSONAL D3 333
EUSEBIO MULETAS 222 22B 01/01/1969 TOTANA D 2100 123 D2 PERSONAL D3 333
MACARENO SOSO 111 23D 06/04/1944 JUMILLA S 1100 NULL D1 PERSONAL D3 333
CASIANA FABERGÉ 333 33B 15/06/1943 MURCIA V 920 123 D3 PERSONAL D3 333
FILOMENA RASCAS 234 34E 18/07/1970 MURCIA C 1100 111 D1 PERSONAL D3 333
GUMERSINDA MIMOS 543 45F 10/02/1980 PINOSO P 850 NULL NULL PERSONAL D3 333
JONÁS SOLANO 123 11A 10/10/1945 MURCIA P 1100 111 D1 TRAINING D4 NULL
RIGOBERTA CALAVERA 321 21C 12/11/1974 YECLA C 900 333 D3 TRAINING D4 NULL
EUSEBIO MULETAS 222 22B 01/01/1969 TOTANA D 2100 123 D2 TRAINING D4 NULL
MACARENO SOSO 111 23D 06/04/1944 JUMILLA S 1100 NULL D1 TRAINING D4 NULL
CASIANA FABERGÉ 333 33B 15/06/1943 MURCIA V 920 123 D3 TRAINING D4 NULL
FILOMENA RASCAS 234 34E 18/07/1970 MURCIA C 1100 111 D1 TRAINING D4 NULL
GUMERSINDA MIMOS 543 45F 10/02/1980 PINOSO P 850 NULL NULL TRAINING D4 NULL
Formato:
SELECT columnas
FROM ( R1 JOIN R2 ON condición_reunión )
WHERE condiciones de selección de filas, subconsultas, etc ;
* Nombres de cada empleado y de su departamento
SELECT E.nombre empleado, D.nombre departamento
FROM (EMPLEADO E JOIN DEPARTAMENTO D
ON E.dep = D.coddep); empleado departamento
MACARENO ADMINISTRACION
JONÁS ADMINISTRACION
EUSEBIO INVESTIGACION
FILOMENA ADMINISTRACION
RIGOBERTA PERSONAL
CASIANA PERSONAL
Recuperación de Datos
1100
FROM EMPLEADO; 920
850 850
Recuperación de Datos
* NSS de los empleados que tienen algún familiar que sea su hija o su abuela.
SELECT nssemp nssemp
FROM FAMILIAR 321
WHERE parentesco = 'HIJA' 321
321
OR parentesco = 'ABUELA'; 111
Mejor eliminar duplicados del resultado, pues nos piden los NSS de los
empleados: con que nos digan una vez el NSS es suficiente (y es más
adecuado, y elegante, claro)
SELECT DISTINCT nssemp nssemp
FROM FAMILIAR 321
WHERE parentesco = 'HIJA' 111
OR parentesco = 'ABUELA';
Recuperación de Datos
Operación UNION
La unión entre dos tablas obtiene una tabla con todas las
filas de las dos tablas de origen (y sin duplicados)
Como el resultado de una SELECT es una tabla, es posible
hacer la UNION entre dos consultas (entre dos SELECT)
No hace falta que las
* Empleados veteranos (nacidos antes de 1965), o con familiares columnas se llamen
abuelos a su cargo igual, pero sí tienen
(SELECT nss que tener un tipo de
datos compatible
FROM EMPLEADO
WHERE fechanacim < '1965-01-01')
UNION nss
nss nssemp
(SELECT nssemp 123 321
111
FROM FAMILIAR 111
UNION
321
= 123
WHERE parentesco LIKE 'ABUEL_'); 111
321
333
333
Recuperación de Datos
Operación INTERSECT
La intersección entre dos tablas obtiene una tabla con las
filas que están a la vez en las dos tablas de origen (y sin
duplicados)
Como el resultado de una SELECT es una tabla, es posible
hacer la INTERSECCIÓN entre dos consultas (entre dos
SELECT)
nssemp
* Empleados del departamento ‘D3’ y que tienen familiares 111
(SELECT nss nss 321
FROM EMPLEADO 222 nss
321 INTERSECT =
WHERE dep = 'D3') 321 321
333 111
INTERSECT 321
(SELECT nssemp 111
FROM FAMILIAR);
No lo podemos utilizar, porque el SQL de
MySQL no implementa este operador
Recuperación de Datos
Operación EXCEPT
La resta entre dos tablas obtiene una tabla con las filas que
están en la tabla de la izquierda y no están en la tabla de
la derecha (y sin duplicados)
Como el resultado de una SELECT es una tabla, es posible
hacer la RESTA entre dos consultas (entre dos SELECT)
Después se seleccionan las filas nssemp numero nombre sexo fechanacim parentesco
de FAMILIAR cuyo valor de 123 1 JONÁS H 17/05/1992 HIJO
columna “nssemp” está entre los 321 2 RÓMULA M 23/09/1923 ABUELA
obtenidos en la subconsulta 222 1 ELEUTERIO H 30/10/2002 HIJO
321 1 RENATA M 10/03/2002 HIJA
111 1 JULIANA M 10/10/1936 MADRE
321 3 TORCUATA M 17/05/1938 ABUELA
111 2 SINFOROSA M 23/09/1947 ABUELA
t NOT IN S
– Indica si la fila t NO está entre las filas que devuelve S (subconsulta)
* Nombre y estado civil de los empleados que no tienen familiares a su cargo.
SELECT nombre, estadocivil 1º se obtienen los nss de los empleados que
FROM EMPLEADO tienen familiares
WHERE nss NOT IN (SELECT nssemp 2º se seleccionan los empleados cuyo nss NO
FROM FAMILIAR); está entre los obtenidos
* Nombre de los departamentos cuyo director no es de Murcia.
SELECT nombre 1º se obtienen los nss de los empleados que
FROM DEPARTAMENTO dirigen los departamentos
WHERE nssdire NOT IN (SELECT nss 2º se seleccionan los empleados cuyo nss está
FROM empleado entre los obtenidos
WHERE ciudad = 'MURCIA');
* Nombre y fecha de nacimiento de los familiares de empleados que no están casados.
SELECT nombre, fechanacim 1º se obtienen los nss de los
FROM FAMILIAR empleados que SÍ están casados
WHERE nssemp NOT IN (SELECT nss 2º se seleccionan los familiares cuyos
FROM EMPLEADO empleados no están entre los casados
WHERE estadocivil='C');
Recuperación de Datos
* Suma de salarios y salario máximo, mínimo y medio de empleados del dep. Investigación
SELECT SUM(salario),MAX(salario),MIN(salario),AVG(salario)
FROM EMPLEADO
WHERE dep IN (SELECT coddep
FROM DEPARTAMENTO
WHERE nombre = 'INVESTIGACION');
SUM(salario) MAX(salario) MIN(salario) AVG(salario)
3300 1100 1100 1100
Recuperación de Datos
Función COUNT( )
Cuenta número de filas (usando *) o valores no nulos en una columna
SELECT COUNT(*) 7
FROM EMPLEADO
* ¿Cuántos empleados hay en el departamento de Investigación? COUNT(*)
SELECT COUNT(*) 1
FROM EMPLEADO E JOIN DEPARTAMENTO D ON dep=coddep
WHERE D.nombre = 'INVESTIGACION';
* ¿Cuántos familiares tiene la empleada ‘RIGOBERTA CALAVERA’? COUNT(*)
Cláusula GROUP BY
Para formar grupos de filas dentro de una tabla
Los grupos se forman según el valor de las columnas de
agrupación
Las filas de cada grupo tendrán el mismo valor en las
columnas de agrupación
Aplicación de funciones agregadas a grupos de filas
* Para cada departamento, obtener su código y cuántos empleados tiene dep COUNT(*)
SELECT dep, COUNT(*) D1 3
FROM EMPLEADO D2 1
D3 2
GROUP BY dep ; una columna de agrupación NULL 1
Cláusula HAVING
Siempre junto a GROUP BY
◼ No tiene sentido que aparezca HAVING si en la SELECT no hay un
GROUP BY
Condición que deben cumplir los grupos de filas asociados
a cada valor de las columnas de agrupación
Un grupo que no cumple la condición es descartado, es
decir, el grupo completo no es seleccionado para el
resultado
* Para cada departamento en el que el salario medio de los empleados sea inferior a
1200 euros, mostrar el código y nombre del departamento y el código de su director
SELECT coddep, D.nombre, nssdire
FROM EMPLEADO E, DEPARTAMENTO D
WHERE dep=coddep
GROUP BY coddep
HAVING AVG(salario)<1200 ;
Recuperación de Datos
Orden de ESCRITURA
SELECT lista columnas o funciones Lista select: lo que se desea obtener
FROM lista tablas Tablas necesarias
WHERE condición para filas Condiciones de selección de filas o reunión
GROUP BY lista columnas agrupación Especificación del agrupamiento de filas
HAVING condición para grupos Condición de selección de grupos de filas
ORDER BY lista columnas ordenación Orden de presentación del resultado
Recuperación de Datos
Orden de EVALUACIÓN
FROM lista tablas Acceso a tablas, o reunión
WHERE condición para filas Descarta filas que incumplen la condición
GROUP BY lista columnas agrupación Crea grupos de filas
HAVING condición para grupos Descarta los grupos de filas que la incumplen
ORDER BY lista columnas ordenación Ordena las filas del resultado
SELECT lista columnas o funciones Para el conjunto de filas resultado, elige las
columnas indicadas, calcula las funciones y lo
muestra
Diversas formas de especificar una misma consulta
Ejemplo: es posible expresar una consulta utilizando...
◼ Lista de tablas en el FROM y condiciones de reunión en el WHERE, o
◼ Consultas anidadas (correlacionadas o no ) y comparación con IN ...
Flexibilidad
Modificación de datos con SQL
128
Contenidos
INSERT
INSERT .. SELECT
DELETE
UPDATE
Modificación de Datos
Orden INSERT
Añade una fila completa a una tabla
Incluye nombre de la tabla y lista de valores para las columnas,
escritos en igual orden al especificado en la orden CREATE TABLE
SQL. INSERT
130
nombre apellido nss dni fechanacim ciudad estadocivil salario dep nssjefe
…
GILDA ROLLER 678 67R NULL NULL NULL 1000 D2 NULL
…
Modificación de Datos
INFO_DEP
nom_dep num_empleados suma_salarios
ADMINISTRACION 3 3300
INVESTIGACION 2 3100
PERSONAL 2 1820
TRAINING 3 7510
Orden DELETE
Elimina filas completas de una tabla (sólo una tabla en el FROM)
Cláusula WHERE para seleccionar las filas que se desea eliminar
DELETE FROM EMPLEADO
WHERE apellido = 'ROLLER';
DELETE FROM DEPARTAMENTO 1º se accede a la tabla
WHERE nssdire = 111; 2º se ejecuta el WHERE
DELETE FROM EMPLEADO 3º se ejecuta el borrado
WHERE dep IN
(SELECT coddep
FROM DEPARTAMENTO
WHERE nombre = 'INVESTIGACION');
Si no hay WHERE, se eliminan todas las filas
La tabla permanece, pero queda vacía
DELETE FROM EMPLEADO; -- elimina todas las filas
Modificación de Datos
Orden UPDATE
Modifica valores de columnas en una o más filas de una tabla
* Cambiar el nombre del departamento D4 por ‘FORMACION’ y asignarle un director
UPDATE DEPARTAMENTO 1º se accede a la tabla
SET nombre = 'FORMACION', nssdire = 444 2º se ejecuta el WHERE
3º se ejecuta el SET
WHERE coddep = 'D4';
Cláusula WHERE para seleccionar las filas que actualizar
◼ Si no hay WHERE, se aplica la modificación a TODAS las filas
Cláusula SET con las columnas que modificar y los nuevos valores
NULL o DEFAULT como nuevo valor de una columna
UPDATE EMPLEADO SET nssjefe = NULL
WHERE apellido = 'FUERTES'; Estos ejemplos de UPDATE
sólo modifican una fila
UPDATE EMPLEADO SET salario = DEFAULT de la tabla, pues sólo una
WHERE nss = 333; de ellas hacen TRUE lo
indicado en el WHERE
Modificación de Datos