0% encontró este documento útil (0 votos)
6 vistas18 páginas

Sentencias DML en SQL: Insert, Update, Delete

Cargado por

oscarodcu
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas18 páginas

Sentencias DML en SQL: Insert, Update, Delete

Cargado por

oscarodcu
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Insert/update/delete

SQL-DML
Tratamiento de datos
1. Sentencia INSERT
2. Insert y Select
3. Sentencia UPDATE
4. Sentencia Delete
5. Update y Delete con subconsultas
6. Borrado y modificación de registros con relaciones
1. LA SENTENCIA INSERT
INSERT [INTO] Nombre_Tabla [(nombre_col,…)]
VALUES ({expre | DEFAULT},…)

Ejemplo:

INSERT INTO mascotas (Codigo,Nombre,Raza)


VALUES
(1,’Pequitas’,’Gato común Europeo’);
El orden debe
coincidir. Sólo hemos
puesto dos campos
porque se supone
que el resto los pone
el sistema. Por
ejemplo la clave lo
pone
automáticamente
porque es
autonumérico y la
fecha de inserción
son campos es de
tipo TIMESTAMP, es OPCIONAL: poner los campos entre paréntesis ANTES de values.
decir son OBLIGATORIO: ponerlos en el mismo orden que en la tabla
automáticos
LA SENTENCIA INSERT (SQL) II
• Sin especificar lista de columnas:
INSERT INTO mascotas
VALUES
(2,’Calcetines’,’Gato común’,’45645634L’);

• Con valores por defecto:


INSERT INTO mascotas
VALUES
(2,’Calcetines’,DEFAULT,’45645634L’);

NOTA: La columna en la que indiquemos default debe


tener establecido un valor por defecto cuando la
creamos.
NOTA: en algunos SGBD las fechas van entre comillas
LA SENTENCIA INSERT EXTENDIDA
• Sintaxis:
• INSERT [INTO] nombre_tabla [(nombre_col,…)]
• VALUES ({expre | DEFAULT},…),(…),…

Podemos insertar varios registros en una única sentencia, separados por


coma.

INSERT INTO VEHICULOS (Matricula,Modelo,Marca)


VALUES (‘4123 BFH’,’Ibiza’,’Seat’) ,
(‘1314 FHD’,’Toledo’,’Seat’) ,
(‘3923 GJS’,’León’,’Seat’);
2. LA SENTENCIA INSERT+SELECT. Para hacer copias
de seguridad de una tabla completa
• Inserta en una tabla los registros obtenidos mediante una sentencia SELECT.

INSERT INTO tabla2
SELECT * FROM tabla1
WHERE condition;

EJEMPLO:
INSERT INTO BackupVehiculos
SELECT * FROM Vehiculos; //podríamos realizar la copia de otra bbdd select * from [Link]

NOTA: LA ESTRUCTURA DE LA TABLA DEBE EXISTIR.


Puedes copiar la estructura vacía:
CREATE TABLE NombreTabla like TablaExistente.
CREATE TABLE BackupVehiculos like Vehiculos;

Podemos crear la estructura y los registros a la vez:


CREATE TABLE BackupVehiculos Select * from Vehiculos;
2. LA SENTENCIA INSERT+SELECT. Para hacer copias
de seguridad de algunos determinados campos

• INSERT INTO table2 (column1, column2, column3, ...)


SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
3. LA SENTENCIA UPDATE (+set)
• Permite modificar el contenido de cualquier columna y de cualquier fila de
una tabla:
UPDATE Nombre_tabla
SET nombre_col=expre1[, nombre_col2=expre2]…
[WHERE filtro]
Ejemplos:
UPDATE jugadores SET Nombre_equipo=‘Knicks’, Peso=210
WHERE Nombre =‘Pau Gasol’;
Cambiamos el equipo y el peso a Pau Gasol.

UPDATE jugadores SET Peso = Peso*0.4535;


En este caso cambiamos el peso de todos los jugadores de la tabla de libras a kilos.
4. La sentencia DELETE (+where)
• Se usa para eliminar las filas de una tabla.
• Sintaxis:
DELETE FROM nombre_tabla
[WHERE filtro]
Ejemplos:
DELETE FROM jugadores
WHERE Nombre=‘Jorge Garbajosa’;
Elimina al jugador Jorge Garbajosa.

