Publicado el 2 comentarios

SQL básico. Borrar registros de una tabla.

delete

En la sección anterior vimo sel uso del comando SQL UPDATE para actualizar datos en las tablas de una base de datos. En esta sección veremos como eliminar o borrar registros o filas de una base de datos usando el comando SQL DELETE.

Borrar todas las filas o registros de una tabla con SQL.

Nota: mucha precaución con usar el siguiente comando SQL en base de datos en producción. El comando DELETE como lo vamos a ver, borra todo el contenido de la tabla. Sólo úselo si está seguro que quiere dejar vacía la tabla. Si su tabla contiene miles o millones de filas, será difícil recuperarlas.

La sintaxis del comando DELETE para borrar todo el contenido de una tabla es la siguiente:

DELETE FROM nombre-tabla;

Esta forma de ejecutar el comando DELETE, como ya hemos mencionado, borra todos los registros de la tabla indicada. Antes de verlo en la práctica vamos a crear una tabla a partir de un archivo de texto .csv (archivo delimitado por comas). Este archivo contiene información de muchos productos que nos servirán para hacer nuestras prácticas.

Convertir un archivo de texto CSV a una tabla con “DB Browser fos SQLite (DB4S)”.

Descargue el archivo productos.csv, que se encuentra enseguida, a una carpeta en su computadora, preferentemente al directorio donde tiene guardada la base de datos SQLite o el archivo SQL.

Ejecute la aplicación DB4S si no la tiene en ejecución y abra la base de datos SQLite con la que hemos estado trabajando. Seleccione del menú “File” (Archivo) la opción “Import >” (Importar) y enseguida la opción “Table for CSV file” (Tabla de un archivo CSV).

Table desde un archivo CSV.

El diálogo “Choose text files” (Selecciona archivos de texto) se abrirá. Ahí navega hasta el directorio o carpeta donde has estado trabajando, selecciona el archivo descargado “productos.csv” y oprime el botón “Abrir”.

Dialogo “Choose text files”.

Aparecerá la ventana “Import CSV file” (Importar archivo CSV). Por defecto el nombre de la tabla, “Table name” lo toma del nombre del archivo CSV, en este caso “productos”, dejaremos este nombre así. Selecciona el cuadro “Column names in first line” (Nombres de columnas en la primera fila), ya que en la primera fila del archivo CSV se encuentran efectivamente los nombres de las columnas. El resto de la opciones déjalas como aparece en la siguiente imagen u oprime el botón “OK”:

Import CSV file.

Revisa la estructura de la base de datos como lo hemos hecho antes y checa que la tabla “productos” aparezca y observa que campos o columnas contiene.

Aparecerá la tabla “productos”.

Si gustas puedes ver el contenido de la tabla como lo hemos hecho antes desde la pestaña “Browse Data” y seleccionando la tabla “productos” de la lista “Table”:

Desplegando contenido de la tabla “productos”.

Como acabamos de agregar una nueva tabla con datos, no olvides grabar la base de datos. Ahora escribe el siguiente comando en el archivo SQL que hemos estado usando y ejecútalo, pero NO grabes aún los cambios en la base de datos:

Borra todos los registros.

Consulta en contenido de la tabla, verás que ya no existe ningún registro en “productos”:

Tabla “productos” vacía.

La razón por la que no debes grabar aún los cambios en la base de datos es porque vamos a ver otra herramienta de la aplicación DB4S, la herramienta “Revert Changes” (Revertir Cambios). Esta herramienta se encuentra al lado del botón “Write Changes” que usamos para guardar los cambios a la base de datos, sirve para descartar los últimos cambios que hicimos en la base de datos después de la última grabación. Al igual qu eel botón de grabar, se activa cuando se detecta algún cambio en la base de datos. El último cambio que hicimos fue borrar todos los registros de la tabla “productos” y aún no hemos grabado. Oprime el botón “Revert Changes”. aparecerá un diálogo de confirmación preguntando que si en verdad quieres deshacer los últimos cambios hechos a la base de datos después de la última vez que se guardó. Oprime el botón “Yes” (Sí).

Deshaciendo los últimos cambios a la base de datos.

Si consultas el contenido de la tabla productos, veras que todas las filas que se habían borrado, aparecen de nuevo y el botón “Revert Changes” se desactivará.

Registros recuperados.

Otros motores de base de datos como ORACLE o Postgresql entre otras cuentan con la siguiente instrucción SQL:

TRUNCATE TABLE nombre-tabla;

