Leccion 5 - Operaciones CRUD
Tiempo estimado de lectura: 10 minutos
Que es CRUD?
A partir de ahora en este curso empezaremos a ver que comandos SQL son los utilizados para interactuar con nuestras bases de datos relacionales. Existen un conjunto de 4 tipos de operaciones fundamentales que nos permiten interactuar con estas. Las que denonimanos operaciones CRUD.
CRUD es un acronimo de Create, Read, Update y Delete. Es la manera de denominar los 4 tipos de operaciones basicas y fundamentales que podemos realizar para interactuar y gestionar una base de datos. Las operaciones CRUD no se limitan solo a bases de datos relacionales SQL si no que tambien las encontramos en bases de datos NoSQL.
Si queremos alimentar nuestra base de datos con mas datos, estaremos hablando de “crear” datos, esto es, hariamos referencia a las operaciones CREATE. Si lo que queremos es leer datos, entonces podemos utilizar el comando SELECT. Para actualizar valores en las tablas podemos usar UPDATE. Y si lo que queremos es borrar datos usaremos el comando DELETE.
CREATE
Primero que todo, para poder hacer mencion a las operaciones CREATE dentro del conjunto CRUD, debemos hacer un inciso a la hora de entender este tipo de operaciones puede dar lugar a confusion dado que cuando hablamos de operaciones CREATE dentro del conjunto CRUD, no estamos hablando del propio comando CREATE que ya existe en SQL y que nos permite crear objetos de bases de datos, como crear una tabla. Esto ultimo puede dar a confusion, dado que realmente cuando hacemos mencion a las operaciones CREATE dentro de CRUD estaremos hablando de la posibilidad de alimentar nuestra base de datos con mas datos, por lo que realmente estamos hablando de insertar datos no de crear nuevos objetos. Siendo asi, el comando que nos permite alimentar una base de datos con SQL seria el comando INSERT.
El uso de INSERT sigue el siguiente patron de sintaxis.
INSERT INTO tabla (campo1, campo2,...)
VALUES (valor1, valor2, …)
Por ejemplo, si tenemos una tabla llamada Clientes con 4 columnas (campos) Nombre, Apellidos, Email y Telefono, a la hora de crear un nuevo cliente podriamos usar la siguiente secuencia de comandos.
INSERT INTO Clientes (Nombre, Apellidos, Email, Telefono)
VALUES ('John', 'Doe', 'john@email.com', '555112233')
De esta manera insertaremos un nuevo registro en la tabla clientes con los valores que le hemos dado.
A la hora de crear nuevos registros en las tablas, podemos insertar varios nuevos registros a la vez, simplemente tenemos que indicar cada nuevo registro siguiente la sintaxis anterior separando el conjunto de valores con una coma. Por ejemplo, como continuacion de nuestro ejemplo anterior en el que hemos creado un nuevo registro en la tabla clientes, ahora queremos crear dos nuevos clientes. Lo hariamos como sigue a continuacion.
INSERT INTO Clientes (Nombre, Apellidos, Email, Telefono)
VALUES ('Maria','Salas', 'maria@example.com', '555221133')
, ('Juan','Perez', 'juan@example2.com', '555332211')
Si quisieramos seguir añadiendo mas registros podemos hacerlo de la misma manera con tantos nuevos registros como quisieramos siguiente el ejemplo anterior.
READ
Las operaciones READ nos permiten leer datos de una base de datos, en cuyo caso tenemos que utilizar el comando SELECT. Siguiendo con el ejemplo de la tabla Clientes, imagina que lo queremos es saber el nombre y apellidos de todos los clientes que tenemos en esta tabla. Para ello utilizaremos el siguiente codigo para realizar nuestra consulta.
SELECT Nombre, Apellidos, Email
FROM Clientes
Vamos a analizar el codigo que hemos mostrado antes. SELECT es el comando con el que indicamos que lo queremos es leer datos de nuestra base de datos, concretamente de la tabla Clientes, lo que indicamos con el comando FROM. Asi mismo junto al comando SELECT indicamos las columnas que queremos traer de la tabla Clientes, en nuestro ejemplo, Nombre y Apellidos. Date cuenta que en nuestro codigo los campos indicados estan separados por coma, asi si la tabla Clientes tuviera mas columnas y en nuestra SELECT quisieramos traer datos de mas columnas lo indicaremos añadiendo el nombre de los otros campos que necesitemos. No es necesario siempre leer los datos de todas las columnas con SELECT, si no que podemos necesitar leer datos tan solo de columnas especificas, uno o mas, para ello tan solo necesitamos especificar y escribir el nombre de las columnas que solamente necesitamos. Por ejemplo.
SELECT Email
FROM Clientes
Al leer datos de las columnas de una tabla hay una forma que nos permite de manera mas sencilla de hacerlo sin tener que tener que escribir el nombre de cada uno de los campos, lo que nos permite a la vez que podemos traer los datos de todas las columnas de la tabla al mismo tiempo. Esto lo hariamos de la siguiente manera, fijate en el siguiente codigo.
SELECT *
FROM Clientes
Al utilizar el símbolo *
, llamado star, estaremos trayendo la informacion de todos los campos en una sola consulta. Esto es util cuando si queremos inspeccionar los datos de una tabla pero no conocemos a priori el nombre de las columnas por lo que necesitamos primero leer todos los datos. Pero si lo queremos es leer datos de columnas especificas deberemos indicar y escribir el nombre de las columnas que necesitamos siguiendo los ejemplos mencionados mas arriba.
Si lo queremos es leer los datos de la tabla Clientes para saber los clientes que se llaman Juan, esto, lo podemos hacer de la siguiente manera,
SELECT *
FROM Clientes
WHERE Nombre = 'Juan'
Esto nos devolvera todos los registros que coincidan con el criterio de que el nombre sea Juan. En nuestro ejemplo, solo tenemos un cliente que se llama Juan por lo que esta consulta solo nos devolvera un registro.
UPDATE
A veces podemos necesitar cambiar el valor de un dato, las razones pueden ser diversas, como, se registró un dato erroneo por haberse introducido erroneamente en un formulario de entrada, o tambien puede ser que un cliente haya cambiado de dirección, entonces para tener el dato correcto lo que podemos hacer es actualizar este dato en nuestra base de datos.
Este tipo de operaciones se pueden realizar con el comando UPDATE, que mismamente significa actualizar en inglés.
Por ejemplo, en nuestra base de datos Clientes, el cliente Juan Perez cuyo telefono era 555332211 cambio de telefono, siendo el nuevo 777112233. Para poder actualizar este dato en nuestra base datos, al igual que este dato queda registrado en la columna Telefono de la tabla Clientes, podemos utilizar el siguiente codigo.
UPDATE Clientes
SET Telefono = '777112233'
WHERE Nombre = 'Juan' AND Apellidos = 'Perez'
Este codigo indica que hay que actualizar la tabla Clientes indicado junto al comando UPDATE, y en concreto la columna Telefono, con el nuevo valor 777112233 que se indica con el comando SET. Fijate que el nuevo valor va a la derecha del nombre de la columna a actualizar. Por ultimo vemos que la ultima parte del codigo utiliza WHERE. Esto nos permite indicar exactamente que registro queremos actualizar, esto es, el registro que se corresponde a los valores Juan para el campo Nombre, y Perez para el campo Apellidos. Al no haber mas registros en nuestra tabla Clientes que coincidan con estos valores, solo tendremos un registro que coincida con estos criterios y cuyo nuevo valor para la columna Telefono sera 777112233.
Nota: A la hora de utilizar el comando UPDATE hazlo con precaucion. Hay que tener cuidado de poder seleccionar correctamente los datos o las filas de la tabla que realmente quieres actualizar de lo contrario podras modificar otros datos que no necesitas afectando la integridad de los datos de la base de datos.
DELETE
Hemos visto como podemos “crear”, leer y modificar nuevos datos, pero tambien queremos poder borrar datos. Las razones para borrar datos de una base de datos pueden ser diversas, no vamos a entrar en eso, pero siguiendo nuestro ejemplo de la tabla Clientes, imagina que necesitamos borrar los datos del cliente Juan Perez. Para ello en SQL utilizamos el comando DELETE. EL siguiente codigo nos permitiria borrar el registro de Juan Perez en nuestra tabla de Clientes.
DELETE
FROM Clientes
WHERE Nombre = 'Juan' AND Apellidos = 'Perez'
Nota: A la hora de utilizar el comando DELETE hazlo con suma precaucion. Hay que tener cuidado de poder seleccionar correctamente los datos o las filas de la tabla que realmente quieres borrar de lo contrario podras eliminar otros datos que no necesitas afectando la integridad de los datos de la base de datos.
DDL vs DML
Hasta ahora en esta leccion hemos visto las operaciones CRUD que nos sirven en bases de datos SQL para crear, leer, actualizar y borrar datos. Sin embargo SQL nos debe permitir poder disenar y desarrollar la estructura de datos necesaria para poder gestionar y manipular nuestras bases de datos.
A la hora de crear o modificar la estructura de datos podemos hablar de los comandos tipo DDL, que es el acronimo de Data Definition Language. Este otro conjunto de comandos nos permiten crear (CREATE), modificar (ALTER) y borrar (DROP) objetos de nuestra base de datos, tales como tablas, vistas, funciones o procedimientos almacenados, entre otros.
Te preguntaras, como puedo utilizar estos comandos? Realmente es muy sencillo, por ejemplo, vamos a ver el comando CREATE para conocer como hemos creado la tabla Clientes (en linea con nuestros ejemplos anteriores). Recuerda, la tabla Clientes de nuestro ejemplo contiene los campos Nombre, Apellidos, Email y Telefono. Si quisieramos crear la tabla de nuevo, para ello, utilizariamos el codigo siguiente.
CREATE TABLE Clientes
(
Id INT PRIMARY KEY,
Nombre NVARCHAR(50) ,
Apellidos NVARCHAR(50) ,
Email NVARCHAR(150) ,
Telefono INT
)
El comando CREATE TABLE declara crear una nueva tabla llamada Clientes, donde listaremos entre parentesis los nombres de cada uno de las columnas, como Nombre, que en este caso sera un campo tipo nvarchar de longitud maxima 50. Ademas de Nombre tambien tendremos el resto de campos, separando los nombres de los nuevos campos y sus tipos de datos, tales como Apellidos, Email y Telefono. Fijate que nuestra tabla Clientes tambien tiene un campo llamado Id, que es de tipo INT, y para el que hemos definido como PRIMARY KEY. Recuerda, una Primary Key es el campo en una tabla que contiene valores unicos dentro de la columna y tabla y que nos sirve como clave para relacionarse con otras tablas.
Hay otros dos comandos DDL que nos permitiran modificar nuestra tabla o incluso eliminarla de nuestra base de datos, estos serian ALTER y DROP respectivamente.
Un ejemplo a la hora de utilizar ALTER podria ser el siguiente.
ALTER TABLE Clientes
ADD COLUMN Nickname NVARCHAR(50)
Este comando serviria para añadir una nueva columna llamada Nickname, a la tabla Clientes, y que es de tipo NVARCHAR.
Un ejemplo con DROP, podria ser.
DROP TABLE Clientes
Este codigo nos serviria para eliminar la tabla Clientes y todos sus datos. Este comando hay que utilizarlo con mucho cuidado puesto que permite borrar objetos de nuestra base de datos y podriamos perder informacion crucial y valiosa.
Podemos diferenciar entre operaciones DDL y DML. Las DDL o data definition languaje son las que acabamos de ver como CREATE ALTER y DROP. Mientras que las operaciones DML son data manipulation languaje, que vimos mas arriba, o CREATE READ UPDATE y DELETE.