SQLite INSERTAR, ACTUALIZAR, ELIMINAR consulta con ejemplo

Las clรกusulas de modificaciรณn de datos en SQLite son declaraciones INSERTAR, ACTUALIZAR y ELIMINAR. Se utiliza para insertar nuevas filas, actualizar valores existentes o eliminar filas de la base de datos.

Tenga en cuenta que, para todos los ejemplos siguientes, debe ejecutar sqlite3.exe y abrir una conexiรณn a la base de datos de muestra como se indica a continuaciรณn:

Paso 1) En este paso,

  1. Abra Mi PC y navegue hasta el siguiente directorio โ€œC:\sqlite"Y
  2. Luego abre โ€œsqlite3.exe"

SQLite Consulta: INSERTAR, ACTUALIZAR, ELIMINAR

Paso 2) Abre la base de datos โ€œTutorialesSampleDB.db" mediante el siguiente comando:

.open TutorialsSampleDB.db

SQLite Consulta: INSERTAR, ACTUALIZAR, ELIMINAR

Ahora estรก listo para ejecutar cualquier tipo de consulta en la base de datos.

SQLite INSERT

SQLite INSERT se utiliza para insertar registros en una tabla especรญfica de la base de datos. tienes que usar la clรกusula 'INSERT'. La sintaxis de la clรกusula INSERT es la siguiente:

SQLite INSERT

  • Despuรฉs de la clรกusula INSERT, debe indicar en quรฉ tabla necesita insertar los valores.
  • Despuรฉs del nombre de la tabla en la que escribe la lista de columnas en las que desea insertar los valores.
  • Puede ignorar el nombre de las columnas y no escribirles.
  • Si no escribe el nombre de las columnas, los valores se insertarรกn en todas las columnas que se encuentran en la tabla con el mismo orden, las columnas estรกn definidas en la tabla.
  • Despuรฉs de la clรกusula VALUES, debe enumerar los valores que se insertarรกn.
  • Cada clรกusula INSERT inserta solo una fila. Si desea insertar varias filas, debe escribir varias clรกusulas INSERT, una para cada fila.

SQLite Insertar ejemplo

En el siguiente ejemplo, insertaremos 2 filas en la tabla de estudiantes, una para cada estudiante:

INSERT INTO Students(StudentId, StudentName, DepartmentId, DateOfBirth)
              VALUES(11, 'Ahmad', 4, '1997-10-12');

INSERT INTO Students VALUES(12, 'Aly', 4, '1996-10-12');

Esto deberรญa ejecutarse correctamente y no hay ningรบn resultado para esto:

SQLite recuadro

Esto insertarรก dos estudiantes:

  • El primer estudiante con StudentId=11, StudentName = Ahmad, DepartmentId = 4 y DateOfBirth = 1997-10-12.
  • El segundo estudiante con StudentId=12, StudentName = Aly, DepartmentId = 4 y DateOfBirth = 1996-10-12โ€ฒ.

En la primera declaraciรณn, enumeramos los nombres de las columnas "ID de estudiante, nombre de estudiante, ID de departamento, fecha de nacimientoโ€œ.Sin embargo, en la segunda declaraciรณn, no lo hicimos.

Los cuatro valoresโ€12, 'Aly', 4, '1996-10-12'โ€se insertarรก en las cuatro columnas de la tabla Estudiantes en el mismo orden en que se definen las columnas.

Ahora, verifiquemos que los dos estudiantes se insertaron en la tabla Estudiantes ejecutando lo siguiente pregunta:

SELECT * FROM Students;

Luego deberรญas ver los dos estudiantes devueltos por esa consulta de la siguiente manera:

SQLite recuadro

SQLite Actualizar

SQLite La consulta UPDATE se utiliza para modificar los registros existentes en una tabla. Puede utilizar la clรกusula WHERE con la consulta UPDATE para actualizar las filas seleccionadas. La clรกusula UPDATE actualiza una tabla modificando un valor de una columna especรญfica. La siguiente es la sintaxis de la clรกusula UPDATE:

SQLite Actualizar

Como sigue:

  • Despuรฉs de la โ€œclรกusula de actualizaciรณnโ€, debes escribir el nombre de la tabla a actualizar.
  • Debe escribir una โ€œclรกusula SETโ€ que se utiliza para escribir el nombre de la columna a actualizar y el valor a actualizar.
  • Puede actualizar mรกs de una columna. Puedes utilizar una coma entre cada lรญnea.
  • Puede especificar una clรกusula WHERE para especificar solo algunas filas. Solo se actualizan las filas que la expresiรณn evalรบa como verdadera. Si no especificรณ una clรกusula WHERE, se actualizarรกn todas las filas.