Esta instrucción tiene la misma función que la instrucción DELETE que acabamos de ejecutar para borrar todos los registros de la tabla, sin embargo es más óptima y rápida para borrar todos los registros cuando la tabla contiene miles o millones de registros. El lenguaje SQL de SQLite no cuenta con esta instrucción.

Borrar una o varias filas de una tabla mediante SQL.

Para borrar uno o varios registros la vez se utiliza la siguiente sintaxis del comando DELETE:

DELETE FROM nombre-tabla WHERE condición.

Como se puede observar se agrega la cláusula “WHERE condición” a la sentencia DELETE. Veamos un ejemplo. Del listado del contenido de mi tabla producto en la pestaña “Browse Data” anotaré el valor de la columna “id_producto” de la primera fila que me aparece, en mi caso el valor es 1. Yo se de antemano que los valores de “id_producto” no se repiten, es decir, cada registro o fila tiene un valor “id_producto” diferente. En tu caso la primera fila puede tener un valor diferente, anota el valor “id_producto” que te aparezca en la primera fila.

Obtener valor campo id_producto.

Escribe y ejecuta la siguiente sentencia y graba la base de datos (reemplaza el valor de 1 por el valor que hayas anotado anteriormente):

Borra un sólo registro.

Si todo va bien observaras el siguiente texto en el área de mensajes:

Resultado de la ejecución del DELETE.

Lo subrayado con rojo, “1 rows affected”, indica que sólo una fila fue afectada por la ejecución del comando, es decir, sólo un registro fue borrado. Comprueba que el registro fue borrado. En mi caso, la fila con el valor 1 en la columna “id_producto” ya no aparece. Graba los cambios.

Un registro borrado.

Ahora desliza hacia la derecha la barra de desplazamiento que se encuentra en la parte de abajo del área donde aparecen los datos de la pestaña “Browse Data” , hasta visualizar el campo “id_marca”. Este campo tiene un número que identifica la marca del producto, verás que en algunsa filas el valor de “id_marca” se repite. Esto indica que esos productos pertenecen a una misma marca. En mi caso el “id_marca” que se repite varias veces en el listado de registros es el número 39.

Mostrando columna “id_marca”.

Para borrar todos los registros que tengan el valor 39 en la columna “id_marca” utilizaremos el siguiente comando SQL:

Borrando varios registros.

Ejecuta el comando y observa cuántas filas o registros fueron borradas. En mi caso fueron borradas 48 filas.

Total de filas borradas.

Revisa el contenido de la tabla y verás que ya no existen productos con valor 39 en la columna “id_marca”. Graba los cambios, tanto en la base de datos como en el archivo SQL.

En esta sección vimos el uso de la instrucción DELETE. En la sección siguiente veremos el uso de la instrucción SELECT para la consulta de registros de las tablas.

¡Hasta la próxima!

IR A LA PAGINA DEL CURSO.

Publicado el 4 comentarios

SQL básico. Actualizar datos en una tabla con SQL.

En esta sección vamos a ver cómo se actualizan o modifican los datos de una o varias columnas de uno o varios registros en una tabla mediante una sentencia SQL.

Ejecuta la aplicación DB4S y abre la base de datos SQLite que has usado anteriormente. También abre el archivo SQL que has creado como vimos en la sección anterior.

Para actualizar los de una columna de una tabla con SQL usamos la siguiente sintaxis básica del comando UPDATE:

UPDATE nombre-tabla SET nombre-columna = expresión-valida;

Aunque la expresión o sintaxis de UPDATE más usada es:

UPDATE nombre-tabla SET nombre-columna = expresión-valida WHERE condición;

¿Cuál es la diferencia entre la primera forma y la segunda? La primera forma actualizaría el valor de la columna dada de todas las filas o registros de la tabla, mientras que la segunda forma actualizaría sólo los registros que cumplan la condición dada. Veamos un ejemplo de ambas. Supongamos que queremos cambiar el valor de “fecha_nacimiento” por “01/01/1980”. Actualmente las filas de la tabla “persona” tienen los siguientes valores:

Valores d elas filas de la tabla “persona”.

Escribe y ejecuta la siguiente instrucción:

Actualiza un campo de todas la filas.

Revisa el contenido de la tabla, se debe ver así:

El campo fecha_nacimiento modificado.

Como puedes observar, el valor del campo o columna “fecha_nacimiento” de todas las filas (en este caso dos) fue modificado con el valor que le especificamos en la sentencia SQL: ’01/01/1980′. A veces es deseable este comportamiento cuando queremos cambiar el valor de una columna en toda la tabla, pero en el ejemplo de nuestra tabla “persona” no. Cada registro debe tener su fecha de nacimiento correspondiente. No olvides grabar tanto la base de datos como el archivo SQL.

