Practica DB - Bases de Datos SQLite PDF
Document Details
Uploaded by SmarterHilbert
Universidad de Murcia
Tags
Summary
Este documento proporciona una guía práctica sobre las bases de datos SQLite, incluyendo cómo crear y manejar bases de datos relacionales con ejemplos de SQL. Explica el manejo de las tablas, las columnas y los tipos de datos, así como el uso de la herramienta DB Browser para SQLite.
Full Transcript
**Bases de datos SQLite** **Bases de datos relacionales: SQLite** Una base de datos relacional es un tipo especial de base de datos que organiza información en tablas relacionadas entre sí. Imagina que son hojas de cálculo interconectadas. Cada tabla almacena datos sobre un tema específico, y las...
**Bases de datos SQLite** **Bases de datos relacionales: SQLite** Una base de datos relacional es un tipo especial de base de datos que organiza información en tablas relacionadas entre sí. Imagina que son hojas de cálculo interconectadas. Cada tabla almacena datos sobre un tema específico, y las filas de cada tabla representan registros individuales. Las columnas representan las características o atributos de esos registros. Lo que hace que las bases de datos relacionales sean potentes son las relaciones entre estas tablas. Por ejemplo, una base de datos de biblioteca podría tener una tabla para libros y otra para préstamos. Al conectarlas, puedes consultar fácilmente qué libros tiene un usuario en préstamo actualmente. Las bases de datos relacionales se componen de varios elementos clave: 1. Tablas: Son el pilar fundamental y almacenan un conjunto de datos. 2. Filas (registros): Representan entidades individuales dentro de una tabla. 3. Columnas (atributos): Definen las características de cada registro en una tabla. Son como las etiquetas de las columnas en tu hoja de cálculo. 4. Claves (*primary key*): Son valores únicos que identifican a un registro específico dentro de una tabla. Son fundamentales para relacionar tablas entre sí. Es importante que cada registro de una tabla posea un identificador único o clave, ya que es a través de esta clave como vamos a poder relacionar una tabla con otra. Las relaciones entre tablas permiten a las bases de datos relacionales almacenar información compleja y organizada. SQLite es una base de datos relacional ligera y de código libre. A diferencia de las bases de datos tradicionales, SQLite no requiere un servidor independiente para funcionar, ya que se implementa como una biblioteca que se integra a la aplicación. Esto la hace ideal para su uso en dispositivos móviles y otras aplicaciones donde el espacio y los recursos son limitados. Además, SQLite almacena toda su información en un único archivo, lo que facilita su portabilidad y administración. **Creando una base de datos** Crear una base de datos SQLite con DB Browser es sencillo. Aquí tienes los pasos básicos: 1. Descargar e instalar DB Browser: a. Si aún no lo tienes, descarga e instala DB Browser for SQLite desde su sitio oficial. 2. Abrir DB Browser: b. Inicia la aplicación DB Browser. 3. Crear una nueva base de datos: c. Haz clic en \"Nueva Base de datos\". d. Selecciona la ubicación donde deseas guardar el archivo de la base de datos y dale un nombre. 4. Definir las tablas: e. Una vez creada la base de datos, se abre automáticamente la ventana "Editar la definición de la tabla" (dentro de la sección Estructura) f. Define el nombre de la tabla y añade las columnas con sus respectivos tipos de datos (véanse sección "Tipos de datos", más abajo, y video SQLite01). 5. Guardar los cambios: 6. Después de definir las tablas y columnas, haz clic en \"OK\" para guardar la estructura de la tabla. g. Ve a la pestaña \"Hoja de datos\" (Explorador de datos). h. Selecciona la tabla (pestaña desplegable "Tabla") a la que deseas añadir datos y haz clic en \"Nuevo registro" para insertar nuevos datos. **Tipos de datos a definir en las columnas** Para nuestros propósitos, son los siguientes: 1. TEXT: caracteres alfanuméricos; adecuado para nombres, comentarios, localidades, rutas de enlaces (a un archivo dentro del HD o una URL), etc. 2. INTEGER: números enteros; adecuados para identificadores únicos (*primary key*) años y otros datos numéricos con los que se quiera operar; recuerda que en las consultas se pueden incluir operaciones matemáticas. 3. BLOB (Binary Large Object): es un tipo de dato utilizado en bases de datos para almacenar grandes cantidades de datos binarios. Estos datos pueden incluir imágenes, videos, archivos de audio, documentos y otros tipos de archivos multimedia; en principio, no se recomienda almacenar BLOBs en una DB SQLite, ya que es preferible crear enlaces a ellos en un campo TEXT. Recuerda: es muy importante crear una columna INTEGER PRIMARY KEY en una tabla por varias razones: 1. **Identificación única**: Garantiza que cada registro (o fila) en la tabla tenga un identificador único, lo que facilita la referencia y manipulación de datos específicos. 2. **Índice automático**: En SQLite, una columna INTEGER PRIMARY KEY se convierte automáticamente en un índice, lo que mejora el rendimiento de las consultas. 3. **Integridad referencial**: Ayuda a mantener la integridad de los datos cuando se utilizan claves foráneas (foreign keys) para establecer relaciones entre tablas. 4. **Optimización**: Las bases de datos están optimizadas para trabajar con claves primarias, lo que puede resultar en operaciones más rápidas y eficientes. 5. **Ordenación**: Facilita la ordenación de los datos, ya que las filas pueden ser fácilmente ordenadas por la clave primaria. Como vimos en clase, la primera columna que hay que crear en una tabla es la ID, definida como INTEGER, PRIMARY KEY, AUTOINCREMENT; es decir número entero, clave primaria y autoincremental (cada vez que añades un nuevo registro le asigna un número que es el del registro anterior más uno). **La consola SQL** En la sección "Creando una base de datos" hemos visto como crear una tabla a través del interfaz gráfico de DB Browser. Pero existe otra manera más eficiente de crearla utilizando la consola SQL presente en la mayoría de los programas de gestión de bases de datos. Una consola SQL es una interfaz de línea de comandos que permite a los usuarios interactuar directamente con una base de datos utilizando el lenguaje SQL (*Structured Query Language*). Aquí tienes algunas características y usos principales: - Ejecución de consultas: Permite escribir y ejecutar comandos SQL para consultar, insertar, actualizar y eliminar datos en la base de datos. - Administración de la base de dato: Facilita tareas administrativas como la creación y modificación de tablas y otros objetos de la base de datos. - Acceso directo: Ofrece acceso directo a la base de datos sin necesidad de una interfaz gráfica compleja. Desde la consola SQL podemos crear una tabla siguiendo esta sintaxis básica (se explicó en clase): **CREATE TABLE "mujeres" (**\ **"ID\_muj"** **INTEGER PRIMARY KEY AUTOINCREMENT,**\ **"apellidos\_nombre"** **TEXT,**\ **\[etc\]**\ **);** Trabajar con sentencias SQLite (o SQL) en la consola simplifica mucho el trabajo, aunque la curva de aprendizaje sea al principio más suave que la del manejo de DB a través de un interfaz gráfico. Para un/una investigador/a el manejo de sentencias SQL proporciona infinitas posibilidades en cuanto a consultas. Para generar sentencias podemos valernos de aplicaciones de inteligencia artificial, pero, para ello, debemos tener unos conocimientos mínimos sobre SQL y su sintaxis. El almacenar, desde el inicio, los datos de una investigación en una base de datos relacional bien estructurada, supone un enorme ahorro de tiempo. Además, los datos recogidos durante la investigación pueden, una vez concluida esta, constituir un "conjunto de datos" o *data set* que puede utilizarse para crear, por ejemplo, un catálogo en línea de acceso abierto, útil para otros investigadores (es valorado como mérito). **Introducción de registros desde la consola** Se explicó y practicó en clase. **INSERT INTO \'mujeres\'**\ **(\'Apellidos, Nombre\', \'ano\_nac\', \'ano\_def\')**\ **VALUES**\ **(\'Mendelssohn, Fanny\', \'1805\', \'1847\'),**\ **(\'Schumann, Clara\', \'1819\', \'1896\'),**\ **(\'Bingen, Hildegard von\', \'1098\', \'1179\'),**\ **(\'Boulanger, Lili\', \'1893\', \'1918\'),**\ **(\'Beach, Amy\', \'1867\', \'1944\'),**\ **(\'Strozzi, Barbara\', \'1619\', \'1677\'),**\ **(\'Martínez, Marianne von\', \'1744\', \'1812\'),**\ **(\'Boulanger, Nadia\', \'1887\', \'1979\')**\ **;** **Consultas desde la consola** SELECT \*: significa que se visualizarán todos los campos definidos en la tabla. SELECT "campo 1", "campo 2": sólo se visualizarán en la consulta los campos indicados FROM "tabla": se indica la tabla sobre la que se realiza la consulta Ejemplo 1: "Visualización sólo de los campos "Apellidos\_nombre" y "actividad". **SELECT \'apellidos\_nombre\', \'actividad\'FROM \'mujeres\';** Ojo: si no se selecciona con SELECT el campo de la clave primaria o identificador único, no se permiten hacer modificaciones en los campos visualizados o seleccionados de la tabla, ni tampoco añadir nuevos registros. Ejemplo 3: "Selección de mujeres de menos de 45 años a partir de los datos 'ano\_nac' y 'ano\_def'" **SELECT \* FROM \'mujeres\' WHERE (\"ano\_def\"-\"ano\_nac\") \< 45;**\ **SELECT ID\_mu, Apellidos\_Nombre, ano\_nac, ano\_def FROM \'mujeres\' WHERE (\"ano\_def\"-\"ano\_nac\") \< 45;** (Esto es solo para consulta, no se genera una tabla; demuestra la importancia de haber definido los campos "ano\_nac" y "ano\_def" como INTEGER) **Práctica** 1. Descarga e instala SQLite Browser 2. Crea una nueva base de datos Archivo/Nueva Base de Datos (Control+N) 3. Nombra y guarda la base de datos (con la extensión.sqlite, si el sistema no le asigna una por defecto) 4. Editar la definición de la tabla\-\--\> Cancelamos porque vamos a definir la(s) tabla(s) con sentencias SQLite (o SQL) **CREATE TABLE movement (**\ **\"ID\"** **INTEGER PRIMARY KEY AUTOINCREMENT,**\ **\"Fuente\"** **TEXT,**\ **\"ID\_pieza\"** **TEXT,**\ **\"URL\_FMT\"** **TEXT,**\ **\"Titulo\_fecha\" TEXT,**\ **\"Fecha\" TEXT,**\ **\"Incipit\_txt\" TEXT,**\ **\"Nota\_inicial\"** **TEXT,**\ **\"Incipit\_mus\" TEXT,**\ **\"Pais\" TEXT,**\ **\"Comunidad\_Autonoma\" TEXT,**\ **\"Provincia\" TEXT,**\ **\"Localidad\" TEXT,**\ **\"Observaciones\" TEXT,**\ **\"Transcripción\" TEXT**\ **);**