SQLite Ejemplo de actualizaciรณn

En la siguiente declaraciรณn UPDATE, actualizaremos el DepartmentId del Estudiante con StudentId = 6 para que sea 3:

UPDATE Students
SET DepartmentId = 3 
WHERE StudentId = 6;

Esto deberรญa ejecutarse correctamente y no deberรญa obtener ningรบn resultado:

SQLite Actualizar

En la clรกusula ACTUALIZAR, especificamos que queremos actualizar la tabla Estudiantes.

  • En la clรกusula WHERE, filtramos a todos los estudiantes para seleccionar solo la fila para StudentId = 6.
  • La clรกusula SET actualizarรก el valor del ID de departamento para los estudiantes seleccionados a 3.

Ahora, verifiquemos que el estudiante con ID 6 estรฉ actualizado, ejecutando el siguiente comando:

SELECT * FROM Students WHERE StudentId = 6;

Ahora deberรญa ver que el valor del Id. del departamento ahora es 3, como se muestra a continuaciรณn:

SQLite Actualizar

SQLite Eliminar

SQLite La consulta DELETE se utiliza para eliminar registros existentes de una tabla especificada. Puede utilizar la clรกusula WHERE con consultas DELETE para eliminar las filas seleccionadas.

La clรกusula DELETE tiene la siguiente sintaxis:

SQLite Eliminar

  • Debe escribir un nombre de tabla despuรฉs de la clรกusula DELETE FROM, de la cual desea eliminar registros. (Nota: que el Clรกusula DELETE se utiliza para eliminar algunos registros de una tabla o eliminar todos los registros y no eliminarรก la tabla en sรญ. sin embargo, el clรกusula de caรญda se utiliza para eliminar toda la tabla con todos los registros que contiene.)
  • Si escribe la clรกusula DELETE como esta โ€œBORRAR DEL gurรบโ€, esto eliminarรก todos los registros de la tabla โ€œgurรบโ€.
  • Puede especificar una condiciรณn WHERE con una expresiรณn si desea eliminar algunas filas especรญficas. Solo se eliminarรกn las filas cuya expresiรณn se evalรบe como verdadera. Por ejemplo, โ€œBORRAR DEL gurรบ DONDE id > 5โ€: esto eliminarรก solo los registros que tengan una identificaciรณn mayor que 5.

Ejemplo

En la siguiente declaraciรณn, eliminaremos dos estudiantes con StudentId 11 y 12:

DELETE FROM Students WHERE StudentId = 11 OR StudentId = 12;

La expresion "ID de estudiante = 11 O ID de estudiante = 12โ€serรก vรกlido solo para los estudiantes con ID 11 y 12. Por lo tanto, la clรกusula DELETE se aplicarรก a ambos y los eliminarรก รบnicamente.

Este comando deberรญa ejecutarse correctamente y no deberรญa obtener ningรบn resultado como el siguiente:

SQLite Eliminar

Puede verificar que se eliminaron los dos estudiantes seleccionando todos los registros de la tabla Estudiantes de la siguiente manera:

SELECT * FROM Students;

No deberรญas ver a los dos estudiantes con ID 11 y 12 de la siguiente manera:

SQLite Eliminar

SQLite Clรกusula de conflicto

Supongamos que tiene una columna que tiene una de las siguientes restricciones: UNIQUE, NOT NULL, CHECK o PRIMARY KEY. Y luego intenta insertar o actualizar un valor en esa columna con un valor que entra en conflicto con esta restricciรณn.

Por ejemplo, si una columna tiene una restricciรณn รšNICA e intentรณ insertar un valor que ya existe (un valor duplicado), lo que entra en conflicto con la restricciรณn รšNICA. Luego, la clรกusula CONFLICTO le permite elegir quรฉ hacer en tales casos para resolver este conflicto.

Antes de continuar explicando cรณmo la clรกusula CONFLICTO resuelve el conflicto. Debe comprender quรฉ es una transacciรณn de base de datos.

Transacciรณn de base de datos

El tรฉrmino transacciรณn de base de datos es una lista de SQLite Operaciones (insertar, actualizar o eliminar). La transacciรณn de la base de datos debe ejecutarse como una unidad, ya sea que todas las operaciones se ejecuten correctamente o no se ejecute ninguna. Todas las operaciones se cancelarรกn si una de ellas no se ejecuta.

Ejemplo de una transacciรณn de base de datos