Vamos ahora usar la segunda forma básica del comando UPDATE. Escribe y ejecuta la siguiente sentencia para regresar el valor correcto de la fecha de nacimiento al registro con valor 1 en la “clave” :

Actualiza sólo la fila que cumpla con la condición dada.

La sentencia anterior sólo actualizara el valor de la columna “fecha_nacimiento” del registro que cumpla la condición de que su valor en la columna “clave” sea igual a uno (clave = 1). Revisa nuevamente los datos de la tabla.

Sólo una fila actualizada.

En nuestra tabla sólo existe un registro o fila que cumple la condición y sólo a es registro se le modificó el valor de la columna “fecha_nacimiento”. Si hubieran habido más registros con “clave = 1” todos esos registros se hubieran actualizado. La instrucción UPDATE permite actualizar también el valor de varias columnas a la vez. Veamos la sintaxis.

UPDATE nombre-tabla SET campo-1 = expersión-1, campo-2 = expresión-2, compo-n = expresión-n WHERE condición;

También en esta forma la parte “WHERE condición” e la sentencia UPDATE es opcional, puede o no puede ir. Pero recuerde, si no se le agrega una condición, se actualizarán los campos especificados de todos los registros de la tabla con los valores indicados.

Escribe y ejecuta la siguiente sentencia:

Actualizando dos campos a la vez.

Revise nuevamente los valores de la tabla.

Datos actualizados de dos columnas.

Como puede observar, se han actualizado los valores de fecha de nacimiento y curp con una sola instrucción UPDATE y sólo del registro con la clave igual a dos. Guarde la base de datos y el archivo SQL. En esta sección vimos como la sentencia de SQL UPDATE sirve para actualizar los valores de una o varias columnas de una o varias filas en nuestra tabla. En la próxima sección veremos como borrar registros o filas de una tabla con SQL.

¡Hasta pronto!

IR A LA PAGINA DEL CURSO.

Publicado el 3 comentarios

SQL básico. Agregar datos a una tabla con SQL.

Enseguida veremos cómo agregar datos a una tabla mediante sentencia SQL. Pero antes vamos a ver como abrir una base de datos y un archivo de SQL existente en el caso de que hayamos cerrado el programa o aplicación DB4S.

Abriendo una base de datos con DB4S.

En caso de que hayamos cerrado la aplicación, podemos volver a ejecutar la aplicación y volver abrir la base de datos SQLite con la que estábamos trabajando, de la siguiente manera:

  • Ejecuta la aplicación como ya hemos visto anteriormente. Vaya al menú “File” (Archivo) y busque en la parte abajo del panel que se abre, antes de la opción “Exit” (Salir), en la lista de la bases de datos que recientemente se han abierto, el nombre de la base de datos que quiere volver a abrir y de clic sobre ella.
Abriendo base de datos SQLite previamente abierta.

Si no apareciera en esa lista la base de dato sSQLite deseada proceda con lo siguiente:

  • En el mismo menú “File”, seleccione la opción “Open Database…”. aparecerá el diálogo “Choose a database file” (Selecciones un archivo de base de datos).
Abriendo una base de datos existente.
  • Navegue a la carpeta donde guardo la base de datos SQLite y seleccione el archivo de base de datos. Presione “Abrir”.
Seleccionando la base de datos a abrir.
  • En la parte superior de la aplicación, al lado del título, deberá aparecer el nombre y ruta de la base de datos actualmente abierta.
Base de datos abierta.

Muy bien, ya hemos abierto nuestra base de datos.

Abriendo un archivo sql existente con DB4S.

Para abrir el archivo SQL o script SQL que anteriormente habíamos grabado procedemos de la siguiente manera:

  • Seleccionamos la pestaña “Execute SQL”, y de su barra de herramientas, seleccionamos la herramienta “Open SQL file(s)” (Abrir archivo(s) SQL) dando clic sobre ella. Se abrira el diálogo “Select SQL file to open” (Seleccione archivo SQL a abrir).
Abriendo archivo SQL.
  • En el diálogo, navegue a la carpeta donde se encuentra el archivo SQL y selecciónelo. Enseguida oprima el botón “Abrir”.
Abriendo archivo SQL.
  • Si todo se hizo correctamente, aparecera una pestaña con el nombre del archivo y las instrucciones SQL que hemos escrito dentro de él.
Archivo SQL abierto.

