INSTITUTO TECNOLÓGICO DE VILLAHERMOSA
NOMBRE DEL ALUMNO: LUIS ANGEL DE LA CRUZ ARIAS (MATRICULA: 12300968)
CARRERA: ING. SISTEMAS COMPUTACIONALES
MATERIA: ADMINISTRACIÓN DE BASE DE DATOS
ACTIVIDAD:REPORTE DEL PROYECTO DE UNA BASE DE DATOS
UNIDAD 2:ARQUITECTURA DEL GESTOR
CATEDRÁTICO: EUTIMIO SOSA SILVA
LUNES A VIERNES: DE 13:00-14:00
2
INDICE
Introducción…………………………………………………………………………………………3
Marco teórico………………………………………………………………………………………4
o Estructura de memoria y procesos de la instancia……………………………………4
o Estructuras físicas de la base de datos…………………………………………………5
o Requerimiento de instalación en modo transaccional…………………………………8
o Cuáles son las variables de ambiente y archivos importantes para su instalación..9
o Procedimiento general de configuración………………………………………………10
o Comando generales de alta y baja del DBMS………………………………………..15
Marco practico…………………………………………………………………………………….20
o Ejercicio…………………………………………………………………………………..20
o Modelo Entidad/Relación……………………………………………………………….20
o Consultas MySQL……………………………………………………………………….23
o Conclusión………………………………………………………………………………..34
PAG.
3
INTRODUCCIÓN
En este reporte se presenta algunas propiedades y características de un gestor de
base de datos, así como la arquitectura del mismo, también se mostrara la
instalación general y todos sus procedimientos, después de la teoría también se
verán algunas consultas en MySQL del proyecto que estoy manejando. Un SGBD
debe proporcionar los medios necesarios para garantizar que tanto los datos de la
base de datos, como los cambios que se realizan sobre estos datos, sigan ciertas
reglas. La integridad de la base de datos requiere la validez y consistencia de los
datos almacenados. Se puede considerar como otro modo de proteger la base de
datos, pero además de tener que ver con la seguridad, tiene otras implicaciones.
La integridad se ocupa de la calidad de los datos. Normalmente se expresa
mediante restricciones, que son una serie de reglas que la base de datos no
puede violar. Un SGBD debe proporcionar una serie de herramientas que permitan
administrar la base de datos de modo efectivo. Antes de instalar cualquier SGBD
(Sistema Gestor de la Base de Datos) es necesario conocer los requerimientos de
hardware y software, el posible software a desinstalar previamente, verificar el
registro de Windows y el entorno del sistema, así como otras características de
configuración especializadas como pueden ser la reconfiguración de los servicios
TCP/IP y la modificación de los tipos archivos HTML para los diversos
navegadores.
4
ESTRUCTURA DE MEMORIA Y PROCESOS DE LA INSTANCIA
La memoria se puede estructurar en las siguientes partes:
Área Global del sistema (SGA), la cual se comparte entre todos los
servidores y los procesos en segundo plano.
Áreas globales de programas (PGA), que es privada para cada servidor y
proceso en segundo planos; a cada proceso se asigna un PGA.
Área de Ordenaciones (Sort Areas).
Memoria Virtual Área de código de software.
Cada instancia está asociada a una base de datos. Cuando se inicia una base de
datos en un servidor (independientemente del tipo de computadora), se le asigna
un área de memoria (SGA) y lanza uno o más procesos. A la combinación del
SGA y de los procesos es lo que se llama instancia. La memoria y los procesos de
una instancia gestionan los datos de la base de datos asociada de forma eficiente
y sirven a uno o varios usuarios.
Cuando se inicia una instancia El DBMS monta la base de datos, es decir, asocia
dicha instancia a su base de datos correspondiente. En una misma computadora
pueden ejecutarse varias instancias simultáneamente, accediendo cada una a su
propia base de datos física.
Únicamente el administrador de la base de datos puede iniciar una instancia y
abrir una base de datos. Si una base de datos está abierta, entonces el
administrador puede cerrarla y, cuando esto ocurre, los usuarios no pueden
acceder a la información que contiene.
[MARCO TEORICO]
5
ESTRUCTURAS FÍSICAS DE LA BASE DE DATOS
En una base de datos almacenamos información relevante para nuestro negocio u
organización y desde el punto de vista físico, la base de datos está conformada
por dos tipos de archivos:
Archivos de datos: contiene los datos de la base de datos internamente, está
compuesto por páginas enumeradas secuencialmente que representa la unidad
mínima de almacenamiento. Cada página tiene un tamaño de 8kb de información.
Existen diferentes tipos de páginas, a tener en cuenta:
Páginas de datos: es el tipo principal de páginas y son las que almacenan
los registros de datos.
Páginas de espacio libre (PFS Page Free Space): almacenan información
sobre la ubicación y el tamaño del espacio libre.
Paginas GAM and SGAM: utilizadas para ubicar extensiones.
Páginas de Mapa de Ubicaciones de índices (IAM – IndexAllocationMap):
contiene información sobre el almacenamiento de páginas de una tabla o
índice en particular.
Páginas Índices: Utilizada para almacenar registros de índices.
Archivo de Registro de Transacciones: El propósito principal del registro de
transacciones es la recuperación de datos a un momento en el tiempo o
complementar una restauración de copia de respaldo completa (full backup). El
registro de transacciones no contiene páginas, sino entradas con todos los
cambios realizados en la base de datos, como son las modificaciones de datos,
modificaciones de la base de datos y eventos de copia de seguridad y
6
restauración. El acceso a datos es secuencial, ya que el registro de transacciones
se actualiza en el mismo orden cronológico en el que se hacen las modificaciones.
Este archivo no puede ser leído por herramientas de usuario de SQL aunque
existen herramientas de terceros que leen este archivo para recuperar los cambios
efectuados.
Dependiendo de la versión el registro de transacciones se utiliza para otros
propósitos como por ejemplo bases de datos espejo (mirror) y transporte remoto
de transacciones (log shipping).
Para muchos de los administradores de bases de datos, la imagen anterior
representa la parte lógica y la parte física, donde:
Data File:
Los datafiles son los archivos físicos en los que se almacenan los objetos que
forman parte de un tablespace. Un datafile pertenece solamente a un tablespace y
a una instancia de base de datos. Un tablespace puede estar formado por uno o
varios datafiles. Cuando se crea un datafile, se debe indicar su nombre, su
ubicación o directorio, el tamaño que va a tener y el tablespace al que va a
pertenecer. Además, al crearlos, ocupan ya ese espacio aunque se encuentran
totalmente vacíos, es decir, Oracle reserva el espacio para poder ir llenándolo
poco a poco con posterioridad. Por supuesto, si no hay sitio suficiente para crear
un archivo físico del tamaño indicado, se producirá un error y no se creará dicho
archivo.
Cuando se van creando objetos en un tablespace, éstos físicamente se van
almacenando en los datafiles asignados a dicho tablespace, es decir, cuando
creamos una tabla y vamos insertando datos en ella, estos datos realmente se
reparten por los archivos físicos o datafiles que forman parte del tablespace. No se
puede controlar en qué archivo físico se almacenan los datos de un tablespace. Si
7
un tablespace está formado por 2 datafiles y tenemos una tabla en ese
tablespace, a medida que vamos insertando filas éstas se almacenarán en
cualquiera de los dos datafiles indistintamente, es decir, unas pueden estar en un
datafile y otras en otro.
El espacio total disponible en un tablespace es lógicamente la suma de los
tamaños que ocupan los archivos físicos o datafiles que lo forman. Como hemos
indicado estos datafiles, al crearlos, están totalmente vacíos, simplemente es un
espacio reservado y formateado por Oracle para su uso. A medida que se van
creando objetos en ellos como tablas, índices, etc. y se van insertando registros
en estas tablas, los datafiles se van llenando o, lo que es lo mismo, el tablespace
se va llenando.
Tienen las siguientes características:
Un archivo sólo puede estar asociado con una base de datos.
Los archivos de datos tienen atributos que permiten reservar
automáticamente para ellos extensiones cuando se acaba el espacio.
Uno o más archivos de datos forman una unidad lógica de almacenamiento
llamada tablespace.
Os Block:
Conocidos como Disk Block, estos mapean a los data blocks. A la hora de crear
una nueva base de datos se debe indicar cuántos bloques de sistema operativo
formarán un bloque de datos.
8
REQUERIMIENTO DE INSTALACIÓN EN MODO TRANSACCIONAL
Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito.
Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la "bitácora" que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es un "software" de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio.
Se usan los siguientes métodos:
Begin TRans para iniciar la transacción CommitTrans para efectuar los cambios con éxito RollbackTrans para deshacer los cambios
Y depende que base de datos uses para efectuar las operaciones pero, es la misma teoría para cualquier BD.
Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos.
Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. Entonces, podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. Los pasos serían:
9
Crear una base de datos Crear una tabla Introducir datos en la tabla Recuperar datos desde la tabla de varias maneras Emplear múltiples tablas
CUÁLES SON LAS VARIABLES DE AMBIENTE Y ARCHIVOS IMPORTANTES PARA SU INSTALACIÓN
Para instalar MySQL como primer instancia el archivo primordial es el que se
descarga de la Web de MySQL. El proceso para instalar MySQL desde un archivo
ZIP es el siguiente:
Extraer el contenido del archivo dentro del directorio de instalación deseado.
Crear un archivo de opciones.
Elegir un tipo de servidor MySQL
Iniciar el servidor MySQL.
Establecer la seguridad de las cuentas de usuario por defecto.
10
PROCEDIMIENTO GENERAL DE CONFIGURACION
1.- EJECUTAR EL PROGRAMA DE INSTALACION
2.- APARECERA UNA PANTALLA DE INICIO DE INSTALACION DONDE DAREMOS CLICK EN NEXT
3.- EN LA SIGUIENTE PANTALLA ACEPTAREMOS LOS TERMINOS DE USO Y DAREMOS CLICK EN NEXT
11
4.- EN LA SIGUIENTE PANTALLA ELEGIREMOS EL TIPO DE INSTALACION QUE DESEAMOS EN ESTE CASO COMPLETA Y DAMOS CLICK EN NEXT
5.- EN LA SIGUIENTE PANTALLA APARECERA LA INFORMACION DE LA INSTALACION Y DAMOS CLICK EN INSTALL
6.- APARECERA LA PANTALLA DE PROGESO DE INSTALACION
12
7.- APARECERA UNA PANTALLA DE MySQL Y DAREMOS NEXT
8.- EN LA PANTALLA SIGUIENTE SELECCIONAREMOS LA OPCION CONFIGURE THE MYSQL SERVER NOW
13
9.- EN LA SIGUIENTE PANTALA SE MEPEZARA LA CONFIGURACION DE LA INSTANCIA DE MYSQL Y DAMOS CLICK EN NEXT
10.- SELECCIONAMOS LA CONFIGURACION DE STANDARD CONFIGURATION
11.- SELECCIONAMOS LAS CASILLAS QUE APARACEN A CONTINUACION Y DAMOS CLICK EN NEXT
14
12.- SELECCIONAMSO LAS CASILLAS QUE APARECEN ACONTINUACION E INGRESAMOS UNA CONTRASEÑA PARA EL ROOT Y DAMOS CLICK EN NEXT
13.- DAMOS CLICK EN EXECUTE PARA INICIAR LA CONFIGURACION
15
14.- Y POR ULTIMO SE INSTALARAN TODA LAS CONFIGURACIONES COMO APARECE EN LA SIGUENTE PANTALLA
COMANDOS GENERALES DE ALTA Y BAJA DEL DBMS
Una tabla es un sistema de elementos de datos (atributo - valores) que se
organizan que usando un modelo vertical - columnas (que son identificados por su
nombre)- y horizontal filas. Una tabla tiene un número específico de columnas,
pero puede tener cualquier número de filas. Cada fila es identificada por los
valores que aparecen en un subconjunto particular de la columna que se ha
identificado por una llave primaria.
Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en
cuanto a que los datos se almacenan en filas y columnas. Como consecuencia,
normalmente es bastante fácil importar una hoja de cálculo en una tabla de una
base de datos. La principal diferencia entre almacenar los datos en una hoja de
cálculo y hacerlo en una base de datos es la forma de organizarse los datos.
MySQL
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos
de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan
con tablas transaccionales y otros que no lo hacen:
MyISAM: trata tablas no transaccionales. Proporciona almacenamiento y
recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM
se soporta en todas las configuraciones MySQL, y es el motor de almacenamiento
16
por defecto a no ser que tenga una configuración distinta a la que viene por
defecto con MySQL.
El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor
de almacenamiento MERGE permite una colección de tablas MyISAM idénticas
ser tratadas como una simple tabla. Como MyISAM, los motores de
almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se
incluyen en MySQL por defecto.
Nota: El motor de almacenamiento MEMORY anteriormente se conocía como
HEAP.
Los motores de almacenamiento InnoDB y BDB proporcionan tablas
transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos
sistemas operativos que la soportan. InnoDB también se incluye por defecto en
todas las distribuciones binarias de MySQL 5.0. En distribuciones fuente, puede
activar o desactivar estos motores de almacenamiento configurando MySQL a su
gusto.
El motor de almacenamiento EXAMPLE es un motor de almacenamiento 'tonto'
que no hace nada. Puede crear tablas con este motor, pero no puede almacenar
datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL
para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés
primario es para desarrolladores.
NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para
implementar tablas que se particionan en varias máquinas. Está disponible en
distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está
disponible para Linux, Solaris, y Mac OS X. Los autores mencionan que se añadirá
soporte para este motor de almacenamiento en otras plataformas, incluyendo
Windows en próximas versiones.
El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades
de datos sin índices con una huella muy pequeña.
17
El motor de almacenamiento CSV guarda datos en archivos de texto usando
formato de valores separados por comas.
El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor
guarda datos en una base de datos remota. En esta versión sólo funciona con
MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de
conectar con otras fuentes de datos usando otros drivers o métodos de conexión
clientes.
La versión 5 de MySQL crea por defecto tablas InnoDB que permiten el manejo
de integridad referencial, transacciones. Al igual que las tablas regulares de
Oracle. Para saber si el gestor de base de datos de MySQL que tenemos las
soporta es necesario ejecutar la siguiente sentencia.
SHOW VARIABLES like '%innodb%';
Comando Describe
MySQL proporciona este comando que resulta útil para conocer la estructura de
una tabla, las columnas que la forman y su tipo y restricciones. La sintáxis es la
siguiente:
DESCRIBE nombre Tabla.
DESCRIBE f1;
Comando SHOW TABLES y SHOW CREATE TABLE
El comando SHOW TABLES muestra las tablas dentro de una base de datos y
SHOW CREATE TABLES muestra la estructura de creación de la tabla.
Tablas Temporales
Las tablas temporales solo existen mientras la sesión está viva. Si se corre este
código en un script de PHP (Cualquier otro lenguaje), la tabla temporal se
destruirá automáticamente al término de la ejecución de la página. Si no específica
MEMORY, la tabla se guardará por defecto en el disco.
CREATE TEMPORARY TABLE temporal (
18
ife INTEGER (13) PRIMARY KEY,
nombre CHAR (30) NOT NULL UNIQUE
);
Este tipo de tabla solo puede ser usada por el usuario que la crea.
Si creamos una tabla que tiene el mismo nombre que una existente en la base de
datos, la que existe quedará oculta y trabajaremos sobre la temporal.
Tablas Memory (Head)
Se almacenan en memoria
Una tabla head no puede tener más de 1600 campos
Las tablas MEMORY usan una longitud de registro fija.
MEMORY no soporta columnas BLOB o TEXT.
MEMORY en MySQL 5.0 incluye soporte para columnas AUTO_INCREMENT e
índices en columnas que contengan valores NULL.
Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra
tabla no-TEMPORARY).
CREATE TEMPORARY TABLE temporal (
ife INTEGER (13) PRIMARY KEY,
nombre CHAR (30) NOT NULL UNIQUE
) ENGINE = MEMORY;
Modificación
Esta operación se puede realizar con el comando ALTER TABLE. Para usar
ALTER TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla. La
sintaxis para MySQL es
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...;
19
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name]
| ADD [COLUMN] (column_definition,)
| ADD INDEX [index_name] [index_type] (index_col_name,)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,)
| ADD [CONSTRAINT [symbol]]
UNIQUE [index_name] [index_type] (index_col_name,)
| ADD [FULLTEXT|SPATIAL] [index_name] (index_col_name,)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
20
| CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options
BIBLIOGRAFIA:(Administracion de Base de Datos, s.f.) (Administracion de Base de Datos, 2013) (Pacheco Velasco, s.f.)
[MARCO PRÁCTICO]
EJERCICIO 4:
A partir del siguiente supuesto diseñar el modelo entidad-relación:
“Se desea diseñar una base de datos para almacenar y gestionar la información empleada por una empresa dedicada a la venta de automóviles, teniendo en cuenta los siguientes aspectos: La empresa dispone de una serie de coches para su venta. Se necesita conocer la matrícula, marca y modelo, el color y el precio de venta de cada coche. Los datos que interesa conocer de cada cliente son el NIF, nombre, dirección, ciudad y número de teléfono: además, los clientes se diferencian por un código interno de la empresa que se incrementa automáticamente cuando un cliente se da de alta en ella. Un cliente puede comprar tantos coches como desee a la empresa. Un coche determinado solo puede ser comprado por un único cliente El concesionario también se encarga de llevar a cabo las revisiones que se realizan a cada coche. Cada revisión tiene asociado un código que se incrementa automáticamente por cada revisión que se haga. De cada revisión se desea saber si se ha hecho cambio de filtro, si se ha hecho cambio de aceite, si se ha hecho cambio de frenos u otros. Los coches pueden pasar varias revisiones en el concesionario”.
MODELO ENTIDAD/RELACION:
21
Registros en las tablas, que eran 20 registros por cada tabla:
Tabla cliente
22
Tabla coche
Tabla Revisión
23
Estas son las tablas de las relaciones, a la cual también le ingrese registros para poder hacer consultas:
Tabla compra
Tabla mantenimiento
24
CONSULTAS MySQL:A continuación se realizaran 30 consultas con varios comandos ya conocidos, para esto primero usamos la base de datos que tenemos listo hecho:
select * from cliente;
25
select * from cliente where NIF=10;
select * from cliente where NIF like'20%';
select NIF, nombre, Telefono from cliente where NIF > 7 and NIF < 17;
select NIF, Nombre from cliente where Nombre like 'c%' || Nombre like 'p%';
26
select * from coche;
select * from coche where Matricula=12;
select * from coche where Marca="Jeep" OR Marca="Ferrari" OR Marca="Mazda";
27
select * from coche ORDER BY Marca;
select * from coche ORDER BY Matricula DESC;
select * from coche where Matricula BETWEEN 5 AND 15;
28
select * from Revision;
select * from Revision where Codigo like '7%';
select * from Cliente where NIF not like '5';
29
select Matricula, Marca, Modelo from coche where Matricula like '5%' || Matricula like '15%';
select NIF ,Nombre ,Marca ,Modelo ,Precio from cliente inner join coche on cliente.NIF = coche.Matricula where cliente.Nombre="Luis Angel de la Cruz";
select * from coche where Matricula="3";
select nombre, modelo, marca from cliente, coche where NIF=cliente.NIF AND coche.Matricula=cliente.NIF;
30
select Matricula, Marca, Modelo, Filtro, Aceite, Freno from coche inner join revision on coche.Matricula = revision.Codigo where coche.Marca="Audi";
select NIF, nombre, modelo, marca, precio, filtro from cliente, coche, revision where NIF=cliente.NIF AND coche.Matricula=cliente.NIF AND revision.Codigo=cliente.NIF;
31
select nombre, direccion, marca, aceite from cliente, coche, revision where NIF=cliente.NIF AND coche.Matricula=cliente.NIF AND revision.Codigo=cliente.NIF;
select NIF, nombre, telefono, marca, precio from cliente, coche where NIF=cliente.NIF AND coche.Matricula=cliente.NIF;
32
select * from Cliente where Nombre="Carlos Alonso Barrueta";
select Nombre, Marca, Precio from cliente inner join coche on cliente.NIF = coche.Matricula where cliente.Nombre="Ambar Paz";
select Marca, Modelo, Aceite from coche inner join revision on coche.Matricula = revision.Codigo where coche.Matricula="7";
33
select * from cliente ORDER BY nombre;
select * from coche where matricula BETWEEN 5 AND 10;
select * from coche where Marca="Nissan";
34
select nombre, telefono, matricula, marca, precio, aceite, freno from cliente, coche, revision where NIF=cliente.NIF AND coche.Matricula=cliente.NIF AND revision.Codigo=cliente.NIF;
select nombre, direccion, telefono, marca, modelo from cliente inner join coche on cliente.NIF = coche.Matricula where cliente.Nombre="David Gustavo Cadena";
CONCLUSION
35
La herramienta Workbench es de mucha utilidad ya que las bases de datos que
deseas crear se hacen de manera rápida y sencilla, aunque al principio de uso te
causara algunos problemas, pero después nos daremos cuenta cual era el
problema que nos causaba, a mí me paso cuando lo empecé a utilizar y la verdad
no tenia idea de como conectarla al manejador MySQL pero investigando pude
resolver mi problema. Omitiendo los problemas cabe decir que es muy fácil de
usar, en las consultas que yo realice lo hice mucho más rápido que en consola, es
una gran diferencia utilizar consola y la herramienta en modo interfaz gráfica,
nosotros no estamos acostumbrados a usar consolas por lo que nos cuesta
trabajo realizar alguna actividades en la base de datos, y a veces nos desespera
al no obtener el resultado que queremos, en fin es mucho más complicado usar la
consola, pero gracias a la herramienta Workbench es posible realizar bases de
datos de manera fácil.
Top Related