La transacciรณn para transferir dinero de una cuenta bancaria a otra implicarรก un par de actividades. Esta operaciรณn de transacciรณn incluye retirar dinero de la primera cuenta y depositarlo en otra cuenta. Esta transacciรณn debe completarse o cancelarse por completo y no fallar a mitad de camino.

Aquรญ estรก la lista de cinco resoluciones que puede elegir en la clรกusula CONFLICTO:

  1. RETROCEDER โ€“ esto revertirรก la transacciรณn en la que el actual SQLite declaraciรณn que tiene el conflicto (cancelarรก toda la transacciรณn). Por ejemplo, si estรก intentando actualizar 10 filas y la quinta fila tiene un valor que entra en conflicto con una restricciรณn, no se actualizarรก ninguna fila y las 10 filas permanecerรกn iguales. Se arrojarรก un error.
  2. ABORTAR โ€“ esto abortarรก (cancelarรก) la actual SQLite Solo la declaraciรณn que tiene el conflicto y la transacciรณn no se cancelarรก. Por ejemplo, si estรก intentando actualizar 10 filas y la quinta fila tiene un valor que entra en conflicto con una restricciรณn, entonces solo no se actualizarรก el quinto valor, pero sรญ las otras 9 filas. Se arrojarรก un error.
  3. FALLAR - aborta la corriente SQLite declaraciรณn que tiene el conflicto. Sin embargo, la transacciรณn no continuarรก, pero se confirmarรกn los cambios realizados en las filas anteriores a la fila que tiene el conflicto. Por ejemplo, si estรก intentando actualizar 10 filas y la quinta fila tiene un valor que entra en conflicto con una restricciรณn, solo se actualizarรกn las 4 filas y la otra no. Se arrojarรก un error.
  1. IGNORAR โ€“ esto omitirรก la fila que contiene la violaciรณn de la restricciรณn y continuarรก procesando las otras filas siguientes de la SQLite declaraciรณn. Por ejemplo, si estรก intentando actualizar 10 filas y la quinta fila tiene un valor que entra en conflicto con una restricciรณn, solo se actualizarรกn las 4 filas y la otra no. No continuarรก para actualizar otras filas y se detendrรก en la fila que tiene el valor de conflicto. No se generarรก ningรบn error.
  1. SUSTITUIR โ€“ depende del tipo de restricciรณn que tiene la violaciรณn:
  • Cuando hay una violaciรณn de la restricciรณn UNIQUE o PRIMARY KEY. REPLACE reemplazarรก la fila que causa la infracciรณn con la nueva fila insertada o actualizada.
  • Cuando hay una violaciรณn de la restricciรณn NOT NULL, la clรกusula REPLACE reemplazarรก el valor NULL con el valor predeterminado de esa columna. Si la columna no tiene un valor predeterminado, entonces SQLite abortarรก la declaraciรณn (la declaraciรณn serรก cancelada)
  • SI se produce la infracciรณn de la restricciรณn CHECK, la clรกusula serรก abortada.

Nota: Las 5 resoluciones anteriores son opciones sobre cรณmo desea resolver el conflicto. Puede que no necesariamente lo que es aplicable para resolver un conflicto sea aplicable para resolver otros tipos de conflictos.

Cรณmo declarar la clรกusula CONFLICTO

Puede declarar la clรกusula ON CONFLICT cuando defina una restricciรณn para una definiciรณn de columna dentro de la clรกusula CREATE TABLE. Utilice la siguiente sintaxis:

SQLite Clรกusula de conflicto

Puede elegir una de las cinco resoluciones para resolver el conflicto como se explicรณ anteriormente.

SOBRE EL CONFLICTO IGNORAR Ejemplo

Paso 1) Cree un nuevo asunto de tabla de la siguiente manera:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT IGNORE,
    [SubjectName] NVARCHAR NOT NULL
);

Observe que hemos definido una restricciรณn PRIMARY KEY en la columna SubjectId. La restricciรณn de clave principal no permitirรก que se inserten dos valores duplicados en la columna SubjectId, por lo que todos los valores de esa columna deben ser รบnicos. Ademรกs, observe que elegimos que la resoluciรณn de un conflicto sea โ€œIGNORAR".

El comando deberรญa ejecutarse correctamente y no deberรญa aparecer ningรบn error:

SOBRE EL CONFLICTO IGNORAR Ejemplo

Paso 2) Ahora, insertemos algunos valores en los nuevos asuntos de la tabla, pero con un valor que viole la restricciรณn de la clave principal:

INSERT INTO Subjects VALUES(1, 'Algebra');
INSERT INTO Subjects VALUES(2, 'Database Course');
INSERT INTO Subjects VALUES(2, 'Data Structures');
INSERT INTO Subjects VALUES(4, 'Algorithms');

