apuntes:bbdd
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
apuntes:bbdd [2019/02/16 19:29] – Santiago Faci | apuntes:bbdd [2023/05/28 12:04] (current) – [Creación del CRUD] Santiago Faci | ||
---|---|---|---|
Line 9: | Line 9: | ||
Para el momento inicial, el de crear la Base de Datos vacía, que sirva como soporte para los datos, utilizaremos una aplicación como [[https:// | Para el momento inicial, el de crear la Base de Datos vacía, que sirva como soporte para los datos, utilizaremos una aplicación como [[https:// | ||
- | ===== Registrar información | + | ==== Registrar información ==== |
La sentencia de inserción '' | La sentencia de inserción '' | ||
Line 31: | Line 31: | ||
</ | </ | ||
- | \section{Modificar información} | + | ==== Modificar información |
- | La sentencia para modificar datos \verb UPDATE | + | La sentencia para modificar datos '' |
- | dependiendo de los campos que se indiquen en la claúsula | + | |
- | valores que serán asignados a una serie de columnas y las segundas indicarán las condiciones que cumplen las filas que se van a modificar. | + | |
- | Hay que tener en cuenta que la claúsula | + | Hay que tener en cuenta que la claúsula |
- | las filas de la tabla. | + | |
- | \begin{lstlisting}[language=sql] | + | < |
UPDATE nombre_tabla | UPDATE nombre_tabla | ||
SET columna = valor [ {, columna = valor} ] | SET columna = valor [ {, columna = valor} ] | ||
[ WHERE condiciones ] | [ WHERE condiciones ] | ||
- | \end{lstlisting} | + | </ |
- | Así, en el siguiente ejemplo, si no se especificará en la claúsula | + | Así, en el siguiente ejemplo, si no se especificará en la claúsula |
- | precio a todos los productos registrados en la Base de Datos. | + | |
Veamos algunos ejemplos: | Veamos algunos ejemplos: | ||
- | Modifica el precio de un producto para aumentarlo | + | === Modifica el precio de un producto para aumentarlo === |
- | \begin{lstlisting}[language=sql] | + | < |
UPDATE productos | UPDATE productos | ||
SET precio = precio + 10 | SET precio = precio + 10 | ||
WHERE nombre = ' | WHERE nombre = ' | ||
- | \end{lstlisting} | + | </ |
- | Modifica directamente el precio sobrescribiéndolo | + | === Modifica directamente el precio sobrescribiéndolo === |
- | \begin{lstlisting}[language=sql] | + | < |
UPDATE productos | UPDATE productos | ||
SET precio = 4.5 | SET precio = 4.5 | ||
WHERE nombre = ' | WHERE nombre = ' | ||
- | \end{lstlisting} | + | </ |
- | Modifica el precio de varios productos | + | === Modifica el precio de varios productos === |
- | \begin{lstlisting}[language=sql] | + | < |
UPDATE productos | UPDATE productos | ||
SET precio = precio * 1.25 | SET precio = precio * 1.25 | ||
WHERE precio BETWEEN 1 AND 5 | WHERE precio BETWEEN 1 AND 5 | ||
- | \end{lstlisting} | + | </ |
- | \section{Eliminar información} | + | ==== Eliminar información |
- | La sentencia para eliminar información | + | La sentencia para eliminar información |
- | Hay que tener en cuenta que, de forma similar a como ocurre con la sentencia | + | Hay que tener en cuenta que, de forma similar a como ocurre con la sentencia |
- | caso, si no se especifica, una sentencia | + | |
- | \begin{lstlisting}[language=sql] | + | < |
DELETE FROM nombre_tabla | DELETE FROM nombre_tabla | ||
[ WHERE condiciones ] | [ WHERE condiciones ] | ||
- | \end{lstlisting} | + | </ |
Veamos algunos ejemplos: | Veamos algunos ejemplos: | ||
- | Elimina el producto que se llama ' | + | === Elimina el producto que se llama ' |
- | \begin{lstlisting}[language=sql] | + | < |
DELETE FROM productos | DELETE FROM productos | ||
WHERE nombre = ' | WHERE nombre = ' | ||
- | \end{lstlisting} | + | </ |
- | Elimina los productos cuyo precio es menor que 10 | + | === Elimina los productos cuyo precio es menor que 10 === |
- | \begin{lstlisting}[language=sql] | + | < |
DELETE FROM productos | DELETE FROM productos | ||
WHERE precio < 10 | WHERE precio < 10 | ||
- | \end{lstlisting} | + | </ |
- | Elimina los productos ' | + | === Elimina los productos ' |
- | \begin{lstlisting}[language=sql] | + | < |
DELETE FROM productos | DELETE FROM productos | ||
WHERE nombre = ' | WHERE nombre = ' | ||
- | \end{lstlisting} | + | </ |
- | Elimina todos los productos | + | === Elimina todos los productos === |
- | \begin{lstlisting}[language=sql] | + | < |
DELETE FROM productos | DELETE FROM productos | ||
- | \end{lstlisting} | + | </ |
- | \section{Consultar/ | + | ==== Consultar/ |
- | La sentencia más compleja y utilizada es \verb SELECT | + | La sentencia más compleja y utilizada es '' |
- | Datos, combinándola de todas las formas posibles con otros registros de otras tablas para extraer la información y poder aprovecharla lo | + | |
- | máximo posible. | + | |
- | Veremos una versión reducida de dicha sentencia, donde podremos especificar que campos visualizar con la claúsula | + | Veremos una versión reducida de dicha sentencia, donde podremos especificar que campos visualizar con la claúsula |
- | claúsulas | + | |
- | Al igual que ocurre con \verb UPDATE | + | Al igual que ocurre con '' |
- | visualizarán todas las filas de la tabla (mostrándose solamente los campos especificados con la claúsula | + | |
- | \begin{lstlisting}[language=sql] | + | < |
SELECT columnas | SELECT columnas | ||
FROM tablas | FROM tablas | ||
[ WHERE condiciones ] | [ WHERE condiciones ] | ||
[ ORDER BY columnas_a_ordenar [ASC|DESC] ] | [ ORDER BY columnas_a_ordenar [ASC|DESC] ] | ||
- | \end{lstlisting} | + | </ |
Veamos algunos ejemplos: | Veamos algunos ejemplos: | ||
- | Muestra el nombre y el precio de todos los productos cuyo precio es mayor que 5. Muestra los resultados ordenados por el nombre del producto | + | === Muestra el nombre y el precio de todos los productos cuyo precio es mayor que 5. Muestra los resultados ordenados por el nombre del producto en orden ascendente === |
- | en orden ascendente | + | < |
- | \begin{lstlisting}[language=sql] | + | |
SELECT nombre, precio | SELECT nombre, precio | ||
FROM productos | FROM productos | ||
WHERE precio > 5 | WHERE precio > 5 | ||
ORDER BY nombre ASC | ORDER BY nombre ASC | ||
- | \end{lstlisting} | + | </ |
- | Muestra el nombre de todos los productos. Muestra los resultados en el orden en que se hayan insertado en la tabla | + | === Muestra el nombre de todos los productos. Muestra los resultados en el orden en que se hayan insertado en la tabla === |
- | \begin{lstlisting}[language=sql] | + | < |
SELECT nombre | SELECT nombre | ||
FROM productos | FROM productos | ||
- | \end{lstlisting} | + | </ |
- | Muestra el nombre y precio de los productos ' | + | === Muestra el nombre y precio de los productos ' |
- | \begin{lstlisting}[language=sql] | + | < |
SELECT nombre, precio | SELECT nombre, precio | ||
FROM productos | FROM productos | ||
WHERE precio = 10 AND nombre = ' | WHERE precio = 10 AND nombre = ' | ||
- | \end{lstlisting} | + | </ |
- | Muestra todos los campos de todos los productos | + | === Muestra todos los campos de todos los productos === |
- | \begin{lstlisting}[language=sql] | + | < |
SELECT * | SELECT * | ||
FROM productos | FROM productos | ||
- | \end{lstlisting} | + | </ |
- | \section{Acceso a una base de datos desde Java y JDBC} | + | ===== Acceso a una base de datos desde Java y JDBC ===== |
- | El acceso a Bases de Datos desde Java se hace utilizando lo que se conoce como el driver de JDBC, que es la API de Java que ofrece toda una | + | El acceso a Bases de Datos desde Java se hace utilizando lo que se conoce como el driver de JDBC, que es la API de Java que ofrece toda una serie de Clases y sus métodos para operar con Bases de Datos. |
- | serie de Clases y sus métodos para operar con Bases de Datos. | + | |
- | Java define la API para JDBC y tiene que ser cada fabricante quien defina la implementación o driver, que será el fichero que debemos | + | Java define la API para JDBC y tiene que ser cada fabricante quien defina la implementación o driver, que será el fichero que debemos incluir a nuestro proyecto para que éste pueda conectarse a un SGBD (Sistema Gestor de Bases de Datos) concreto y comunicarse con él mediante lenguaje |
- | incluir a nuestro proyecto para que éste pueda conectarse a un SGBD (Sistema Gestor de Bases de Datos) concreto y comunicarse con él mediante lenguaje SQL. | + | |
- | En nuestro caso, vamos a trabajar con \emph{SQLite}, que es un SGBD Relacional muy ligero, utilizando en pequeñas aplicaciones (y también | + | En nuestro caso, vamos a trabajar con [[https:// |
- | presente, de serie, en todos los terminales Android para dar soporte de base de datos a sus aplicaciones y a las desarrolladas por otros). | + | |
- | No es un SGBD de alto rendimiento pero es más que suficiente para realizar aplicaciones con Bases de Datos de unos cuantos cientos de MB. | + | |
- | Para comenzar a trabajar con SQLite, lo primero es descargar el driver de \url{https://bitbucket.org/ | + | Para comenzar a trabajar con SQLite, lo primero es descargar el [[https://github.com/ |
- | incluirlo al proyecto con ayuda del IDE. Lo incluiremos | + | |
- | cuando nos conectemos y comuniquemos con la Base de Datos. De forma muy similar a como hace nuestro Sistema Operativo para comunicarse con | + | |
- | los periféricos utilizando los Drivers. | + | |
- | \subsection{Conectar con una base de datos SQLite y registrar datos} | + | ==== Conectar con una base de datos SQLite y registrar datos ==== |
- | Para conectar con una Base de Datos, en este caso de \emph{SQLite}, sólo hay que cargar el driver e indicar la ubicación de la misma. | + | Para conectar con una Base de Datos, en este caso de //SQLite//, sólo hay que cargar el driver e indicar la ubicación de la misma. |
- | El siguiente ejemplo sirve como ejemplo de conexión y de comprobación de que el driver está bien cargado y todo funciona correctamente. La | + | El siguiente ejemplo sirve como ejemplo de conexión y de comprobación de que el driver está bien cargado y todo funciona correctamente. La conexión queda establecida sobre el objecto |
- | conexión queda establecida sobre el objecto | + | |
- | objeto | + | |
- | \begin{lstlisting}[language=java] | + | < |
. . . | . . . | ||
try { | try { | ||
Line 207: | Line 187: | ||
sqle.printStackTrace(); | sqle.printStackTrace(); | ||
} | } | ||
- | \end{lstlisting} | + | </ |
- | \section{PreparedStatement} | + | ===== PreparedStatement |
- | \verb PreparedStatement | + | '' |
- | encarga de ejecutar el código SQL sobre la conexión establecida y de obtener los resultados de dicha ejecución, si son necesarios. | + | |
- | \begin{lstlisting}[language=java] | + | < |
. . . | . . . | ||
// Se solicitan los datos al usuario | // Se solicitan los datos al usuario | ||
Line 227: | Line 206: | ||
sentencia.executeUpdate(); | sentencia.executeUpdate(); | ||
. . . | . . . | ||
- | \end{lstlisting} | + | </ |
- | \subsection{Registro de información} | + | ==== Registro de información |
- | \begin{lstlisting}[language=java] | + | < |
. . . | . . . | ||
// Se solicitan los datos al usuario | // Se solicitan los datos al usuario | ||
Line 246: | Line 225: | ||
sentencia.close(); | sentencia.close(); | ||
. . . | . . . | ||
- | \end{lstlisting} | + | </ |
- | \subsection{Modificar información} | + | ==== Modificar información |
- | \begin{lstlisting}[language=java] | + | < |
. . . | . . . | ||
// Se solicitan los datos al usuario | // Se solicitan los datos al usuario | ||
Line 265: | Line 244: | ||
sentencia.close(); | sentencia.close(); | ||
. . . | . . . | ||
- | \end{lstlisting} | + | </ |
- | \subsection{Eliminar información} | + | ==== Eliminar información |
- | \begin{lstlisting}[language=java] | + | < |
. . . | . . . | ||
// Se solicitan los datos al usuario | // Se solicitan los datos al usuario | ||
Line 282: | Line 261: | ||
sentencia.close(); | sentencia.close(); | ||
. . . | . . . | ||
- | \end{lstlisting} | + | </ |
- | \subsection{Consulta de información} | + | ==== Consulta de información |
- | \begin{lstlisting}[language=java] | + | < |
. . . | . . . | ||
sql = " | sql = " | ||
Line 300: | Line 279: | ||
sentencia.close(); | sentencia.close(); | ||
. . . | . . . | ||
- | \end{lstlisting} | + | </ |
- | + | ||
- | \section{Creación del CRUD} | + | |
- | El acrónimo | + | ===== Creación del CRUD ===== |
- | datos en una base de datos (INSERT, SELECT, UPDATE, DELETE). Es un acrónimo muy utilizado para hacer referencia a la operativa básica de una | + | |
- | aplicación de gestión que opera sobre una Base de Datos y realiza esas 4 operaciones sobre los datos que gestiona. | + | |
- | En este caso, consistiría en preparar una aplicación en la que se mostrara al usuario | + | El acrónimo [[https:// |
- | operaciones que hemos visto sobre un conjunto | + | |
+ | En este caso, consistiría en preparar una aplicación en la que se mostrara al usuario un menú para que pudiera llevar a cabo las 4 operaciones que hemos visto sobre un conjunto de datos. | ||
---- | ---- | ||
- | (c) 2019 Santiago Faci | + | (c) 2019-{{date> |
apuntes/bbdd.1550345361.txt.gz · Last modified: 2019/02/16 19:29 by Santiago Faci