Una vez visto cómo se abre tanto una base de datos SQLite existente así como un archivo SQL, pasamos a ver cómo agregar datos a una tabla mediante instrucciones SQL.

Agregar datos a una tabla con SQL: el comando INSERT.

La forma o sintaxis básica del comando SQL para agregar datos a una tabla es la siguiente:

INSERT INTO nombre-tabla ( nombre-columna-1, nombre-columna-2, …nombre-columna-n ) VALUES ( expresion-1, expresion-2, …expresion-n );

La instrucción INSERT agrega o “inserta” un registro o fila a una tabla. Vamos a crear la sentencia para agregar un registro o fila a nuestra tabla “persona”. La estructura de nuestra tabla “persona” luce así:

Estructura e la tabla persona”.

Vamos al final de nuestro archivo SQL y escribimos la siguiente sentencia:

Sentencia INSERT.

Esta instrucción “inserta” una nueva fila o registro a la tabla “persona” a las columnas o campos, separados por comas, que parecen entre los primeros paréntesis y le asigna los valores (VALUES) que aparecen separados por comas en el segundo par de paréntesis. Los valores a insertar deben coincidir con la posición, tipo de dato y número de la lista de los nombres de las columnas. Los valores numéricos, en este caso INTEGER, se escriben tal cual (la columna clave es de tipo INTEGER), mientras que los tipo de datos TEXT se escriben siempre entre comillas simples.

Al campo llamado “clave” le asignará el valor de 1, al “nombre” le asignará el valor JORGE, y así sucesivamente. Si el número de campos difiere del número de valores a insertar, la sentencia marcará un error. También es importante que los valores a asignar coincida con el tipo de dato de las columnas, si no marcaría un error.

Ejecute la sentencia como lo hemos hecho anteriormente. Recuerde de seleccionar sólo esta sentencia. Revise el mensaje que arroja para descartar posibles errores. Si ocurre algún error revise detenidamente la sentencia escrita.

Para comprobar que el registro o fila fue insertado correctamente nos iremos a la pestaña “Browse Data”. en esta pestaña podemos ver gráficamente el contenido de las tablas que tengamos en la base de datos. En la lista “Table” buscamos y seleccionamos la tabla de la cual queremos visualizar los datos que contiene. en nuestro caso “persona” (como es la única tabla que tenemos aparecerá seleccionad por defecto). En la parte de abajo aparecerán los datos en forma de una tabla, con los nombres de las columnas como encabezados y los valores de cada una de los registros insertadas en forma de filas, como se muestra en la imagen siguiente.

Mostrando el registro insertado.

Los valores deben corresponder a los valores que le asignamos en nuestra instrucción INSERT. El orden de los nombres en la lista de columnas de la instrucción INSERT no necesariamente deben de ir en el orden de los campos en la tabla, ni es necesario que se especifiquen todos a menos que los campos cuenten con restricciones que por el momento no es el caso. Más adelante veremos como definir una tabla con restricciones en sus campos. Una restricción e s, por ejemplo, indicar que un cierto campo o columna no puede contener el valor “vacío” o “nulo”. Más adelante tocaremos este tema.

Escribe, al final del archivo SQL, este otro ejemplo de la sentencia INSERT:

Insertando otro registro a la tabla “persona”.

Ejecuta la sentencia anterior y ve nuevamente el contenido de la tabla en la pestaña “Browse Data” (Ver Datos). No olvides grabar tanto el archivo SQL como la Base de Datos para no perder los cambios.

Tabla con dos registros insertados.

Puedes observar que aunque los nombres de los campos o columnas no se escribieron en el orden que aparecen en la tabla al momento de insertar el registro, los valores aparecen en la columna correcta. También podrás observar que como en la lista de columnas del INSERT no se especificaron los campos “fecha_nacimiento” y “curp”, estos campos fueron asignados con el valor “NULL”. Este valor es un valor especial en en lenguaje SQL, digamos que el campo esta vacío o sin valor alguno. Con esto concluimos que no importa en que orden se escriban los nombres de las columnas en la lista de columnas del comando INSERT y si se escriben todos los campos de la tabla o sólo algunos. Lo importante es que los valores de los campos en la lista de valores del comando INSERT coincidan con el orden y tipo de dato de la lista de columnas que aparecen en el comando.

Ya insertamos o agregamos registros a nuestra tabla. ¿Que hacemos si el valor de alguna columna está equivocado o quiero agregar la fecha de nacimiento o el curp al registro que no lo tienen? Eso lo veremos en la siguiente sección.

¡Hasta pronto!

IR A LA PAGINA DEL CURSO.