ANDROID PROGRAMACIÓN DE SISTEMAS TELEMÁTICOS Msig. Adriana Collaguazo Jaramillo Docente FIEC-ESPOL TABLA DE CONTENIDOS UNIDAD 2. ADMINISTRACIÓN DE TECNOLOGÍAS WEB APLICACIONES BASADAS EN RED TECNOLOGÍAS WEB PARA DISPOSITIVOS TELEMÁTICOS GESTORES DE BASE DE DATOS Msig. Adriana Collaguazo Jaramillo OBJETIVO DE APRENDIZAJE Utilizar tecnologías web basadas en red para el monitoreo del estado y la información de los dispositivos telemáticos. Msig. Adriana Collaguazo Jaramillo Visual Studio Code Aplicaciones basadas en red ✔ Editor de código fuente ligero. ✔ Disponible para Windows, 4 macOS y Linux. ✔ Soporte integrado JavaScript, para TypeScript y Node.js Referencia: https://code.visualstudio.com/ Msig. Adriana Collaguazo Jaramillo Frontend – Backend 5 Msig. Adriana Collaguazo Jaramillo Frontend – Backend 6 Msig. Adriana Collaguazo Jaramillo Frontend – Backend 7 Msig. Adriana Collaguazo Jaramillo Mensajes de estado HTTP 8 Msig. Adriana Collaguazo Jaramillo Pre-requisitos HTML (Hypertext Markup Language) o HTML no es un lenguaje de programación. Es un lenguaje de marcado que le dice a los navegadores web cómo estructurar las páginas web que visita. o HTML consta de una serie de elementos que se utilizan para encerrar, envolver o marcar diferentes partes del contenido para que aparezca o actúe de una determinada manera. o Las etiquetas adjuntas pueden convertir el contenido en un hipervínculo para conectarse a otra página, poner palabras en cursiva, etc. Referencias: https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML/Getting_started Msig. Adriana Collaguazo Jaramillo 9 Pre-requisitos CSS (Cascading Stylesheets) o Se usa para darle estilos y diseño a la página web. Por ejemplo, puede usar CSS para modificar la fuente, el color, el tamaño y el espaciado de su contenido, dividirlo en varias columnas o agregar animaciones y otras características decorativas. 10 Referencias: https://developer.mozilla.org/en-US/docs/Learn/CSS Msig. Adriana Collaguazo Jaramillo Pre-requisitos JavaScript (JS) o JavaScript es un lenguaje dinámico de múltiples paradigmas con tipos y operadores, objetos estándar integrados y métodos. o Su sintaxis se basa en los lenguajes Java y C; muchas estructuras de esos lenguajes también se aplican a JavaScript. o JavaScript admite la programación orientada a objetos con prototipos de objetos, en lugar de clases Referencias: https://developer.mozilla.org/en-US/docs/Web/JavaScript/A_re-introduction_to_JavaScript Msig. Adriana Collaguazo Jaramillo 11 Pre-requisitos JavaScript (JS) 12 Msig. Adriana Collaguazo Jaramillo Backend - Creación de API REST con Node.js 13 Referencia: https://nodejs.org/ Msig. Adriana Collaguazo Jaramillo ¿Qué es Node.js? o Entorno de ejecución de código en JavaScript para el servidor. o Asíncrono. o Con E/S de datos en una arquitectura orientada a eventos. o Basado en el motor V8 de Google Chrome. Msig. Adriana Collaguazo Jaramillo 14 ¿Cómo utilizar Node.Js? o Uso de sockets. o Servidores locales o remotos. o Conexiones a bases de datos. 15 o Creación de servicios REST. Msig. Adriana Collaguazo Jaramillo ¿Quién usa Node.js? o Netflix o PayPal o LinkedIn 16 o Uber o Ebay Msig. Adriana Collaguazo Jaramillo Express o Es una infraestructura de aplicaciones web Node.js mínima y flexible que proporciona un conjunto sólido de características para las aplicaciones web y móviles. o Con miles de métodos de programa de utilidad HTTP y middleware a su disposición, la creación de una API sólida es rápida y sencilla. 17 Msig. Adriana Collaguazo Jaramillo Arquitectura de Node.Js o package.json: Generalmente en la raíz del proyecto, contiene metadatos sobre su aplicación o modulo, así como la lista de dependencias. o Ejecutando el commando npm install se pueden instalar estas dependencias y módulos. 18 Msig. Adriana Collaguazo Jaramillo Arquitectura de Node.js o NPM (Node Package Manager): Gestor de paquetes por defecto de Node.js. 19 Msig. Adriana Collaguazo Jaramillo Arquitectura de Node.js Require: Es un función que incluye módulos que existen en archivos separados. Lee un archivo JavaScript, ejecuta el archivo y luego procede a devolver el objetivo exportado. Permite importar librerías propias de la arquitectura de Node, librerías externas y nuestros propios módulos. 20 Msig. Adriana Collaguazo Jaramillo Rutas del API en Node.js En el código mostrado que se encuentra en la ruta PST>src>app.js se define el puerto, la ruta raíz del servidor web, que definen las rutas del API. PST 21 Msig. Adriana Collaguazo Jaramillo Métodos GET, POST en Node.js Definir en la ruta PST>src>controller>estudiante.controller.js los métodos GET, POST para el API. const dbConnection = require('../config/databaseCon'); const connection = dbConnection(); let getEstudiante = async (req,res)=>{ await connection.query("select * from estudiante", (err,result)=>{ if (result) res.send(result); else res.status(500).send(err); }); } 22 let addEstudiante = async (req,res)=>{ const {estudianteId,Name,LastName } = req.body await connection.query(`INSERT INTO ESTUDIANTE VALUES(${estudianteId}, '${Name}', '${LastName}')`, (err,result)=>{ if (result) res.send({estudianteId,Name,LastName}); else res.status(500).send(err); }); } module.exports = { getEstudiante, addEstudiante } Msig. Adriana Collaguazo Jaramillo Rutas del API en Node.js Programar las rutas del API, en PST>src>routes>estudiante.js const {Router} = require("express"); const router = Router(); const{ getEstudiante, addEstudiante } = require("../controller/estudiante.controller"); 23 router.get('/', getEstudiante); router.post("/",addEstudiante); module.exports = router; Msig. Adriana Collaguazo Jaramillo Conexión a la base de datos de MySQL Hacer la conexión a la base de MySQL con código JavaScript en la ruta PST>src>conf>databaseCon.js const mysql = require('mysql'); module.exports = () => { 24 return mysql.createConnection({ host: "200.9.176.230", user:'acollaguazo', password: 'adita', database:'espol', }); } Msig. Adriana Collaguazo Jaramillo Pruebas desde cliente Web Probar en el navegador web la URL http://localhost:3000/api/estudiante 25 Msig. Adriana Collaguazo Jaramillo ¿Qué es WAMP, MAMP, O LAMP? o WAMP: “Windows, Apache, MySQL, y PHP” o MAMP: “Mac, Apache, MySQL, y PHP” o LAMP: “Linux, Apache, MySQL, y PHP” 26 Estas abreviaturas describen una configuración totalmente funcional utilizada para desarrollar páginas web dinámicas de Internet. Msig. Adriana Collaguazo Jaramillo Frontend - Framework (marco de trabajo) Ember: Es un framework más antiguo, tiene buena popularidad debido a su estabilidad, soporte de la comunidad y algunos principios de codificación inteligentes. Angular: Es un framework de aplicaciones web y móviles de código abierto. 27 VUE: Extiende HTML con algo de su propio código. Aparte de eso, se basa principalmente en JavaScript estándar y moderno. REACT: Es una biblioteca para renderizar componentes de UI. React se usa en combinación con otras bibliotecas para hacer aplicaciones web. Msig. Adriana Collaguazo Jaramillo Frontend - REACT La creación de una aplicación React se trata de componentes. Un componente individual de React se puede considerar como un componente de IU en una aplicación. 28 Los componentes de React son objetos reutilizables. En React, la interfaz de usuario se expresa con funciones puras. Escribe código que parece HTML directamente en su JavaScript. Msig. Adriana Collaguazo Jaramillo Frontend - REACT Hay tres formas de declarar componentes de React: (1) Como clases de ES6. Estas clases formalizan el patrón común de JavaScript. 29 class HelloWorld extends React.Component { render() { return(<p>Hello, world!</p>) } } Msig. Adriana Collaguazo Jaramillo Frontend - REACT Hay tres formas de declarar componentes de React: (2) Importación y uso del método createReactClass (). 30 Msig. Adriana Collaguazo Jaramillo Frontend - REACT Hay tres formas de declarar componentes de React: (3) Los componentes funcionales sin estado son funciones, no objetos que toman propiedades y devuelven un elemento DOM. El Modelo de objetos de documento (DOM) se refiere al árbol HTML del navegador que forma una página web. const IngredientsList = props => React.createElement("ul", {className: "ingredients"}, props.items.map((ingredient, i) => React.createElement("li", { key: i }, ingredient) ) ) Msig. Adriana Collaguazo Jaramillo 31 Herramientas de Desarrollo Web En la página web dar clic derecho, luego seleccionar la opción Inspeccionar código 32 Msig. Adriana Collaguazo Jaramillo Herramientas de Desarrollo Web o Código fuente de la página web: En una página web dar clic derecho, luego seleccionar la opción “Inspeccionar código fuente”. o Bootstrap: Es un marco CSS gratuito y de código abierto para el desarrollo web y móvil. Contiene plantillas de diseño basadas en CSS y JavaScript para tipografía, formularios, botones, navegación y otros componentes de la interfaz. 33 https://getbootstrap.com o Documentación de código fuente para informes. https://carbon.now.sh Msig. Adriana Collaguazo Jaramillo Introducción a los sistemas de gestión de bases de datos ▪ Hay una variedad de sistemas de administración de bases de datos disponibles para Linux. Estos incluyen sistemas de gestión de bases de datos de alto nivel comercial, como Oracle, DB2 de IBM y Sybase. ▪ Las bases de datos de código abierto de Linux también están disponibles, como MySQL y PostgreSQL. Estos están entre los más utilizados en los sistemas Linux. La mayor parte de los sistemas de administración de base de datos disponibles para Linux, están diseñados para soportar grandes bases de datos relacionales. Msig. Adriana Collaguazo Jaramillo 34 Introducción a los sistemas de gestión de bases de datos ▪ El propósito de una base de datos es ayudar a las personas a dar seguimiento a las cosas. Las aplicaciones clásicas de bases de datos se refieren al seguimiento de artículos tales como órdenes, clientes, empleos, empleados. ▪ El “DataBase Management System” (DBMS) procesa la base de datos, y lo utilizan tanto los programadores como los usuarios, quienes pueden ingresar al DBMS directa o indirectamente. 35 Figura 3. Componentes de un sistema de bases de datos Msig. Adriana Collaguazo Jaramillo Introducción a los sistemas de gestión de bases de datos ▪ El ciclo de desarrollo de sistemas de bases de datos contiene los siguientes pasos: o Requerimientos: Pueden ser de 3 tipos de requerimientos escritos, verbales, formularios. o Modelo lógico: Pueden existir varios métodos como jerárquico/árbol, red, relacional (modelo entidad relación), objeto, internet. o Modelo físico o Desarrollo o Implantación o Retroalimentación Msig. Adriana Collaguazo Jaramillo 36 Modelo lógico Modelo entidad/relación ▪ Los elementos claves del modelo entidad-relación son entidades, atributos y relaciones. o Entidad: Es un objeto sobre el cual se requiere mantener o almacenar información. Ejemplos: facultad, alumno, materia, ciudad, item. Los tipos de entidades son: sujeto (empleado), objeto (articulo), evento (pedido), lugar (pais). FACULTAD CARRERA MATERIA Figura 4. Entidades Msig. Adriana Collaguazo Jaramillo 37 Modelo lógico Modelo entidad/relación ▪ Atributo: Las entidades tienen atributos o propiedades, como a veces se les llama, que describen las características de la entidad. Por ejemplo: FACULTAD CARRERA ESTUDIANTEb CodFacultad CodCarrera CodEstudiante NomFacultad Nombre Nombre Decano PerfilProfesional Cedula FechaCreacion Coordinador Direccion Ubicacion FechaCreacion Nacionalidad Carrera Figura 5. Atributos de las entidades Msig. Adriana Collaguazo Jaramillo 38 Modelo lógico Modelo entidad/relación ▪ Tipos de Atributos Clave primaria: # Obligatorio: * Opcional: O Foráneo: F Clave primaria foránea: F# FACULTAD CARRERA ESTUDIANTE # CodFacultad # CodCarrera # CodEstudiante * NomFacultad * NomCarrera * NomEstudiante * Decano O PerfilProfesional * Cedula * FechaCreacion * Coordinador O Direccion O Ubicacion * FechaCreacion * Nacionalidad F# CodFacultad F# CodCarrera Figura 6. Tipos de atributos Msig. Adriana Collaguazo Jaramillo 39 Modelo lógico Modelo entidad/relación ▪ Relaciones 1:1 1:N N:M 40 Figura 7. Relaciones Msig. Adriana Collaguazo Jaramillo Modelo lógico Modelo entidad/relación FACULTAD CARRERA ESTUDIANTE # CodFacultad # CodCarrera # CodEstudiante * NomFacultad * NomCarrera * NomEstudiante * Decano O PerfilProfesional * Cedula * FechaCreacion * Coordinador O Direccion O Ubicacion * FechaCreacion * Nacionalidad F# CodFacultad F# CodCarrera 41 Figura 8. UML (Lenguaje de Modelado Unificado) del Diagrama de Entidad/Relación del Sistema Académico Msig. Adriana Collaguazo Jaramillo Modelo lógico Modelo entidad/relación 42 Figura 9. UML del Diagrama de Entidad/Relación de un Sistema Musical https://www.lucidchart.com/ Msig. Adriana Collaguazo Jaramillo Estructura y diseño de base de datos relacional MySQL y PostgreSQL utilizan una estructura de base de datos relacional. Esencialmente, esto significa que los datos se colocan en tablas, con campos identificadores utilizados para relacionar los datos con las entradas en otras tablas. Cada fila de la tabla es un registro, cada uno con un identificador único, como un número de registro. Una simple base de datos de una tabla no necesita un identificador único. Msig. Adriana Collaguazo Jaramillo 43 SQL (Structured Query Language) SQL es el lenguaje de programación utilizado por la mayoría de los sistemas de gestión de base de datos relacional (RDBMSs), incluidos MySQL y PostgreSQL. Se utiliza principalmente para realizar consultas y operar sobre los datos almacenados en bases de datos, así como para definir y modificar la estructura de esas bases de datos. 44 Msig. Adriana Collaguazo Jaramillo SQL (Structured Query Language) SQL se compone de varios componentes, cada uno con su propio propósito único en la comunicación con la base de datos: Lenguaje de Definición de Datos (DDL): Permite crear, modificar o eliminar bases de datos y sus objetos relacionados, como tablas, vistas, etc. Los comandos incluyen CREATE, ALTER, DROP y TRUNCATE. Lenguaje de Manipulación de Datos (DML): Permite gestionar los datos dentro de los objetos de la base de datos. Estos comandos incluyen SELECT, INSERT, UPDATE y DELETE. Lenguaje de Control de Datos (DCL): Incluye comandos como GRANT y REVOKE, que tratan principalmente con derechos, permisos y otras tareas de gestión a nivel de control para el sistema de base de datos. Msig. Adriana Collaguazo Jaramillo 45 DDL (Data Definition Language) El Lenguaje de Definición de Datos (DDL) es un subconjunto de SQL. Su función principal es crear, modificar y eliminar estructuras de base de datos, pero no datos. Los comandos en DDL son: • CREATE: Crea una nueva base de datos, tabla, índice o vista. • ALTER: Modifica una base de datos existente, tabla, índice o vista. • DROP: Elimina una base de datos, tabla, índice o vista existente. • TRUNCATE: Elimina todos los registros de una tabla, pero mantiene la estructura de la 46 tabla intacta. Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Creación de base de datos Creación de una base de datos: mysql> CREATE DATABASE ESPOL; Query OK, 1 row affected (0,01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | ESPOL | +--------------------+ 47 4 rows in set (0,02 sec) mysql> use ESPOL; Database changed Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Creación de tabla mysql> CREATE TABLE Facultad ( codigo INT AUTO_INCREMENT NOT NULL, nombre VARCHAR(100) NOT NULL, decano VARCHAR(100) NOT NULL, fecha_creacion DATE NOT NULL, ubicacion VARCHAR(100), PRIMARY KEY (codigo) ); mysql> show tables; +-------------------+ | Tables_in_ESPOL | +-------------------+ | Facultad | +-------------------+ 48 mysql> describe Facultad; +----------------+--------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+-------------------+-----------------------------+ | codigo | int | NO | PRI | NULL | auto_increment | | nombre | varchar(100) | NO | | NULL | | | decano | varchar(100) | NO | | NULL | | | fecha_creacion | date | NO | | NULL | | | ubicacion | varchar(100) | YES | | NULL | | +----------------+--------------+------+-----+-------------------+-----------------------------+ Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Creación de tabla mysql> CREATE TABLE Carrera ( codigo INT PRIMARY KEY, nombre VARCHAR(20), perfil_prof VARCHAR(30), coordinador VARCHAR(50), fecha_creacion DATE, codigo_facultad INT, FOREIGN KEY (codigo_facultad) REFERENCES Facultad(codigo) ); mysql> describe Carrera; +------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+--------------+------+-----+---------+----------------+ | codigo | int | NO | PRI | NULL | auto_increment | | nombre | varchar(20) | NO | | NULL | | | perfil_prof | varchar(30) | YES | | NULL | | | coordinador | varchar(50) | YES | | NULL | | | fecha_creacion | date | YES | | NULL | | | codigo_facultad | int | YES | MUL | NULL | | +------------------+--------------+------+-----+---------+----------------+ 49 Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Creación de tabla mysql> --CREAR TABLA mysql> describe Estudiante; +----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | codigo | int(11) | NO | PRI | NULL | | | nombre | varchar(30) | NO | | NULL | | | cedula | varchar(10) | NO | | NULL | | | direccion | varchar(200) | NO | | NULL | | | nacionalidad | varchar(50) | NO | | NULL | | | codigo_carrera | int(11) | NO | MUL | NULL | | +----------------+--------------+------+-----+---------+----------------+ 50 Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Modificar tabla mysql> ALTER TABLE Facultad ADD telefono VARCHAR(20); mysql> describe Facultad; +----------------+--------------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+-------------------+-----------------------------+ | codigo | int | NO | PRI | NULL | auto_increment | | nombre | varchar(100) | NO | | NULL | | | decano | varchar(100) | NO | | NULL | | | fecha_creacion | date | NO | | NULL | | | ubicacion | varchar(100) | YES | | NULL | | | teléfono | varchar(20) | YES | | NULL | | +----------------+--------------+------+-----+-------------------+-----------------------------+ Msig. Adriana Collaguazo Jaramillo 51 Servicio de MySQL Eliminar campos de la tabla mysql> ALTER TABLE Carrera DROP COLUMN perfil_prof; mysql> describe Carrera; +------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+--------------+------+-----+---------+----------------+ | codigo | int | NO | PRI | NULL | auto_increment | | nombre | varchar(20) | NO | | NULL | | | coordinador | varchar(50) | YES | | NULL | | | fecha_creacion | date | YES | | NULL | | | codigo_facultad | int | YES | MUL | NULL | | +------------------+--------------+------+-----+---------+----------------+ 52 Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Eliminar datos de la tabla mysql> TRUNCATE TABLE Estudiante; mysql> describe Estudiante; +----------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+----------------+ | codigo | int(11) | NO | PRI | NULL | | | nombre | varchar(30) | NO | | NULL | | | cedula | varchar(10) | NO | | NULL | | | direccion | varchar(200) | NO | | NULL | | | nacionalidad | varchar(50) | NO | | NULL | | | codigo_carrera | int(11) | NO | MUL | NULL | | +----------------+--------------+------+-----+---------+----------------+ 53 Msig. Adriana Collaguazo Jaramillo DML (Data Manipulation Language) El Lenguaje de Manipulación de Datos (DML) es un subconjunto de SQL que se utiliza para manipular datos en una base de datos. El propósito de DML es insertar, recuperar, actualizar y eliminar datos de la base de datos. Con esto, podemos realizar operaciones en registros existentes. DML contiene cuatro comandos principales: • INSERT INTO: Este comando se utiliza para insertar nuevas filas (registros) en una tabla. 54 • UPDATE: Modifica registros existentes en una tabla. • DELETE: Elimina registros existentes de una tabla. • SELECT: Recupera datos de una o más tablas según los criterios especificados. Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Ingreso de registros La declaración "INSERT" se utiliza para agregar nuevas filas de datos a una tabla en una base de datos. Hay dos formas principales del comando INSERT: 1. INSERT INTO: Cuando no se nombran columnas, se espera un conjunto completo de columnas para insertar datos. INSERT INTO nombre_tabla VALUES (valor1, valor2, ...); 2. INSERT INTO table_name (columna1, columna2, ...): Cuando se nombran columnas específicas, solo esas columnas recibirán datos. INSERT INTO nombre_tabla (columna1, columna2, ...) VALUES (valor1, valor2, ...); Msig. Adriana Collaguazo Jaramillo 55 Servicio de MySQL Modificando un registro El comando UPDATE en SQL se utiliza para modificar los registros existentes en una tabla. Este comando es útil cuando necesitas actualizar datos ya existentes dentro de una base de datos. La cláusula WHERE en la declaración UPDATE especifica qué registros se modificarán. ¡Si omites la cláusula WHERE, se actualizarán todos los registros de la tabla! UPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2, ... WHERE condición; Msig. Adriana Collaguazo Jaramillo 56 Servicio de MySQL Eliminando un registro La declaración DELETE en SQL te ayuda a eliminar registros existentes de una base de datos. Sin embargo, ten en cuenta que es una operación destructiva y puede borrar permanentemente datos de tu base de datos. Con la declaración DELETE, puedes realizar lo siguiente: Eliminar todas las filas: La declaración DELETE sin una cláusula WHERE elimina todas las filas de una tabla. Esta operación es irreversible. DELETE FROM nombre_tabla; Eliminar filas específicas: Cuando se combina con la cláusula WHERE, la declaración DELETE en SQL borra filas específicas que cumplen con la condición especificada. DELETE FROM nombre_tabla WHERE condicion; Msig. Adriana Collaguazo Jaramillo 57 Servicio de MySQL Consulta de registros La declaración SELECT se utiliza en SQL para seleccionar datos específicos de una base de datos. En otras palabras, se usa para elegir de la base de datos lo que deseas mostrar. La sintaxis de la declaración SELECT es bastante sencilla: SELECT columna(s) FROM tabla WHERE condición; 58 También se puede ordenar los resultados utilizando la palabra clave ORDER BY: SELECT * FROM Estudiantes ORDER BY codigo_carrera; Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Query using the WHERE, LIKE keywords La palabra clave WHERE le permite restringir las consultas al devolver solo aquellas en las que cierta expresión es verdadera. También puede hacer una coincidencia de patrones para sus búsquedas usando el calificador LIKE, que permite búsquedas en partes de cadenas. Este calificador se debe usar con un carácter % antes o después de algún texto. Cuando se coloca antes de una palabra clave,% significa cualquier carácter. 59 mysql> select dirip from network where dirip LIKE "200.%"; +---------------+ | dirip | +---------------+ | 200.93.195.18 | +---------------+ 1 row in set (0.00 sec) Msig. Adriana Collaguazo Jaramillo Servicio de MySQL Query using JOIN Si desea especificar la columna en la que unir dos tablas, utilice el comando JOIN… ON: mysql> select servidor.id=network.servidor_id; nombresrv,dirip FROM servidor JOIN network WHERE mysql> select nombresrv,dirip FROM servidor JOIN network ON servidor.id=network.servidor_id; +-----------+---------------+ | nombresrv | dirip | +-----------+---------------+ | srv_dns1 | 200.93.195.18 | +-----------+---------------+ 1 row in set (0.00 sec) Msig. Adriana Collaguazo Jaramillo 60