En este post vamos a estudiar los principales comandos SQL para modificar los datos de las tablas de nuestra base de datos. Básicamente tenemos tres comandos para realizar las tres operaciones básicas:
Tabla de contenidos
INSERT INTO
Escribir un dato nuevo.
Sintaxis:
INSERT INTO <Tabla> [(campo1,campo2…..)]
VALUES (valor1, valor2, …)
La instrucción debe tener tantos valores como campos se pretenden rellenar y dichos valores deben ser del tipo que almacena el campo destino. En caso de no ser compatible el tipo de dato que queremos almacenar con el tipo del campo destino, se produciría un error y no se completaría la escritura de los datos.
UPDATE
Modificar el valor de un dato: Hay que indicar la tabla y los campos que se quieren actualizar. También podemos indicar un criterio que deben de cumplir los registros para que se produzca la actualización, pero esto es opcional.
Sintaxis
UPDATE tabla
SET campo1 = valor1, campo2 = valor 2,…
WHERE <criterio>
DELETE
Borrar un dato: Con esta instrucción, eliminamos los registros de la tabla indicada tras el comando FROM, y que cumplan los criterios definidos tras el comando WHERE
Sintaxis
DELETE FROM tabla
WHERE <criterios>
Y para practicar estos comandos, realizaremos el ejercicio siguiente:
Ejemplo: Manipulación de datos con SQL
Partimos de la BBDD ProveedoresSQL, que creamos en el post anterior. En ella ya tenemos creadas las dos tablas con las que de momento estamos funcionando: Proveedores y Productos. Pero estas están vacías, todavía no hemos cargado ningún dato.
Paso 1: Sentencias SQL para la carga de datos en la tabla proveedores.
Pongamos que primero vamos a cargar los datos en la Tabla proveedores. Las tres primeras sentencias para cargar los tres primeros registros serían:
INSERT INTO Proveedores (idProveedor, NombreProveedor, ContactoProveedor, Telefono) VALUES(1,"Arroces La Cigala","Maria Alvarez","677889922");
INSERT INTO Proveedores (idProveedor, NombreProveedor, ContactoProveedor, Telefono) VALUES(2,"Arroces La Cigala","Maria Alvarez","677889924");
INSERT INTO Proveedores (idProveedor, NombreProveedor, ContactoProveedor, Telefono) VALUES(3,"Azucarera Sevillana","Rodrigo Mendez","622525885");
En el módulo que creamos en el ejercicio anterior, y que bautizamos con el nombre “PracticasConSQL”, creamos el siguiente procedimiento para ejecutar estas sentencias SQL:
Sub cargarDatos()
Dim Proveedor, Contacto, Tfno, SQLSentence As String
Dim nRegistro As Integer
nRegistro = 1
Proveedor = "Arroces La Cigala"
Contacto = "Maria Alvarez"
Tfno = "677889922"
SQLSentence = "INSERT INTO Proveedores (idProveedor, NombreProveedor, ContactoProveedor, Telefono) VALUES(" & nRegistro & "," & Chr(34) & Proveedor & Chr(34) & "," & Chr(34) & Contacto & Chr(34) & "," & Chr(34) & Tfno & Chr(34) & ");"
Debug.Print SQLSentence
DoCmd.RunSQL SQLSentence
nRegistro = 2
Proveedor = "Arroces La Cigala"
Contacto = "Maria Alvarez"
Tfno = "677889924"
SQLSentence = "INSERT INTO Proveedores (idProveedor, NombreProveedor, ContactoProveedor, Telefono) VALUES(" & nRegistro & "," & Chr(34) & Proveedor & Chr(34) & "," & Chr(34) & Contacto & Chr(34) & "," & Chr(34) & Tfno & Chr(34) & ");"
Debug.Print SQLSentence
DoCmd.RunSQL SQLSentence
nRegistro = 3
Proveedor = "Azucarera Sevillana"
Contacto = "Rodrigo Mendez"
Tfno = "622525885"
SQLSentence = "INSERT INTO Proveedores (idProveedor, NombreProveedor, ContactoProveedor, Telefono) VALUES(" & nRegistro & "," & Chr(34) & Proveedor & Chr(34) & "," & Chr(34) & Contacto & Chr(34) & "," & Chr(34) & Tfno & Chr(34) & ");"
Debug.Print SQLSentence
DoCmd.RunSQL SQLSentence
End Sub
Estas sentencias SQL, al ser sentencias de modificación de datos que no afectan a la estructura de la BBDD, podríamos haberla ejecutado desde la vistaSQL en el interfaz de Access. No obstante, vemos como hacerlo por código en VBA, por si tuviéramos muchos datos y tuviéramos que leerlos de un fichero.
Paso 2: Borrando registros erroneos
Inmediatamente después de la carga nos damos cuenta que el segundo registro en realidad está duplicado, tenía el campo del Teléfono mal. Decidimos eliminar el registro completo, lo cual hacemos ejecutando la siguiente sentencia SQL:
DELETE Proveedores.idProveedor, Proveedores.NombreProveedor, Proveedores.ContactoProveedor, Proveedores.Telefono
FROM Proveedores
WHERE (Proveedores.idProveedor=2);
En esta ocasión, lo hacemos desde la vistaSQL de Access.
Paso 3: Actualizando datos
Ya hemos visto como cargar un registro nuevo en una tabla y como borrarlo completamente, nos queda aprender a actualizar el valor de un campo, sin afectar al resto del registro.
Supongamos que Rodrigo Mendez, el contacto de Azucarera Sevillana nos llama para decirnos que ha cambiado el teléfono, que su nuevo numero es 698527414.
Tendríamos que actualizar el número de teléfono de este contacto, para lo que podemos usar la siguiente sentencia SQL:
UPDATE Proveedores SET Proveedores.Telefono = "698527414"
WHERE (Proveedores.ContactoProveedor="Rodrigo Mendez");
Si ejecutamos ahora esta sentencia SQL, veremos como se nos actualiza el valor del teléfono de Rodrigo Mendez. He establecido la condición por el nombre del contacto, pero podía haberlo hecho por el número de registro (el 3).
NOTA:
Este post es parte de la colección “Sistemas de acceso y almacenamiento de datos”. Puedes ver el índice de esta colección aquí.