En esta declaraciรณn INSERT, intentamos insertar dos cursos con el mismo ID de sujeto de clave principal 2, lo cual es una violaciรณn de la restricciรณn de clave principal.

Los comandos deberรญan ejecutarse correctamente y no deberรญa aparecer ningรบn error, como se muestra a continuaciรณn:

SOBRE EL CONFLICTO IGNORAR Ejemplo

Paso 3) Seleccione todos los temas de la tabla de la siguiente manera:

SELECT * FROM Subjects;

Esto le darรก la lista de temas:

SOBRE EL CONFLICTO IGNORAR Ejemplo

Observe que solo se insertaron tres temas โ€œCurso de รlgebra, Bases de Datos y Algorithmsโ€en lugar de 4 filas.

La fila que tiene el valor que viola la restricciรณn de clave principal, que es "Estructuras de datos", se ignorรณ y no se insertรณ. Sin embargo, SQLite continรบa ejecutando otras declaraciones despuรฉs de esa fila.

Paso 4) ELIMINE la tabla subject para crearla nuevamente con una clรกusula ON CONFLICT diferente para el siguiente ejemplo ejecutando el siguiente comando:

DROP TABLE Subjects;

El comando soltar elimina toda la tabla. Los asuntos de la tabla ahora no existen.

EN CONFLICTO REEMPLAZAR Ejemplo

Paso 1) Cree un nuevo asunto de tabla de la siguiente manera:

CREATE TABLE [Subjects] (  
    [SubjectId] INTEGER NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
    [SubjectName] NVARCHAR NOT NULL
);

Observe que definimos una restricciรณn PRIMARY KEY en la columna SubjectId. La restricciรณn de clave principal no permitirรก que se inserten dos valores duplicados en la columna SubjectId, por lo que todos los valores de esa columna deben ser รบnicos.

Ademรกs, observe que elegimos una opciรณn de resoluciรณn de conflictos para ser "SUSTITUIRโ€œ. El comando deberรญa ejecutarse correctamente y no deberรญa aparecer ningรบn error:

EN CONFLICTO REEMPLAZAR Ejemplo

Paso 2) Ahora, insertemos algunos valores en la nueva tabla Asuntos, pero con un valor que viola la restricciรณn de clave principal:

INSERT INTO Subjects VALUES(1, 'Algebra');
INSERT INTO Subjects VALUES(2, 'Database Course');
INSERT INTO Subjects VALUES(2, 'Data Structures');
INSERT INTO Subjects VALUES(4, 'Algorithms');

En esta declaraciรณn INSERT, intentamos insertar dos cursos con el mismo ID de sujeto de clave principal 2, lo cual es una violaciรณn de la restricciรณn de clave principal.

Los comandos deberรญan ejecutarse correctamente y no deberรญa aparecer ningรบn error, como se muestra a continuaciรณn:

EN CONFLICTO REEMPLAZAR Ejemplo

Paso 3) Seleccione todos los temas de la tabla de la siguiente manera:

SELECT * FROM Subjects;

Esto le darรก la lista de temas:

EN CONFLICTO REEMPLAZAR Ejemplo

Observe que solo se insertaron tres temas โ€œรlgebra, estructuras de datos y Algorithmsโ€mientras que intentamos insertar 4 filas.

La fila que tiene el valor que viola la restricciรณn de clave principal, que es "Estructuras de datos"reemplazรณ el valor"Curso de base de datos" de la siguiente manera:

  • Las dos primeras declaraciones de inserciรณn funcionan bien sin problemas. Se insertarรกn dos materias รlgebra y Curso de Bases de Datos con ids 1, 2.
  • Al SQLite intenta ejecutar la tercera instrucciรณn de inserciรณn con SubjectId 2 y SubjectName "Estructuras de datosโ€œ, descubre que ya existe un asunto con SubjectId = 2. Lo cual es una violaciรณn de la restricciรณn de clave principal definida en la columna SubjectId.
  • SQLite elegirรก una resoluciรณn REEMPLAZAR para este conflicto. Reemplaza el valor que ya existe en la tabla de sujetos con el nuevo valor de la declaraciรณn de inserciรณn. Entonces el "Curso de base de datos" Nombre del Asunto serรก reemplazado por "Estructuras de datos" Nombre del tema.

Resumen

Las clรกusulas INSERT, UPDATE y DELETE se utilizan para modificar los datos en el SQLite base de datos de CRISPR Medicine News. La clรกusula CONFLICT es una clรกusula poderosa para resolver cualquier conflicto entre los datos y los datos a modificar.

Resumir este post con: