El fundamento de nuestro universo digital es una acumulación de datos que aumenta sin cesar. Como consecuencia, los sistemas de gestión de bases de datos como MySQL son los elementos centrales de Internet y del planeta interconectado. Estos dejan procesar grandes cantidades de datos de forma electrónica, archivarlos con congruencia y guardarlos de forma permanente. Para esto, los datos complejos se descomponen en cantidades manejables y, en función de las necesidades, se relacionan entre sí. En nuestro manual de MySQL para principiantes te presentamos los principios básicos de la gestión de bases de datos y te mostramos a través de ejemplos cómo puedes optimizar la gestión de los datos de tu proyecto web con MySQL.
MySQL se cuenta al lado de Oracle y Microsoft SQL Server entre los
sistemas de gestión de bases de datosrelacionales más populares a escala mundial (encuentras un listado actual en). El software desarrollado en 1994 por la compañía MySQL AB cuenta hoy en día con el patrocinio de
Oracle Corporationy se comercializa bajo un
sistema de licencias dual.Asimismo, además de la edición Enterprise dueña, Oracle ofrece una versión de código abierto con una licencia GPL.
Esta licencia dual ofrece a las empresas la posibilidad de desarrollar aplicaciones propias basándose en MySQL sin tener que someterlas a la licencia de código abierto. En la comunidad open source, no obstante, la absorción de MySQL por parte de Oracle es objeto de críticas.
MySQL está escrito en C y C++ y, además, está proveído de un
analizador sintáctico de SQLbasado en Yacc con un tokenizador (escáner léxico) propio. Además, el sistema de gestión de bases de datos se destaca por su
amplio soporte de sistemas operativos.
La abreviatura SQL procede de “Structured Query Language”, un lenguaje de programación que sirve para administrar estructuras de bases de datos. Entre las posibles operaciones se encuentran la consulta, integración, actualización y eliminación de datos existentes.
En el ámbito del desarrollo web, la integración del proyecto MySQL en el catálogo de productos de Oracle es objeto de falta de confianza y crítica debido, primordialmente, al aumento constante de las diferencias entre la versión MySQL con licencia GPL y el producto Enterprise de pago. Las nuevas funciones del sistema de gestión de bases de datos son cada vez más frecuentes, si bien solo en la versión dueña. Las
bases de datos de fallos no públicasy los tests deficientes hacen suponer a la comunidad que, bajo las alas del software Oracle, el proyecto open source no goza de igualdad de condiciones, lo que desencadena un apoyo cada vez menor por parte de esta.
Ya en el año 2009, el equipo de desarrollo principal en torno a Michael “Monty” Widenius, inventor de la base de datos MySQL, le dio la espalda al popular sistema de bases de datos y puso en marcha
con MariaDB un fork de código abierto de MySQL.A finales de 2012, distribuciones Linux como Fedora, OpenSUSE, Slackware y Arch Linux fueron las primeras en sustituir MySQL por MariaDB como instalación estándar. Un gran número de proyectos open source, de empresas de software y plataformas web conocidas siguieron el mismo ejemplo, entre ellas Mozilla Firefox, Ubuntu, Google, Red Hat Enterprise Linux, Web of Trust, Team Speak, la Fundación Wikimedia y XAMPP.
Aún el día de hoy queda patente que, en comparación con la versión de MySQL de código abierto, MariaDB sigue desarrollándose. Por consiguiente, se puede suponer que el fork vaya a superar pronto a su proyecto madre.
En el sector del software se puede charlar de un fork como una rama de desarrollo que brota de la bifurcación de un proyecto (en su mayoría, de fuente abierta). Un fork se crea sobre el código fuente del proyecto madre y se desarrolla en un proyecto de seguimiento independiente.
Hoy en día, la gestión electrónica de datos tiene lugar principalmente con
sistemas de bases de datos (SBS), que están formados por dos componentes, la propia
base de datos (BD)y el
sistema de gestión de la base de datos (SGBD):
El siguiente gráfico muestra una presentación esquemática de un Sistema de Bases de Datos:
Según su definición, MySQL es un SGBD relacional. Esto significa que la totalidad de los datos que usa MySQL se guarda en tablas relacionadas entre sí por medio de claves (keys).
Veamos cómo se puede ilustrar esto con un caso sencillo. A continuación aparecen las tablas
autoresy
obras:
Todas las tablas de una base de datos relacional están formadas por columnas y filas, y cada columna está diseñada para un
atributodeterminado. En la tabla
autoresse hallan, por servirnos de un ejemplo, los atributos
id, nombrey
apellido.Las filas de una tabla están designadas como
rowsy cada una de ellas contiene un conjunto de datos, el cual viene identificado (numerado), por norma general, a través de una
clave primaria. El tipo de atributo establecido como clave primaria se define en el momento de crear la tabla. El requisito es que la clave primaria posibilite una asignación inequívoca, de tal modo que esta solo puede utilizarse una vez en la columna. Para ello se recomienda una numeración en serie vía
ID.
La tabla
obraspresenta, además de la
clave primaria
id_obras,
id_autorescomo
clave foránea(foreign key). Esta crea una relación entre ambas tablas y enlaza los conjuntos de datos de una tabla con los de la otra. Cuando se establece una conexión entre dos tablas de una base de datos relacional se puede charlar de un
join.Esta conexión podría tener lugar con la próxima consulta a la base de datos: “carga todas las obras del autor John Ronald Reuel Tolkien con la data de la primera publicación”.
Tolkien ha sido clasificado en la tabla
autorescon la clave primaria
id_autores
1. Para preguntar todas las obras de tal autor, este se presenta en la tabla
obrascomo clave foránea. De esta forma se piden todos los rows enlazados con el
id_autores1.
En la práctica, todas las operaciones de bases de datos en MySQL se realizan con comandos SQL estandarizados como SELECT, INSERT, UPDATE y DELETE, pero hablaremos de ellos en capítulos siguientes de nuestro manual de MySQL.
Como es lógico, también se pueden guardar todos y cada uno de los datos referentes a los autores y a sus obras en una única tabla. Un almacenaje de datos de estas características implica que una base de datos contenga un sinnúmero de entradas redundantes, ya que, por ejemplo, los datos en las columnas
nombrey
apellidose especifican de forma individual para cada obra. Una redundancia de este género no solo supone una carga para la memoria, sino que también da sitio a que se tengan que efectuar actualizaciones en diferentes puntos de la base de datos. De ahí que que cuando se trabaja con bases de datos relacionales se limite su contenido a un tema por tabla. Se habla, en un caso así, de una
normalizaciónde los datos.
El campo de aplicación primordial de MySQL es el
almacenamiento de datos en el contexto de las páginas web dinámicas.La combinación de MySQL con el software de servidores web Apache y los lenguajes de script PHP o Perl se ha afianzado como estructura clásica de software en el desarrollo web. El stack web puede realizarse como LAMP (Linux), MAMP (macOS) o bien WAMP (Windows) con los sistemas operativos de servidores frecuentes.
Para los que comienzan a trabajar con MySQL pueden ser recomendables los
entornos locales
XAMPPpara recabar las primeras experiencias con el sistema de gestión de bases de datos, el que se fundamenta en MariaDB en la versión actual.
A continuación, te presentamos ciertos ejemplos prácticos para arrojar más luz sobre los fundamentos de MySQL. Nuestro tutorial para MySQL tiene como base el
entorno de prueba de XAMPPy los códigos de snippets y las capturas se centran en las operaciones de bases de datos que se llevan a cabo a través de
PHPcon ayuda de un
servidor Apache HTTPen un ordenador Windows. En lugar de la clásica base de datos MySQL, en este caso, se aplica el fork MariaDB. Actualmente, ambos sistemas de gestión de bases de datos son tan compatibles que todas las operaciones son precisamente iguales. En el marco de un tutorial para principiantes es indiferente si se trabaja con MySQL o bien con MariaDB.
Para saber cómo puedes instalar un entorno de prueba de manera local en tu computador Windows, visita nuestro. Si quieres aprender a trabajar con bases de datos relacionales desde el principio lo aconsejable es que te centres de manera directa en MariaDB. Un entorno alternativo y gratis que se fundamenta en MySQL es.
También tienes la posibilidad de integrar un stack web personalizado. MySQL y MariaDB se pueden conjuntar, según sea preciso, con diversos sistemas operativos, servidores web y lenguajes de scripts. Los
paquetes de descarga gratuitos y con licencia GPLestán libres en la páginay. Puedes obtener instrucciones detalladas de instalación para diferentes plataformas en la
documentaciónen inglés dey.
Para la gestión de MySQL nos fundamentamos en la aplicación web libre
phpMyAdmin, contenido en el paquete de instalación de XAMPP, pero también se ofrece separadamente en la página web oficial del proyecto como
phpMyAdmin es considerado como el
software estándar para la administración de bases de datos MySQLen la World Wide Web. La aplicación web escrita en PHP y JavaScript facilita las operaciones de bases de datos a través de
interfaces gráficas de usuario. Así se pueden crear y gestionar las tablas de la base de datos relacional cómodamente en el navegador de internet. En este sentido, no es preciso en principio conocer los correspondientes comandos SQL.
Si has instalado XAMPP,
inicia el sistema gestor de bases de datos
(MySQL o MariaDB)en el panel de control, de igual forma como se inician los otros componentes del stack. Para ello, emplea el botón “Start” que hay bajo “Actions”. Para poder acceder a phpMyAdmin a través del navegador de internet, es preciso que inicies el servidor web Apache. Los módulos activados aparecen destacados en color verde en el
panel de control de XAMPP.También puedes conocer el estado actual de los módulos de XAMPP en forma de notificación por medio del cuadro de texto.
XAMPP fue desarrollado en el marco del proyecto de software Apache Friends como sistema compacto de pruebas para su uso en ordenadores locales. El paquete de software no está concebido para poner a disposición servicios web en Internet. Como sistema productivo, XAMPP no es capaz para el ámbito de la seguridad debido a sus numerosas restricciones.
En el modo perfecto de prueba local, se puede acceder a la
interfaz web del software de administracióna través de
.
Siempre y cuando se haya definido una
contraseñapara la cuenta
rooten la instalación de MySQL
,será necesario introducirla en la pantalla de registro en phpMyAdmin. En caso de emplear esta herramienta en un producto de alojamiento web, los datos de registro serán concedidos por el distribuidor pertinente. En un caso así, como usuario, diseño webs zaragoza de acceso raíz.
Una vez has iniciado sesión, phpMyAdmin muestra la
página de comienzo de la aplicación, la cual permite efectuar los ajustes básicos para obtener el
conjunto de caracteres
(colación)de la conexión de MySQL o bien para elegir el
modo de visualizacióndeseado (idioma, diseño y tamaño de fuente). En la parte derecha aparece un resumen de los datos de referencia de tu servidor de base de datos, del software de servidor web empleado, así como de la información sobre la versión actual de phpMyAdmin. La barra del menú está, de la misma forma que el resto de barras de menú de la aplicación, diseñada en forma de pestañas. Para escoger unas u otras, tan solo hay que hacer click en
Databases,
SQL,
Status,
User accounts,
Export,
Import,
Settings,
Replication,
Variablesy
More.
En el extremo izquierdo de la interfaz de usuario aparece un
panel de navegaciónen el que se señalan todas y cada una de las tablas en la base de datos a las que tienes acceso con phpMyAdmin. Bajo el logo del programa en el rincón superior izquierda, hay una función con la que puedes acceder tanto a la página de comienzo del software como a la documentación oficial. Además, también existe la posibilidad de configurar el panel de navegación y actualizar su vista.
A continuación empezaremos nuestro curso intensivo de MySQL a fin de que puedas crear tu primera base de datos.
Para crear una base de datos con phpMyAdmin hay que seleccionar la pestaña “Databases” (bases de datos) en la barra del menú de la página de comienzo.
Introduce un
nombre para la base de datosen el campo de entrada bajo “Create database” (crear nueva base de datos) y selecciona un cotejamiento (collation). En un caso así es conveniente la colación
utf8mb4_unicode_ci. Con ella informamos al servidor de bases de datos sobre la codificación para los datos trasmitidos o bien recibidos. Las variaciones mb4 también autorizan signos exóticos como símbolos o emojis, que se escapan a los comandos básicos de Unicode (Basic Multilingual Plane) y, en consecuencia, resultan aconsejables.
Confirma la entrada haciendo clic en “Create” (crear). La base de datos creada aparece en el panel de navegación en el lado izquierdo de la pantalla. Las nuevas bases de datos no incluyen ningún contenido. Para depositar datos es preciso que, a continuación, crees una tabla.
Para crear una nueva tabla, selecciona la base de datos deseada y navega por la barra de menú hasta llegar a la pestaña “Structure” (estructura).
Crea una tabla y también introduce el nombre (por ejemplo,
users) y el
número deseado de columnasmediante el botón “Create table” (producir tabla). Recuerda que a cada columna le corresponde un atributo de la entrada en la tabla. Si precisas incluir más columnas, lo puedes hacer más tarde.
Si, por ejemplo, quieres crear una base de datos de usuarios, puedes recurrir a los próximos elementos para las columnas de la tabla:
Para la base de datos de usuarios, crea la tabla
userscon 7 columnas y confirma la entrada con “Go”.
Una vez creada la tabla, phpMyAdmin te da la posibilidad de acotar los nombres de las columnas y de
realizar los ajustes de formato para los datos previstos.
La tabla que aparece a continuación incluye una descripción de la estructura de las tablas así como de los posibles ajustes.
Todas estas opciones entienden los ajustes más esenciales de las columnas de las tablas. Si te mueves cara la derecha con ayuda de la barra de desplazamiento encontrarás otras opciones de configuración —no incluidas en este tutorial de MySQL para principiantes.
La siguiente tabla expone
diferentes tipos de datosque se pueden procesar tanto con MySQL como con MariaDB, así como su campo de valores y sus requisitos de almacenaje.
Para la tabla de ejemplo
usersse han configurado los próximos ajustes:
Los posibles valores para la columna
idse definen como
números enteros(íntegro, INT) y llevan el atributo
UNSIGNED. El
idsolo puede adoptar valores numéricos positivos. En “Index” hemos elegido el ajuste
PRIMARYpara
id. Al respecto, el número de identificación hace de
clave primariapara la tabla
usersy la marca de verificación en “
A_I” (
Auto_Increment) señala al sistema gestor de bases de datos que los identificadores de cada entrada tienen que generarse como números sucesivos.
Los valores para las columnas
forename,
surname,
emaily
passwordse definen como un género de datos
VARCHAR. Se trata, en un caso así, de cadenas de caracteres variables cuya longitud (M) está limitada a cincuenta caracteres mediante la opción “
Length/Value”.Para la columna
emailse activa el índice
UNIQUE.De este modo se garantiza que cada dirección de correo electrónico de la tabla se guarde una única vez.
Para las columnas
created_aty
updated_athemos elegido el género de datos
TIMESTAMP. El sistema de gestión de bases de datos almacena datos temporales para crear y actualizar las entradas en formato
YYYY-MM-DD HH:MM:DD.Puesto que el sistema debe generar automáticamente una
marca temporalpara cada entrada, escogemos el valor estándar
CURRENT_TIMESTAMPpara la columna
created_at.La columna
updated_atadquiere relevancia cuando se actualiza una entrada. En este sentido, dejamos los
valores Nullpara esta columna y se establece
NULLcomo valor estándar.
En PHP, el valor
NULLrepresenta una entrada vacía, por lo que un campo tiene el valor
NULLcuando no se le haya asignado ningún valor.
Como
motor de almacenamientose emplea el formato estándar de tabla de MySQL conocido como
InnoDB.
phpMyAdmin traduce todos y cada uno de los ajustes que se pueden efectuar a una tabla en código SQL y, si es preciso, este puede visualizarse, en “
Vista anterior de SQL”.
En el capítulo sobre las consultas a las bases de datos te ofrecemos una descripción detallada sobre la sintaxis de SQL.
Los ajustes pueden guardarse haciendo click en “Save” (guardar). La tabla
usersse muestra en el panel de navegación de la base de datos bajo la opción
test.
Para poder administrar una tabla ya creada, haz clic en el nombre de la tabla en el panel de navegación. A continuación, phpMyAdmin te muestra una visión general de los datos guardados en la tabla correspondiente en la pestaña “Browse” (visualizar). En el caso de la tabla del ejemplo, la consulta no genera ningún resultado por el hecho de que aún no contiene datos.
La barra del menú cuenta con diferentes pestañas para
gestionar las tablas de datos. Si quieres alterar la estructura de una tabla de datos, haz click en la etiqueta “Structure”; para añadir datos elige la opción “Insert” (añadir). phpMyAdmin también deja buscar en las tablas, regentar derechos y exportar conjuntos de datos o bien importarlos de otras tablas.
Si deseas corregir tu tabla más tarde para incluir columnas auxiliares, quitar las que existen o repasarlas, ve a la pestaña “Structure”.
Puedes añadir columnas con la opción“Add columns”, mediante la que puedes apuntar el número deseado de columnas nuevas y la posición de exactamente las mismas.
En el siguiento gráfico se añade una nueva columna a través de
updated_at:
Si deseas
eliminar columnas ya existentes, selecciónalas marcando la casilla correspondiente y haz clic en “Drop”.
La
edición de una columnase hace a través del botón “Change”. A través de este se te redirige a una vista de edición que se semeja a la que se emplea para la creación de tablas:
En ciertas circunstancias, los cambios realizados en la estructura de las tablas pueden conllevar una pérdida de información. Por eso, antes de editar o bien eliminar las tablas anteriormente creadas es recomendable que hagas una: haz clic en la pestaña “Export” (exportar), elige el formato de datos deseado para el backup y confirma el cambio a través de la opción “Go”. A continuación, se abre una ventana de diálogo en la que el navegador de internet te pide el destino de almacenaje para la descarga. El programa gratis
es una opción alternativa a la creación de copias de seguridad de bases de datos con phpMyAdmin.
Para introducir los datos en una tabla vía phpMyAdmin se puede recurrir a dos opciones: o bien se importan conjuntos de datos de un fichero externo (por ejemplo, de una copia de seguridad) o bien se crean las entradas en la tabla manualmente. Elige la tabla de ejemplo
usersy ve a la pestaña “Insert” (introducir).
phpMyAdmin te muestra la próxima
máscara de entrada de datos:
En el apartado “Column” aparece una lista de las columnas que se han definido para la tabla
users,y “Type” cobija información sobre el tipo de datos que se espera, así como el número máximo de caracteres entre paréntesis. Suprimimos “Function” y pasamos de manera directa a “Value”, apartado en el cual se definen los valores de cada una de las columnas de la tabla del ejemplo.
En el capítulo anterior se ha configurado la tabla
usersde tal forma que el sistema de gestión de bases de datos provea automáticamente de contenido a los campos de las columnas
id,
created_aty
updated_at.En la columna
idse da un número de identificación a cada entrada a través de
AUTO_INCREMENT.Al campo
created_atse le asigna de forma automática la data actual y a
updated_atel sistema le otorga el valor estándar
NULL. No obstante, se deben introducir los datos de forma manual para las columnas
forename,
surname,
emaily
password,tal y como se ve a continuación con datos de usuario ficticios:
Pinchando en “Go” los datos se transfieren a la tabla. phpMyAdmin brinca automáticamente a la pestaña “SQL” y resume las
operaciones realizadas en la base de datos en una sentenciasegún la sintaxis de SQL:
En principio, todas las operaciones que se hacen en phpMyAdmin a través de una interfaz gráfica de usuario también pueden escribirse en SQL, lo que es parte del procedimiento frecuente en el marco del desarrollo web.
Las llamadas
consultas SQL(SQL queries) se encuentran en el código fuente de todas y cada una de las aplicaciones web dinámicas y permiten que el servidor web interactúe con la base de datos. El lenguaje de bases de datos SQL se fundamenta en comandos y deja, por ejemplo, consultar y emplear datos en el marco del funcionamiento del programa. En el próximo capítulo del presente manual de MySQL te presentamos los comandos SQL más esenciales, como por ejemplo
SELECT,
INSERT,
DELETEy
UPDATE,y te ofrecemos información sobre la sintaxis de las operaciones de bases de datos básicas.
Pero primero introducimos datos de usuario auxiliares en la tabla
usersy echamos una ojeada a la tabla resultante en la pestaña “Browse”:
Con un click sobre el
nombre de una columnase puede organizar la tabla en el orden que se desee.
Tras haber introducido las entradas en la tabla de ejemplo
users, en los siguientes capítulos mostramos cómo se pueden solicitar estos
datos vía PHP a través del servidor web Apache.
Para ello, el primer paso consiste en crear la
conexión con la base de datos. En PHP se puede recurrir a 3 interfaces: MySQL Extension, MySQL Improved Extension () y PHP Data Objects ().
A partir de aquí nos concentramos en las
conexiones de bases de datos vía PDO.
Para poder hacer solicitudes a una base de datos con un script de PHP, la base de datos se tiene que autentificar primeramente. Con la siguiente línea de código se crea una conexión con la base de datos a través de un PDO:
Se recomienda integrarla al comienzo de cada script que contenga operaciones de bases de datos.
Se usa la palabra clave de PHP
newpara crear una instancia de la clase base de PDO, cuyo constructor espera 3 parámetros: el
Data Source Name (DSN),un nombre de usuario y la contraseña para la base de datos, si la hubiera. En este caso, el DSN está formado por los próximos parámetros:
Si todavía no has definido los datos de acceso para tu base de datos, utiliza el nombre de usuario
rooty una contraseña vacía:
La conexión con la base de datos se almacena en la variable
dólares americanos pdo. Esto deja remitir a ella más tarde en el script.
Una vez creada la conexión con la base de datos, se le pueden efectuar diferentes consultas a medida que se va escribiendo el código en el script. Cuando se concluye, también se interrumpe la conexión de la base de datos.
Para extraer información de un banco de datos es preciso recurrir al
lenguaje de bases de datos SQL, que se fundamenta semánticamente en el inglés y tiene un mantenimiento sencillo. Su sintaxis es, en buena medida, autoexplicativa.
En SQL se trabaja con sentencias, que también se conocen como consultas o bien preguntas.
Una consulta SELECT sencilla está formada, por ejemplo, por los siguientes componentes:
Primero se define el comando de SQL
SELECTy a continuación las columnas y tablas pertinentes a las que hace referencia el comando. Se utiliza un punto y coma para cerrar la sentencia.
Asimismo, tienes la posibilidad de ampliar la sentencia para una
condición opcionalo para una
función de clasificación o bien de agrupación:
En este sentido se aplica la convención de que, para facilitar la lectura, los comandos de SQL se escriben en mayúscula y los nombres de las bases de datos, de las tablas y de los campos en minúscula. SQL es fundamentalmente un
lenguaje sin formatoy no hace distinciones entre mayúsculas y minúsculas.
En en caso de que recurras a nombres de tabla y de columna que se correspondan con palabras clave de SQL predefinidas (no aconsejable), estos deben ir
entre comillas simples (' '
).
A continuación, ilustramos la sintaxis de sentencias SQL fáciles con ejemplos de los comandos
SELECT,
INSERT,
UPDATEy
DELETE.
Se emplea el
comando
SELECT
para preguntar series de datos (
rows) de un número determinado de tablas. Si se quieren mostrar en el navegador tanto el nombre y los apellidos como las direcciones de correo electrónico de todos y cada uno de los usuarios en la tabla de ejemplo creada con anterioridad, debes crear en el directorio
htdocsde tu entorno de XAMPP un nuevo fichero PHP
text.phpe incluir el siguiente script:
Este ejemplo de código se lee de la siguiente manera: primeramente se comienza el script con la etiqueta de comienzo de PHP
<?php.En la segunda línea se establece la conexión con la base de datos
testen
localhosty se guarda en la variable
dólares americanos pdo.La sentencia SQL con el comando
SELECTse encuentra en la línea 3. En este punto se indica al sistema de gestión de bases de datos que consulte las columnas
forename,
surnamey
emailde la tabla
users.Esta sentencia se guarda en la variable
$ sql.
Las líneas de la cuatro a la siete muestran el constructor
foreach,que permite la iteración sobre arrays, lo que significa que una estructura de datos se repasa de forma gradual. Tanto los arrays que se quieren iterar como el modo perfecto en que se deben guardar los datos consultados se definen entre comillas detrás del constructor
foreach:
La variable
$ pdose comunica con la base de datos deseada a través de la conexión definida en la línea 2. Con la función
query()y mandamos al banco de datos la sentencia SQL almacenada en la variable
dólares americanos sql.
El servidor web pide las columnas
forename,
surnamee
emailde la tabla
usersde la base de datos
testy recorre
todas y cada una de las filasde la tabla en el marco del constructor
foreach. La palabra clave de PHP
asen la variable
dólares americanos rowdefine dónde se tienen que guardar los datos elegidos.
En la primera ronda del constructor
foreach,el array tendría el próximo aspecto:
Una parte del bucle
foreachen nuestro ejemplo es la reproducción como texto a cada vuelta del bucle vía
echo. Aquí, se repasa cada línea de la tabla, se leen los datos depositados para las columnas definidas en la sentencia SQL y se emiten a través del navegador web.
Si se deben leer todas y cada una de las columnas de una tabla de datos, se debe utilizar el asterisco (
*) como
espaciadoren la secuencia SQL.
Con ello se tiene la posibilidad de emplear todos y cada uno de los datos incluidos en
usersen el marco del script. En el siguiente screenshot se complementa el texto con la
fecharelativa a la creación de la entrada:
En los dos ejemplos anteriores, el servidor web emite datos de usuario en el orden en el que se han introducido en la tabla
users(con arreglo al identificador). Si quieres emitir los datos en otro orden, defínelo con ayuda de la palabra clave de SQL
ORDER BY.En el siguiente ejemplo se ofrecen los datos en orden alfabético según el nombre:
Rara vez se crean manualmente con phpMyAdmin las entradas de una base de datos. En general, es el servidor web es el que escribe los datos durante la ejecución del script, como ocurre, por servirnos de un ejemplo, en el momento en que un usuario de Internet cumplimenta un formulario en línea en una página web o deja un comentario en una tienda on-line. En los dos casos se utiliza el
comando de SQL
INSERT
en un segundo plano
.
Las sentencias SQL con el comando
INSERTse crean siguiendo el próximo esquema:
Esto se lee de la siguiente manera: abre la tabla correspondiente y también introduce los valores 1, 2 y 3 en las columnas 1, dos y 3.
Un script PHP fácil con el que se pueda añadir otra entrada en la tabla de ejemplo
userspuede tener la próxima apariencia:
En primer sitio se crea la conexión con la base de datos y se guarda en la variable
dólares americanos pdo.A continuación, se define la sentencia SQL y se guarda en la variable
$ sql.En la línea 5 se emplea el operador flecha (
->) para acceder a la variable
$ pdoy, con ayuda de la función
exec(),ejecutar la sentencia SQL almacenada en
dólares americanos sql.
Para garantizar que el script introduzca a un conjunto de caracteres en la tabla
users,es preciso revisar el número de las filas implicadas con ayuda de la
condición
if.
Esta se encarga de que el string
New record created successfullysolo se emita a través del navegador cuando la cantidad de conjuntos de datos incluidos sea 1. Si el script vuelve a ejecutarse, el aviso no aparecerá. Las entradas dobles se evitan definiendo como UNIQUE al valor
email.
Al acceder a la vista general de la tabla de ejemplo
usersen la base de datos
testse puede observar que la tabla se ha ampliado con la entrada 5. El número de identificación y la fecha se añaden de forma automática según lo previsto.
Para actualizar conjuntos de datos ya existentes, se puede recurrir al
comando SQL
UPDATE
tal y como se muestra en el siguiente ejemplo:
Esta sentencia SQL tiene el próximo significado: escoge la tabla indicada y sustituye el valor en la columna1 por el valor1 y el valor en la columna2 por el valor2 siempre y cuando la columna3 tenga el valor3. Si te olvidas de incluir la condición, MySQL sobreescribe estos campos en todos los conjuntos de datos.
En este caso estamos trabajando con una sentencia SQL que vincula una operación a una
condición. Si trasladamos esto a la tabla de nuestro ejemplo, la dirección de correo electrónico del usuario John Doe se actualiza por medio del siguiente script de PHP:
En la sentencia SQL definimos que el valor actual en la columna
emailtenga que ser reemplazado por el valor
siempre y cuando el valor en la columna contenga el
id1. Por ende, se actualiza el conjunto de datos con la clave primaria 1. Asimismo, también se debe actualizar en la misma sentencia SQL el valor para la columna
updated_atcon ayuda de la función de MySQL
now(),que devuelve la data actual. A continuación, se ejecuta la sentencia como antes con la línea de código
dólares americanos pdo->exec($ sql)en el contexto de una condición if.
Si la actualización se ha llevado a cabo con éxito, phpMyAdmin debería indicar en la etiqueta “Browse” que la tabla está actualizada:
En el ejemplo, hemos actualizado una dirección de correo electrónico y hemos sustituido el valor estándar
NULLen la columna
updated_atpor el registro de fecha y hora. El comando
UPDATEpermite también trasferir
valores de una columna a otra. Esta operación puede utilizarse cuando se amplía la tabla
usersdel ejemplo para la columna
email_registration,lo que ofrece la posibilidad de distinguir entre 2 direcciones de correo electrónico: una empleada a lo largo del proceso de registro y otra de contacto actual que se puede alterar con el tiempo. Al principio, no obstante, las dos direcciones son iguales, de forma que se pueden trasferir los valores de un campo a otro. Para esto creamos la columna nueva
email_registrationcon phpMyAdmin usando “Add columns” en la pestaña “Structure”:
Para transferir los valores se emplea la sentencia
UPDATEsiguiente:
Debido a que se quieren actualizar todos y cada uno de los registros, no hace falta formular ninguna condición para la actualización.
Si se ejecuta el script en el servidor web, el sistema gestor de bases de datos trasfiere los valores de la columna
emailpara todos los conjuntos de datos a la columna
email_registration.
Las entradas se pueden quitar con el
comando SQL
DELETE
, que se utiliza siguiendo el esquema que te presentamos a continuación:
Si trabajas con identificadores en tu base de datos, es conveniente identificar con ellos las entradas que vas a borrar. Si, por ejemplo, quieres quitar la entrada cinco en la tabla del ejemplo, debes proceder de la siguiente manera:
El comando SQL
DELETEelimina siempre una fila entera. Si quieres suprimir valores en columnas determinadas de una base de datos, puedes recurrir a la sentencia
UPDATE. Con
UPDATE
tabla SET columna
= NULL WHERE se le puede asignar el valor
NULLa una columna, pero siempre y cuando se haya autorizado dicho valor para la columna correspondiente.
Con PDO se pueden efectuar operaciones de bases de datos en calidad de
sentencias preparadas(prepared statements). Hoy en día, estas “consultas prefabricadas” son una práctica frecuente en el desarrollo web y están respaldadas, sobre todo, por todos y cada uno de los sistemas de gestión de bases de datos modernos.
La inyección SQL se fundamenta en un conocido fallo de seguridad en el
entorno de las bases de datos SQL:si se entregan datos de usuario, por ejemplo, vía
dólares americanos _GETcon parámetros estáticos, esto permite a los atacantes enriquecer el input con metacaracteres que pueden conducir a efectos indeseados en el caso de que estos alcancen al intérprete de SQL sin enmascaramiento. Este método de infiltración puede prevenirse con eficiencia por medio de consultas parametrizadas. En este sentido, los prepared statements hacen las veces de plantillas para los comandos SQL que se transmiten a la base de datos separados de los verdaderos parámetros. Esta valida los datos entregados, disfraza los metacaracteres automáticamente y también inserta los parámetros en lugar de los marcadores en la secuencia SQL.
Las sentencias preparadas ofrecen, además de seguridad, una
ventaja en cuanto a rendimiento. Esta se hace visible cuando exactamente el mismo comando SQL se tiene que ejecutar en bucle con diferentes parámetros. Tras ser analizado sintácticamente, la sentencia preparada se introduce en el sistema de base de datos y tiene que ejecutarse con nuevos parámetros. Así, las consultas complejas pueden agilizarse de forma notable.
En PDO, los prepared statements pueden ejecutarse con ayuda de la función
prepare(). Esta prepara una sentencia para la ejecución y devuelve un objeto de secuencia. Como marcador para los valores correspondientes se emplea o el símbolo de interrogación (
?) o bien un
parámetro con nombre (
named parameter).
El siguiente ejemplo de código muestra la operación INSERT como sentencia preparada con
parámetros sin nombre:
Inicialmente se produce un objeto sentencia de la consulta deseada con ayuda de la función
prepare()y se guarda en el array
dólares americanos statement. En lugar de valores de parámetro específicos, se usa el signo de interrogación como marcador.
Si una sentencia SQL solo contiene marcadores, los valores entregados separadamente en el código se deben vincular a la sentencia. En PHP se emplea para esto la función
bindParam().Utilizamos el operador flecha (
->) para acceder al método
bindParam()del objeto
$ statementy asignarle variables (1 hace referencia al primer signo de interrogación, dos al segundo, etc.).
Ahora, la plantilla SQL resultante puede ejecutarse tan frecuentemente como se desea con los parámetros deseados. En el ejemplo actual se definen los valores de las variables para 2 registros. La ejecución de las sentencias SQL prefabricadas tiene sitio para cada entrada a través de
execute().
Los
parámetros con nombreresultan algo más claros que los marcadores con el signo de interrogación. Se trata, en un caso así, de marcadores adaptados designados, según las necesidades, por el siguiente esquema:
Los parámetros con nombre no pueden contener espacios en blanco o bien guiones, por lo que en su lugar se debe utilizar el guion bajo (
_).
El siguiente ejemplo muestra la operación
INSERTcomo sentencia preparada con parámetros con nombre:
En la sentencia preparada se encuentran los parámetros con nombre
:forename,
:surname,
:emaily
:password. Estos se vinculan a las variables
dólares americanos forename,
$ surname, dólares americanos emaily
dólares americanos passwordpor medio de
bindParam(). En el ejemplo actual hemos designado tanto los parámetros como las variables en correspondencia con los nombres de las columnas de la tabla del ejemplo, puesto que no es la sintaxis la que lo predetermina. Sí se aconseja utilliar una
denominación coherentea favor de un código fuente inteligible. Tanto la asignación de los valores de las variables como la ejecución de la sentencia SQL se hace de forma análoga al ejemplo anterior.
MySQL y MariaDB soportan diversas funciones para trabajar con información sobre la fecha y la hora. Puedes consultar aquí la. En nuestro tutorial de MySQL para principiantes te presentamos algunas de ellas.
Un posible escenario de aplicación para las funciones de fecha y hora son, por servirnos de un ejemplo, las consultas a las bases de datos en las que se tienen que leer todos los conjuntos de datos
creados en un día determinado.
El siguiente script emite todos y cada uno de los registros de la tabla
usersdel ejemplo creados hoy:
Para enseñar exclusivamente las entradas de el día de hoy se usa la próxima condición en la sentencia SQL:
En primer sitio, se extrae la fecha de la marca temporal guardada en la columna
created_atcon ayuda de la función
DATE()y se equipara en el siguiente paso con la data actual. El comando
SELECTsolo selecciona las entradas cuya marca temporal coincida con la fecha actual.
Como opción alternativa puedes elegir la entrada actualizada el 17.05.2017, a cuyo efecto hay que adaptar la condición de la sentencia SQL:
En este caso se compara la data de referencia con una concreta. Además, se pueden limitar las consultas a un año, mes o día determinados.
La siguiente sentencia hace referencia a todas y cada una de las entradas de la tabla
userscreadas en mayo:
Además de los signos de igualdad, SQL también soporta los próximos operadores de comparación en las condiciones:
Asimismo, también se pueden vincular varias condiciones con operadores lógicos:
La siguiente sentencia permite, por ejemplo, elegir todas las entradas creadas después de febrero y antes de abril:
Hasta ahora se han guardado los datos relativos a la fecha y hora en nuestra base de datos en el formato previamente indicado. Con MySQL y MariaDB estos no están establecidos. La función
DATE_FORMAT()ofrece la posibilidad de
ajustar la fecha y la hora con parámetros opcionales.
La tabla que aparece a continuación muestra posibles parámetros para la función
DATE_FORMAT(),tal y como aparece concretado en la documentación.
Si un script no se ejecuta como estaba previsto, se pueden presentar fallos sintácticos en el código fuente o bien surgir tablas con nombres, columnas o variables incorrectos. El servidor de bases de datos no emite automáticamente estos mensajes de fallo, sino que, frecuentemente, el resultado deseado no se manifiesta sin hacer referencia alguna a la operación errada.
Con
errorInfo(),PDO ofrece una función con la que se pueden recobrar otros
datos sobre errores en la última operación realizadaen la base de datos, por servirnos de un ejemplo, para emitirlos a través del navegador web.
En el próximo
script de actualización de la dirección de correo electrónicose emplea la función
errorInfo()combinada con el constructor
if. La condición es la correcta ejecución de la sentencia SQL. Si esta se hace como es debido, el servidor web emite el string
Update successful.De lo contrario, se ejecuta el código detallado en
else.
En el ejemplo, se notifica al usuario de que se ha producido un fallo en SQL y se emite tanto la sentencia SQL pertinente como información auxiliar sobre fallos a través de
errorInfo():
Si el script se ejecuta a través del servidor web, se consigue la siguiente información:
El comando SQL
UPDATEhace referencia a una tabla con el nombre
user.La tabla de nuestro ejemplo se llama
users.El servidor SQL no es capaz de encontrar la tabla pedida y ofrece el mensaje
Table 'test.user' doesn't exist.El motivo del fallo ha sido un error tipográfico en la sentencia SQL que se corrige con sencillez.
En cuanto a los valores de retorno de la función
errorInfo(),se puede hablar de un array con tres elementos:
[0] = código de fallo SQL
[1] = código de fallo específico del controlador
[2] = mensaje de fallo específico del controlador
La información a la que se accede a través de
errorInfo()puede definirse indicando los elementos deseados entre corchetes.
En la práctica, no es muy común que el navegador de internet entregue información detallada sobre los errores, pues no valen de nada a los usuarios. Al contrario, los atacantes potenciales pueden usar estos mensajes de fallo para proseguir a las consultas SQL y encontrar las debilidades de las aplicaciones. Por esto, es conveniente que la información general dada a los usuarios sobre los fallos sea muy general y que la
información referente a los mismos se almacene
de forma interna.
Esto podría lograrse como se muestra a continuación:
En lugar de emitir el valor de retorno de la función
errorInfo()a través de
echoen el navegador, se guarda así como la marca temporal actual, la ruta del archivo y la sentencia SQL en la variable
dólares americanos error.
La
función
PHP
DATE()
ofrece la marca temporal de Unix en el formato detallado. La llamada constante mágica
__FILE__entrega la senda completa para el archivo
test.php. Solicitamos la sentencia SQL actual de la misma manera que en el ejemplo precedente vía
dólares americanos statement->queryString. Por último, se guardan los datos guardados en
$ errorcon ayuda de la función
file_put_contents()como texto en el fichero
sqlerrors.logen la carpeta
htdocs.
Como ya se ha citado en el capítulo sobre las bases de datos relacionales, se pueden preguntar datos de diferentes bases de datos simultáneamente. Si ya estás familiarizado con las operaciones básicas de bases de datos, volveremos a recurrir a ellas para demostrar cómo se pueden vincular las distintas tablas de tu base de datos en un join (en español, unión o conexión).
La combinación de las tablas de una consulta tiene lugar con ayuda del comando SQL
JOIN. Aquí se vinculan dos o bien más
tablas normalizadaspor medio de columnas enlazadas, lo que se puede hacer a través de una clave foránea.
A continuación, te demostramos cómo se enlazan las tablas de bases de datos con el próximo ejemplo:
La tabla muestra una selección de ciertas canciones más famosas de los años 60 y puede servir como
ejemplo negativo de un mal diseño de bases de datos.
A primera vista llama la atención el hecho de que la tabla muestre gran cantidad de datos redundantes. Estos se suprimen y distribuyen en el marco de la normalización en tablas separadas y se combinan entre sí con ayuda de claves foráneas.
Un buen diseño de bases de datos se distingue por tener un
mínimo de redundancia.Sin embargo, deben evitarse las entradas dobles a través de la normalización de las tablas de datos. En el marco del modelo de bases de datos relacional se han establecido tres
formas normales complementariasque establecen reglas fijas para una estructuración de datos óptima.
Una tabla se corresponde con la primera forma normal cuando todos y cada uno de los valores de los atributos son atómicos. Se comprende por valores de atributo atómicos aquellos que solo
contienen información, lo que se puede observar meridianamente en nuestro ejemplo negativo.
Observemos, por servirnos de un ejemplo, las columnas
album_titlee
interpretde la tabla
album.En sitio de incluir cada dato de la tabla en una columna diferente, lo hemos hecho más fácil y hemos introducido datos relativos al año de publicación del álbum, así como de la existencia de la banda entre paréntesis detrás del título del álbum o bien de los datos del intérprete. Este descuido se hace evidente cuando, por poner un ejemplo, se quieren consultar todos y cada uno de los títulos publicados en un año determinado.
En este caso, es recomendable crear tablas de datos siguiendo las reglas de la primera forma normal. En la tabla de nuestro ejemplo esto tendría el siguiente aspecto:
Los datos aparecen separados y pueden leerse sin inconvenientes. Además, la tabla prosigue conteniendo redundancias, como anteriormente. Prosigue leyendo y te explicaremos cómo puedes quitarlas.
Una tabla está en segunda forma normal cuando se cumplen todas y cada una de las condiciones de la primera forma normal y cada atributo que no forme parte de la totalidad de la clave primaria de la tabla es independiente funcionalmente.
A menudo, hay tablas de datos que contienen una columna que funciona como clave primaria. Las tablas de esta clase se corresponden automáticamente con la segunda forma normal si se cumplen las condiciones de la primera forma normal. A veces puede suceder que la clave primaria de una tabla aparezca en dos columnas, tal como ocurre en la tabla del ejemplo.
Para conseguir el título deseado de la columna
titlede la tabla
titlese precisa, por una parte, el
album_idy por otro el número del título en la columna
track. Se puede obtener el título
Sympathy for the Devil,por ejemplo, a través de la clave primaria
album_ID = tres AND track = 1,por lo que en este caso se puede charlar de una clave primaria compuesta. Esta es precisa para las consultas referidas a la columna
title. Las columnas
album_title, released, interprety
years_activedependen de
album_id.Sin embargo, para estas columnas no existe ninguna dependencia funcional respecto a la totalidad de las claves primarias. No se cumplen, por tanto, las condiciones de la segunda forma normal.
Esto puede alterarse poniendo la columna
titleen una tabla nueva y vinculándola mediante una clave foránea (
album_id) con la tabla de salida:
La tabla
albumrevisada solo contiene una
clave primariay cumple automáticamente las condiciones de la segunda forma normal. La nueva tabla
titlecontiene la columna sin clave
title, que es, a nivel funcional, plenamente dependiente de las dos unas partes de la clave primaria (
album_idy
track)y se corresponde, así, con la segunda forma normal.
En la segunda forma normal, la tabla de datos
albumtambién contiene entradas redundantes.
Si una tabla se corresponde con la tercera forma normal, deben cumplirse todas y cada una de las condiciones de la segunda forma normal y de la primera forma normal. Además, se debe comprobar que ningún atributo no clave dependa de forma transitiva de un atributo clave. Puede que esta condición parezca muy complicada, mas se puede explicar en pocas palabras: se da una
dependencia transitivasiempre que un atributo no clave dependa de otro atributo no clave.
Precisamente esto es lo que se aplica a la tabla
albumdel ejemplo. Aquí se encuentran las columnas
interprety
years_active. Al paso que se puede identificar al intérprete por medio de
album_id,el año de formación de la banda depende tanto de los intérpretes como, a nivel transitivo, del
album_id.Esto tiene como desventaja que cada vez que se añada un álbum nuevo a un intérprete que se ha mencionado, el sistema de gestión de bases de datos guarda automáticamente un valor redundante en la columna
years_active.
Para cumplir las condiciones de la tercera forma normal y eliminar todas las redundancias de nuestra tabla, se deben incluir las columnas
interprety
years_activeen una tabla separada y vincularlas con la tabla de salida
albummediante la clave foránea
(interpret_id).
Así, se consiguen tres tablas normalizadas:
interpret,
albumy
title.
Si se quiere transmitir un título determinado en nuestra base de datos, además de la información sobre el álbum y el intérprete, estas han de estar combinadas entre sí en 3
tablas separadas con ayuda del comando JOIN y de la clave foránea pertinente.
Si escoges el
motor de bases de datos
InnoDB, puedes delimitar cómodamente relaciones de claves foráneas a través de la interfaz gráfica del software de administración phpMyAdmin. También, la clave primaria de una tabla puede utilizarse como clave foránea en muchas otras tablas.
En nuestro ejemplo se requieren 2 conexiones para enlazar las 3 tablas normalizadas
album,
interprety
title:
Las
relaciones de las claves foráneaspueden contemplarse en el siguiente gráfico:
A la hora de establecer el vínculo entre las tablas de datos una columna que marcha como clave foránea debe contener los atributos
UNIQUEo
INDEX.
La
relación entre las
claves primarias y las foráneasse corresponde, por lo general, con la relación del tipo 1:n. Cada campo de datos en la columna clave primaria de la tabla A está relacionado con varios campos de datos (n) en la columna clave foránea de la tabla B. Cada campo de datos en la columna clave foránea de la tabla B hace referencia a un campo de datos de la columna clave primaria de la tabla A. Como ejemplo, en la columna de clave primaria
album_idde la tabla
albumhay 4 entradas vinculadas a través de la clave foránea
title.album_idcon las 8 entradas de la tabla
title.
Para establecer las
relaciones deseadas, creamos las tablas
album,
interprety
titleen phpMyAdmin y definimos nuestras claves primarias en el marco de la creación de la tabla como ya se ha indicado a través de la opción “Index”. Es conveniente tener en consideración aquí el hecho de que las columnas que funcionarán más tarde como claves foráneas se deben marcar como
INDEXo
UNIQUEmediante la opción Index. Para las relaciones 1:n solo es apto
INDEX, puesto que los valores en el campo
UNIQUEno deben repetirse.
A continuación se definen las
claves foráneas. Para ello, regresa a la tabla
albumdel ejemplo. Elige la tabla en el panel de navegación y haz click en la pestaña
Structureen la barra de menú, que contiene el botón “Relation view” (vista de la relación):
Las relaciones de claves foráneas se definen en la vista de relaciones de las tablas de datos por medio del campo de entrada “
Foreign key constraints”:
En la tabla
album,la columna
interpret_iddebe marchar como clave foránea, que se fundamenta en la clave primaria
interpret_idde la tabla
interpret.
Por lo tanto, se debe elegir la columna
interpret_idcomo clave foránea en el menú desplegable bajo “Column”. Ten en cuenta que aquí solo se detallan columnas marcadas como
INDEX,
UNIQUEo
PRIMARY.En el campo de entrada triple “Foreign key constraint (InnoDB)” se debe concretar en qué clave primaria, de qué tabla y en qué base de datos debe fundamentarse la clave foránea. Para ello, realiza la siguiente selección:
base de datos:
test
tabla:
interpret
clave primaria:
interpret_id
El campo “Constraint name” puede quedarse vacío, aunque el sistema de gestión de bases de datos le da un nombre automáticamente. Sin embargo, debe definirse el modo en que se comporta una tabla con claves foráneas en cuanto la clave primaria latente para la clave foránea se modifique o se suprima.
Si, presupuesto para hacer una tienda online ejemplo, se elimina un intérprete de la tabla padre
interpret, también desaparece la clave primaria relacionada con dicha entrada. Se trata, por consiguiente, de determinar lo que debe pasar con las entradas relacionadas con esta entrada a través de una clave foránea, lo que en nuestro ejemplo se refiere a los álbumes de un intérprete.
Para determinar el comportamiento de una tabla con claves foráneas caso de que se den las opciones
UPDATEo
DELETE, tanto en MySQL como en MariaDB se puede recurrir a 4 opciones.
Una vez definida la opción deseada para la relación de claves foráneas, haz clic en “Save” para confirmar la entrada. El sistema de gestión de bases de datos da un nombre de forma automática a la nueva relación.
Las relaciones de claves foráneas te dejan acceder a los datos de diferentes tablas con una única sentencia SQL. Para ello, puedes recurrir a 4 tipos de
JOINen MySQL y MariaDB:
En este tutorial de MySQL nos centramos en
INNER JOIN.
La sintaxis de INNER JOIN sigue el próximo esquema:
El comando
SELECTcombinado con el marcador
*indica al sistema de gestión de bases de datos que lea los valores de todas y cada una de las columnas para los que son de aplicación la condiciones de las cláusulas ON y WHERE.
Puesto que en este caso se habla de
INNER JOIN, solo se extraen de la base de datos los conjuntos de datos en los que existan coincidencias entre la clave foránea de la
tabla1y la clave primaria de la
tabla2. Además, se puede definir una
función de filtro opcionalcon ayuda de la cláusula
WHERE.
Te aclaramos esto a continuación con un caso basado en nuestras tablas normalizadas
album,
interprety
title:
El script del ejemplo muestra una operación
INNER JOINen la que la tabla
albumestá relacionada con la tabla
interprety se seleccionan los conjuntos de datos en los que se da una coincidencia entre la clave primaria y la foránea.
Nuestra base de datos recoge todos y cada uno de los conjuntos de datos (un
LEFTo
RIGHT JOINtendría exactamente el mismo resultado). A continuación se producen los valores leídos con ayuda de un bucle
foreachy de la construcción del lenguaje
echoen el navegador.
En el marco de una sentencia SQL, se extraen los datos del intérprete de la tabla
interprety los relativos al título del álbum y al año de publicación del disco que aparecen en la tabla
album.
La decisión de los conjuntos de datos del join que deben visualizarse viene acotada con una condición en la
cláusula
WHERE
. Si, por ejemplo, se quiere acceder a los álbumes publicados en el año mil novecientos sesenta y ocho, se puede proceder de la siguiente manera:
Mediante la condición
WHERE released = 1968se limita dicha emisión en el navegador a un solo álbum.
Beggars Banquetde los
Rolling Stoneses el único álbum en nuestra todavía base de datos abarcable que se publicó en el año mil novecientos sesenta y ocho.
Con ayuda del comando
JOINse pueden unir múltiples tablas en una red de datos. En el ejemplo siguiente se combina la tabla
albumen un INNER JOIN con las tablas
interprety
titlepara lanzar información completa sobre los títulos musicales almacenados en la base de datos.
De ser preciso, es posible definir una cláusula
WHEREcon una función de filtrado. Un ejemplo de ello es si se quiere emitir información sobre la pista siete del álbum “Abbey Road”.
Es aconsejable prestar atención al hecho de que en la tabla
titlenos encaramos a una
clave primaria múltiple. Si se quiere hacer referencia a un título determinado, además del número de la pista, se necesita el
album_idque aparece en la tabla junto al título del álbum.
Este manual de MySQL para principiantes está concebido como un curso intensivo que explica los
fundamentos sobre los sistemas de bases de datos basados en SQLy presenta ejemplos de interés práctico de sencillas operaciones de bases de datos. Si la información expuesta sobre las posibilidades de la aplicación objeto de la presente guía es de tu interés, también puedes consultar la documentación enlazada en el capítulo propedéutico sobre los sistemas de gestión de bases de datos MySQL y MariaDB. También, Internet también alberga gran cantidad de páginas web que ofrecen tutoriales y ejemplos de empleo sobre el popular sistema de gestión de bases de datos.
Es aconsejable, además, visitar la plataforma on line, en la que una amplia comunidad de usuarios formada por más de 6,5 millones de desarrolladores intercambian información y hablan de los problemas relativos al desarrollo del software. La Digital Guide de IONOS, asimismo, contiene otros muchos artículos sobre bases de datos, a los que puedes acceder haciendo click sobre las etiquetas que aparecen más abajo.
¿Te ha agradado el artículo? 4.8
¿Te ha agradado el artículo? 4.8