Base de datos integrada sqlite3 base de operación de comando básico (05)

Prefacio

Los datos se utilizan ampliamente en el trabajo práctico y existen muchos productos de bases de datos, como Oracle, DB2, SQL2000 y mySQL; las bases de datos basadas en Linux integrado incluyen principalmente SQLite, Firebird, Berkeley DB y eXtremeDB.

Este artículo explica principalmente la base de datos SQLite. A través de esta pequeña base de datos integrada de código abierto, lo guiaremos para que domine algunas operaciones básicas de la base de datos. Estas operaciones son comunes en muchos sistemas. Se puede decir que puede aprenderlo todo.

SQLite

imagen

SQLite es una base de datos liviana y un sistema de administración de bases de datos relacionales compatible con ACID que está contenido en una biblioteca C relativamente pequeña.

AutorD.RichardHipp

En enero de 2000, Hipp comenzó a discutir con un colega la idea de crear una base de datos SQL integrada simple que usaría la biblioteca hash GNU DBM (gdbm) como backend y no requeriría instalación ni soporte administrativo. Posteriormente, cuando tenía tiempo libre, Hipp comenzó a implementar este trabajo y en agosto de 2000 se lanzó la versión 1.0 de SQLite.

[¡Aquí ofrezco mis rodillas a Dios!

Su objetivo de diseño es integrado y se ha utilizado en muchos productos integrados. Consume muy pocos recursos. En dispositivos integrados, sólo unos pocos cientos de K de memoria pueden ser suficientes. Puede admitir sistemas operativos convencionales como Windows/Linux/Unix y se puede combinar con muchos lenguajes de programación, como Tcl, C#, PHP, Java, etc., así como con la interfaz ODBC. También se compara con los dos. programas de código abierto Mysql y PostgreSQL Para los sistemas de gestión de bases de datos más famosos del mundo, su velocidad de procesamiento es más rápida que todos ellos.

Características de SQLite

  1. Configuración cero: no es necesario instalar ni gestionar la configuración;

  2. Una base de datos completa almacenada en un único archivo de disco;

  3. Los archivos de bases de datos se pueden compartir libremente entre máquinas con diferente orden de bytes;

  4. Admite un tamaño de base de datos de hasta 2 TB;

  5. Lo suficientemente pequeño, el código fuente completo tiene aproximadamente 30.000 líneas de código C, 250 KB;

  6. Opera con datos más rápido que las bases de datos más populares en la actualidad.

Instalar

La versión principal que se ejecuta ahora es sqlite3 y es muy conveniente instalarla en ubuntu.

sudo apt-get install sqlite sqlite3   安装应用程序
sudo apt-get install libsqlite3-dev   安装库+头文件,用代码操作数据库必须安装

Ver el número de versión: ingrese el comando sqlite3 para ingresar a la interfaz de operación, ingrese el comando .version para ver el número de versión detallado.

imagen

También puede utilizar el siguiente comando para instalar la herramienta de operación gráfica:

sudo apt-get install sqlitebrowser    图形化工具建立数据库

Además, también se puede implementar en Windows. Este artículo solo analiza el método de línea de comando para operar la base de datos en ubtuntu.

tipo de datos

Operar la base de datos implica principalmente operar tablas. Cada columna de la tabla tiene un determinado tipo de datos, como valores enteros, cadenas, booleanos, etc.

Los principales tipos de datos de Sqlite3 son los siguientes:

tipo de datos definición
Tipo de datos NULO Indica que el valor es NULL.
ENTERO Valor entero sin signo.
REAL Valor de punto flotante.
TEXTO Cadenas de texto, los métodos de codificación utilizados para el almacenamiento son UTF-8, UTF-16BE y UTF-16LE.
GOTA Almacena datos de Blob. Este tipo de datos es exactamente el mismo que los datos de entrada. 1 significa verdadero y 0 significa falso.

Al mismo tiempo, sqlite3 también acepta los siguientes tipos de datos:

tipo de datos definición
pequeño Entero de 16 bits.
entero Entero de 32 bits.
decimal(p,s) El valor exacto p se refiere a cuántos dígitos decimales hay en total y s se refiere a cuántos decimales puede haber después del punto decimal. Si no se especifica, el sistema utilizará de forma predeterminada p=5 s=0.
flotar Número real de 32 bits.
doble Número real de 64 bits.
carácter(n) Cadena de longitud n, n no puede exceder 254.
varchar(n) Una cadena cuya longitud no es fija y cuya longitud máxima es n. n no puede exceder 4000.
gráfico(n) Igual que char(n), pero su unidad es dos bytes, n no puede exceder 127. Este formulario admite fuentes de dos bytes de longitud, como los caracteres chinos.
vargráfico(n) Una cadena de dos caracteres de longitud variable con una longitud máxima de n, n no puede exceder 2000
fecha Contiene año, mes, fecha.
tiempo Contiene horas, minutos y segundos.
marca de tiempo Contiene año, mes, día, hora, minuto, segundo, milésima de segundo.

restricción

Cada columna de la tabla tiene algunos atributos restrictivos. Por ejemplo, los datos de algunas columnas no se pueden repetir y algunas limitan el rango de datos. Las restricciones se utilizan para describir con más detalle los atributos de datos de cada columna. Las restricciones comunes en las bases de datos SQLite son las siguientes:

nombre definición
NO NULO - no vacío
ÚNICO solo
CLAVE PRIMARIA Clave primaria
CLAVE EXTERNA clave externa
CONTROLAR verificación de condición
POR DEFECTO por defecto

NO NULO

Hay algunos campos que quizás no sepamos qué completar en este momento y no hay un valor predeterminado establecido para ellos. Al agregar datos, dejamos dichos campos en blanco y el sistema los considera valores NULL. Pero hay otro tipo de campo que se debe llenar con datos, si no se llena el sistema reportará un error. Estos campos se denominan campos NO NULOS y deben declararse con anticipación al definir la tabla.

ÚNICO

Además de la columna principal, también hay algunas columnas que no pueden tener valores duplicados.

CLAVE PRIMARIA

Generalmente es un número entero o una cadena, siempre que sea único. En SQLite, si la clave principal es de tipo entero, el valor de la columna puede crecer automáticamente.

CLAVE EXTERNA

Ya existe una tabla de Profesores en nuestra base de datos, si creamos otra tabla de Estudiantes, cada alumno de la tabla de Estudiantes debe corresponder a un profesor de la tabla de Profesores. Es muy sencillo, sólo necesitas crear un campo TeacherId en la tabla Students y guardar el número de Id del profesor correspondiente, de esta forma se establece una relación entre alumnos y profesores. El problema es: podemos almacenar un valor TeacherId para los estudiantes que no está en la tabla Teachers y no se encontrará el error. En este caso, puede declarar el campo TeacherId en la tabla Students como clave externa para que su valor corresponda al campo Id en la tabla Teachers. De esta manera, una vez que se almacena una identificación de maestro inexistente en la tabla Alumnos, el sistema informará un error.

Valor predeterminadoDEFAULT

Hay algunas columnas de campos especiales cuyos valores son básicamente los mismos en todos los registros. Solo se cambia a otros valores en casos individuales. Podemos establecer un valor predeterminado para dicha columna de campo.

Comprobación de estado VERIFICAR

Ciertos valores deben cumplir ciertas condiciones antes de que se les permita almacenarlos, lo que requiere el uso de esta restricción CHECK.

Comandos comunes

A continuación se presenta el uso de comandos comunes en el modo Shell.

Orden Función
.ayuda Muestra una lista de todos los comandos disponibles en el modo Shell
.base de datos Muestra información de la base de datos; contiene la ubicación de la base de datos actual
columna .modo Hace que los resultados del procesamiento de sentencias SQL se muestren alineados con columnas.
lista de modos columna
.encabezados activados/desactivados Active el interruptor de visualización del título de la columna para que los resultados de la consulta tengan títulos de columna cuando se muestren en la pantalla.
.mesas Enumere cuántas tablas hay en la base de datos actualmente abierta
.salida Salir del entorno SQLite
.esquema de alimentos Mostrar la declaración SQL cuando se creó la tabla de alimentos.
.esquema Mostrar las declaraciones cuando se crearon todas las tablas.
.nullvalue CADENA Al realizar consultas, se utiliza la cadena especificada en lugar de la cadena NULL de salida. El valor predeterminado es .nullvalue ''
.espectáculo Mostrar algunas configuraciones relacionadas con la salida definidas en el modo shell
.archivo de salida.csv Establezca el formato del archivo de salida en CSV y el nombre del archivo es file.csv
.separador , Configure la salida de datos de la columna mediante la instrucción de selección para que esté separada por ","
.salida estándar de salida Restaurar el contenido de salida al dispositivo de salida estándar (pantalla)

[Nota] Todos los comandos SQLite comienzan con ., y no hay . delante de la declaración de operación.

Ejemplos de uso

Las declaraciones de operación de la base de datos son principalmente agregar, eliminar, modificar y buscar. A continuación utilizaremos algunos ejemplos para que pueda comprender estas operaciones básicas de la base de datos.

tipo de tabla

Supongamos que queremos crear una base de datos de gestión de enseñanza jxgl.db y la tabla de estudiantes ESTUDIANTE debe almacenarse en la base de datos.

sno despega sexo sabio departamento
95001 yikou metro 21 cs
95002 peng metro 21 cs

Según nuestro sentido común, los datos de cada columna tienen las siguientes características:

  • sno ID de estudiante: un valor entero. La ID de cada estudiante es única. Las escuelas generalmente usan ID de estudiantes para distinguir a todos los estudiantes y, en general, las ID de estudiantes están aumentando, por lo que configuramos sno como clave principal;

  • nombre de nombre: generalmente una cadena, se puede repetir, pero no puede estar vacío;

  • ssex género: cadena, puede estar vacía;

  • edad sabia: valor entero, asumiendo que la edad es mayor que 14 años;

  • sdept major: cadena, puede estar vacía, aquí el valor predeterminado es 'CS'.

A continuación implementamos todas las operaciones de esta base de datos paso a paso.

Crear base de datos de gestión docente "jxgl"

Para abrir y salir de la base de datos, utilice los siguientes comandos.

imagen

Crear mesa:

CREATE TABLE IF NOT EXISTS STUDENT(Sno integer primary key,   Sname text not null,   Ssex text,Sage integer check(Sage>14),Sdept text default 'CS');

Los atributos de esta tabla son el resultado de ejecutar los atributos de la tabla en la sección anterior:

imagen

Ver tabla:

imagen

Ver ESTUDIANTE indica que la tabla ha sido creada. 【Aviso】

  1. La declaración de operación no es un comando, así que no agregue . delante de ella;

  2. La declaración de operación debe ir seguida de, al final, si falta, se debe agregar un punto y coma;

  3. Las declaraciones de operación son muy sensibles al ancho completo y medio ancho de las letras, y todos los símbolos deben usar medio ancho.

Insertar datos

La inserción de datos se implementa mediante la instrucción insertar en, como se muestra a continuación:

INSERT INTO STUDENT VALUES('95001','李勇','M',20,'CS');
INSERT INTO STUDENT VALUES('95002','刘晨','F',19,'IS');
INSERT INTO STUDENT VALUES('95003','王敏','F',18,'MA');
INSERT INTO STUDENT VALUES('95004','张立','M',18,'IS');

Los resultados de la ejecución son los siguientes:

imagen

 

Los datos insertados solo inicializan parte del valor.

A la columna que está configurada como no nula se le debe asignar un valor y el nombre de la tabla no distingue entre mayúsculas y minúsculas.

insert into student(sname,sage) values ('一口',19);

imagen

 

Ver tabla

Utilice la instrucción SELECT para ver el contenido de la tabla:

SELECT * FROM STUDENT;

El * indica ver toda la información de datos.

imagen

¿Has visto que el resultado parece incómodo? Ajustemos el formato de visualización:

sqlite> .headers on          显示列名
sqlite> .mode column         列对齐

imagen

 

Eliminar una línea de información

delete from student where sname='一口';

imagen

Como se puede ver en la imagen de arriba, el registro denominado "One Mouth" ha sido eliminado.

Modificar un determinado contenido de un registro

UPDATE student SET sage=29 WHERE sname='张立';

imagen

 

Modificar la estructura de la tabla de datos.

Para modificar la estructura de la tabla, debe utilizar la declaración ALTER TABLE. A continuación, agregamos la columna "spwd" a la tabla ESTUDIANTE, cuyo tipo de datos es TEXTO, y usamos el comando SELECT para ver el contenido de la tabla.

ALTER TABLE STUDENT ADD spwd TEXT default '123456';

imagen

 

Modificar el nombre de la tabla

alter table student rename to stu;

imagen

 

Eliminar la tabla de datos.

DROP TABLE STUDENT;

Eliminar columna

SQLite3 no implementa el comando para eliminar una columna. Para lograr esta operación, primero debe copiar la tabla a una nueva tabla, pero solo se integran las columnas requeridas y las columnas que se eliminarán no se heredan. Puede eliminar una columna de las siguientes maneras:

sqlite> create table test as select sno, sname,ssex,sage,sdept  from stu;
sqlite> drop table stu;
sqlite> alter table test rename to stu;

imagen

Como puede verse en la figura anterior, la columna spwd que acabamos de agregar se ha eliminado.

sqlite avanzado

donde cláusula infantil

¿Qué debo hacer si no quiero ver todos los datos, pero quiero ver la información de una persona específica? Tenemos que usar la cláusula donde para lograr esto. La cláusula donde se puede combinar con declaraciones de operación para procesar adiciones, eliminaciones, modificaciones y búsquedas, y es la cláusula más utilizada.

Buscar registros por nombre:

Select * from student where sname='一口';

imagen

Buscar registros según el número de estudiante:

Select * from student where sno=95001;

imagen

Encuentre registros basados ​​tanto en el nombre como en la edad:

select *from student where sname='一口' and sage=19;

imagen

Mostrar datos de dos columnas

select sno,sname from student ; 

imagen

 

Copia de seguridad y recuperación de bases de datos

Ahora asumimos que queremos hacer una copia de seguridad de los alimentos de la tabla como alimentosdb.sql y usar comandos para restaurar la base de datos. Simplemente sigue estos pasos.

sqlite>.dump       --把创建表及向表中插入记录的所有SQL语句显示在屏幕上
sqlite>.output  foodsdb.sql --指定dump命令输出到文件的文件名
sqlite>.dump        --输出创建并插入数据到基本表的SQL语句到output指定的文件
sqlite>.output stdout  --恢复输出内容到标准输出设备(屏幕)
sqlite>.dump           --此时输出的SQL语句转回到屏幕 
sqlite>Drop table foods; --删除foods表语句说明:

El Drop anterior es una declaración SQL que se utiliza para eliminar la tabla especificada. Como es una declaración SQL, termina con ";"

sqlite>.read foodsdb.sql    --执行foodsdb.sql中的包含的所有SQL语句,用来重建刚删除的4张表及相关数据
 

Bien, sigamos la operación paso a paso de Yiyijun. Básicamente, no tendrá ningún problema con las operaciones de adición, eliminación, modificación y consulta de sqlite3. También hay algunas otras cláusulas y uso de funciones en sqlite, que se introducirán en el próximo artículo.

Supongo que te gusta

Origin blog.csdn.net/weixin_41114301/article/details/133385480
Recomendado
Clasificación