DELETE FROM jugadores;


Elimina Todos los jugadores de la tabla.
5. UPDATE CON SUBCONSULTAS
• Es posible actualizar o borrar registros de una tabla filtrando a
través de subconsultas.
• Para ello en la clausula WHERE de la sentencia se usa la opción: =,
IN o NOT IN y a continuación la SELECT.

Update alumnos set beca=beca*1,10 where


cAsignatura=(select codigo from asignaturas
where NombreAsignatura=“Matemáticas")
5. UPDATE y DELETE CON SUBCONSULTAS
• No es posible borrar datos de una tabla si se usa esa misma tabla en
el filtro

/*Elimina aquellos empleados que son representas de ventas y que no tienen


ningún cliente, por eso su código no aparece en la tabla clientes*/

DELETE FROM empleados


WHERE CodigoEmpleado NOT IN
(SELECT CodigoEmpleadoRepVentas
FROM CLIENTES) AND Puesto=‘Representante Ventas’;

NOTA: La tabla que se borra debe ser distinta a la tabla que se use en la SELECT (no se
puede borrar de la misma tabla que se lee).
5. UPDATE y DELETE CON SUBCONSULTAS
• No es posible borrar datos de una tabla si se usa esa misma tabla en
el filtro

/*Elimina aquellos clientes con LimiteCredito=0, puesto que se leen datos de


la misma tabla que se borran*/

DELETE FROM clientes


WHERE CodigoCliente IN
(SELECT CodigoCliente from clientes where LimiteCredito=0);

ERROR: 1093: YOU CAN´T SPECIFY TARGET TABLE CLIENTES FOR UPDATE IN FROM CLAUSE

NOTA: La tabla que se borra debe ser distinta a la tabla que se use en la SELECT (no se
puede borrar de la misma tabla que se lee).
6. Borrado y Modificación de Registros con Relaciones (I).
DELETE y UPDATE:
Hay que tener en cuenta que debe cumplirse la integridad
referencial definida en el CREATE TABLE.

• Una tabla se relaciona con otra a través de las claves primarias y foráneas,
además para que se cumpla la integridad referencial se deben crear las
tablas con el motor engine=INNODB.
• SINTAXIS EN LA SENTENCIA CREATE:
REFERENCES Nombre_tabla [(Nombre_Col,…)]
[ON DELETE opción_referencia]
[ON UPDATE opción_referencia]
Opción_referencia:
• { CASCADE | SET NULL | NO ACTION }
Borrado y Modificación de Registros con Relaciones (II)

• CASCADE
• Si eliminamos (delete) un registro que contiene clave primaria en la tabla principal, elimina todos los
registros con la clave foránea en la tabla secundaria.
• En caso de modificar (update) la clave principal, se actualizan en la tabla secundaria la clave foránea.

• SET NULL
• Si eliminamos un registro que contiene clave primaria en la tabla principal, establece a nulos los registros
con la clave foránea en la tabla secundaria. En caso de modificar la clave principal, las foráneas que se
referenciaban toman valor nulo, siempre que la clave foránea permita tomar valores nulos.

• NO ACTION
• Si intentamos eliminar un registro o actualizar la clave en la tabla principal, y en la tabla secundaria hay al
menos un registro que tenga referencia, el sistema no nos permite realizar la operación.
Problemas de Inserción
Es posible que cuando queramos hacer inserciones individuales o masivas
las restricciones de integridad referencial sean una fuente de errores.

Por ejemplo en relaciones entre tablas dobles : si en la tabla de empleados


tenemos un enlace a la tabla de departamentos y en la tabla departamentos
tenemos una relación a empleados (a través del campo id_jefeDepto), no
podremos introducir datos debido a la integridad referencial.
SOLUCIÓN: primero introducimos los datos y después las restricciones de
integridad
En el caso de que no haya relaciones dobles, debemos prestar atención al
orden de inserción. Primero introduciremos los datos de las tablas
principales o padre
Inserción en tablas con campos auto_increment
SELECT LAST_INSERT_ID();
mysql> CREATE TABLE t ( id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL );

mysql> INSERT INTO t VALUES (NULL, 'Bob’);

También podría gustarte