lunes, 30 de abril de 2018

Conexión Mysql con Python

pip Python
Pip es un sistema de gestión de paquetes utilizado para instalar y administrar paquetes de software escritos en Python. Este nos servira para instalas las librerias o modulos necesarios para conectar mysql con nuestros programas en python.

En mi caso ya venía instalado:

En caso de no tenerlo instalado les dejo unos enlaces que les ayudarán:
https://packaging.python.org/tutorials/installing-packages/
https://tecnonucleous.com/2018/01/28/como-instalar-pip-para-python-en-windows-mac-y-linux/


Librerías para mysql en python
Las librerías que yo exploré para el proyecto fueron:
-Mysql
-PyMysql
-mysql-connector-pyhton
-mysqldb


Instalar la librería "Mysql"
En mi caso no pude instalar dicha librería con pip


Pero la instalé desde el siguiente enlace de forma manual:
https://dev.mysql.com/downloads/connector/python/


Hacer Funcionar la conexión de mysql con python

Para este trabajo utilizamos una de las bases de datos con las que ya habíamos estado trabajando anteriormente en clase.





Este video fue la base para realizar la conexión:
https://www.youtube.com/watch?v=1VV1ludVeBk&t=389s


En nuestro caso el resultado fue el siguente:


   






Diseño de interfaz y captura de Datos
Para este ejemplo con interfaz utilizamos las siguientes librerías:


Así se establece la conexión:



La Interfaz quedó diseñada de la siguiente manera:


Al momento de ingresar datos correctamente aparece un mensaje de que se ha realizado correctamente la instrucción:

Y si comprobamos en la base de datos tenemos que sí se agregan los datos correctamente:









miércoles, 18 de abril de 2018

Mi ejemplo de macro (Cambiar el color de la pantalla)




azul macro
    mov ah,0
    mov al,3h
    int 10h
    mov ax,0600h
    mov bh,0fh
    mov cx,0000h
    mov dx,184Fh
    int 10h
    mov ah,02h
    mov bh,00
    mov dh,00
    mov dl,00
    int 10h
    mov ah,06h
    mov bh,1fh  ; esto es para el color de fondo y las letras
    mov cx,0000h
    mov dx,184fh
    int 10h
 
    mov ax,4c00h ; esto lo que hace es que una vez que haya cambiado la pantalla a color azul, se termina el programa
    int 21h
endm

morado macro
    mov ah,06h
    mov bh,5eh    ;esto es lo que cambia al procedimiento anterior
    mov cx,0000h
    mov dx,184fh
    int 10h
    mov ax,4c00h
    int 21h
endm

color macro
    mov ah,06h
    mov bh,3fh    ;esto es lo que cambia al procedimiento anterior
    mov cx,0000h
    mov dx,184fh
    int 10h
    mov ax,4c00h
    int 21h
endm

                       
                   


.model small

.stack
.data
titulo db 13,10,' CAMBIAR FONDO DE PANTALLA',13,10,'$'
mensaje1 db 'Presione ENTER si quiere la pantalla azul. ',13,10,'$'
mensaje2 db 'Presione la tecla 2 si quiere morado',13,10,'$'
mensaje3 db 'Presione la tecla 3 si quiere azul bajito',13,10,'$'


.code

inicio:
;-------------------------------------------- para preparar pantalla
mov ah,0
 mov al,3h  ;modo texto
 int 10h    ;interrupcion de video

 mov ax,0600h  ;limpiar la pantalla
 mov bh,0fh  ; pone el color de fonodo negro
 mov cx,0000h  ; esto es para las esquinas
 mov dx,184Fh
 int 10h
 mov ah,02h
 mov bh,00
 mov dh,00
 mov dl,00
 int 10h

;------------------------------------------------- mostrar mensajes
mov ax,@data  ;esto es la parametrizacion
mov ds,ax

lea dx,titulo   ;en estas lineas mostramos el titulo
mov ah,9h
int 21h

lea dx,mensaje1 ; mostramos el mensaje
mov ah,9h
int 21h

lea dx,mensaje2 ; mostramos el mensaje
mov ah,9h
int 21h

lea dx,mensaje3 ; mostramos el mensaje
mov ah,9h
int 21h


;--------------------------------------------------- capturacion de teclas
mov ah,08  ; pausa y capyuta la tecla que presione el usuario
 int 21h   ; esta interrupcion es para capturar

 cmp al,13    ; verifica si se presiono enter
 je llamarAzul  ;manda llamar a la etiqueta correspondiente

cmp al,50   ;aqui verifica si se ingreso el numero 2 (el numero dos es el numero 50 en ascii)
je llamarMorado ;manda llamar la etiqueta correspondiente

cmp al,51   ;aqui verifica si se ingreso el numero 2 (el numero dos es el numero 50 en ascii)
je llamar ;manda llamar la etiqueta correspondiente

jmp fin  ;si no se realiza nada, manda llamar a la etiqueta "fin"

;------------------------Etiquetas:

fin:
mov ax,4c00h
int 21h

llamarAzul:  ; manda llamar rl procedimiento Azulproc
azul

llamarMorado:  ; manda llamar el procedimiento Moracoproc
morado

llamar:  ; manda llamar el procedimiento Moracoproc
color

ret
;--------------------------------------------------------------------------------------------------------------------------------------------------

martes, 17 de abril de 2018

Unidad 2

Objetivo de la Unidad

-Saber las memorias de los DBMS
-Saber instalar un DBMS
-Conocer los requisitos para cada DBMS
-Saber elegir un DBMS

2.1 Características del DBMS


CONTROL DE REDUNDANCIA.
En la creación tradicional de programas de archivos, cada grupo de usuarios mantiene sus propios archivos para manejar sus aplicaciones de procesamiento de datos. Supongamos la situación para una base de datos de un supermercado. Los grupos involucrados serían, entre otros, el de finanzas y el de reposición. Con el enfoque tradicional, cada sector mantendría archivos independientes para los proveedores, cada uno con un objetivo distinto. Buena parte de los datos se almacenarían dos veces.
 

Generalmente, esta redundancia de datos provoca varios problemas: 
•Es necesario realizar la misma actualización -introducir un nuevo proveedor- varias veces: una vez en cada archivo que contenga datos de proveedores. Esto implica duplicar el trabajo 
•Se desperdiciara espacio de almacenamiento al guardar los mismos datos en varios lugares 
•Es posible que los archivos que representan los mismos datos se tornen inconsistentes

RESTRICCIÓN DE LOS ACCESOS NO AUTORIZADOS.
Cuando muchos usuarios comparten una misma base de datos, es probable que no todos tengan la autorización para tener acceso a toda la información que contiene. El SGBD debe contar con un subsistema de seguridad y autorización que permita al DBA crear cuentas y especificar restricciones para ellas.

CUMPLIMIENTO DE LAS RESTRICCIONES DE INTEGRIDAD.
La mayor parte de las aplicaciones de base de datos tienen ciertas restricciones de integridad que deben cumplir los datos. El SGBD debe ofrecer recursos para definir tales restricciones y hacer que se cumplan. Por ejemplo, en la tabla de abajo, podemos especificar que el valor del elemento Ciclo dentro de cada registro de la tabla ESTUDIANTE debe ser un entero entre 1 y 5. 





RESPALDO Y RECUPERACIÓN
Todo SGBD debe contar con recursos para recuperarse de fallos de hardware o de software. Para ello está el subsistema de respaldo y recuperación del SGBD. Por ejemplo, si el sistema falla mientras se está ejecutando un complejo programa de actualización, el subsistema de recuperación se encargará de asegurarse de que la base de datos se restaure al estado en el que estaba antes de que comenzara la ejecución del programa.

2.1.1 Estructura de memoria y procesos de la instancia

Área Global del Sistema (System Global Area, SGA)

El Área Global del Sistema (SGA) es un grupo de estructuras de la memoria compartida que contiene datos e información de control de una instancia de una BD. Si varios usuarios se conectan de forma concurrente a la misma instancia, entonces los datos se comparten en el SGA, por lo que también se llama shared global area.

Una instancia en Oracle se compone de un SGA y de procesos. Cuando se crea una instancia, Oracle asigna memoria a un SGA automáticamente y esta se devuelve al sistema operativo cuando la instancia se cierra. Por tanto, cada instancia posee su propio SGA.

Además, es de lectura/escritura. Todos los usuarios conectados a una instancia multiproceso pueden leer la información contenida en el SGA de la instancia y varios procesos pueden escribir en él durante la ejecución.

Una parte del SGA contiene información general acerca del estado de la base de datos y de la instancia, a la que los procesos en segundo plano necesitan acceder (SGA fija), pero no se almacenan los datos de usuario. El SGA también incluye información de comunicación entre procesos, como la información de bloqueos. Además, si el sistema usa una arquitectura de servidor compartido, entonces las colas de petición y respuesta y algunos contenidos del PGA se encuentran en el SGA.

El SGA contiene la siguiente estructura de datos:

· Caché de los Buffers de la BD (Database Buffer Cache).
· Buffer del Dietario o del Registro del Rehacer (Redo Log Buffer).
· El ‘Pool’ Compartido (Shared Pool).
· Caché de Biblioteca.
· Caché del Diccionario de Datos.
· Estructuras de Control.
· Información diversa

Instancia de una Base de Datos
Cada instancia Oracle está asociada a una base de datos. Cuando se inicia una base de datos en un servidor (independientemente del tipo de ordenador), 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.

Figura 2. Estructura de una instancia de Oracle

La Instancia y la Base de Datos

Cuando se inicia una instancia Oracle monta la base de datos, es decir, asocia dicha instancia a su base de datos correspondiente. En un mismo ordenador 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.



2.1.2 Estructuras Físicas de la Base de Datos

Áreas Globales de Programas PGA (Program Global Areas)

Un área global de programa (PGA) es una región de memoria que contiene datos e información de control para los procesos de servidores. Es una memoria no compartida creada por Oracle cuando un proceso de un servidor es iniciado. Solo el servidor del proceso puede acceder a él y se lee y escribe solamente por un código de Oracle que actúa en nombre del proceso.

Contenido de un PGA

El contenido de la memoria de un PGA varía dependiendo de dónde se está ejecutando la instancia y de si el tipo de servidor es compartido. Pero generalmente la memoria del PGA puede ser clasificada de la siguiente forma:

Memoria de Sesión: La memoria de sesión (Session Memory) se asigna para mantener las variables de una sesión (logon information) y otra información relativa a la sesión. Para un servidor compartido, la memoria de sesión es compartida y no privada.

Área SQL Privada: Un área SQL privada contiene datos como por ejemplo consultas de información de ejecuciones y consultas de ejecuciones en áreas de trabajo. Cada sesión que establece una sentencia tiene un área privada de SQL. Cada usuario que emite la misma sentencia tiene su propia área SQL privada que usa un área SQL compartida. Aunque, muchas áreas SQL privadas pueden ser asociadas con la misma área SQL compartida.

La ubicación de un área privada SQL depende del tipo de conexión establecida para una sesión. Si una sesión se conecta a través de un servidor dedicado, las áreas privadas SQL esta localizadas en el servidor del proceso del PGA. De cualquier forma, si una sesión se conecta a través de un servidor compartido, parte del área privada SQL se mantiene en el SGA.

Cursores y Áreas SQL

La aplicación de desarrollo de un programa precompilador Oracle o un programa OCI puede explícitamente abrir cursores, o manejar algún área privada SQL específica, y usarla como un recurso nombrado a través de la ejecución de un programa. Los cursores recursivos de Oracle que emiten implícitamente algunas sentencias SQL también usan áreas SQL.

La administración de las áreas SQL privadas son responsabilidad de los procesos del usuario. La asignación y liberación de las áreas SQL privadas dependen de en qué herramienta de la aplicación se usan, aunque el número de áreas SQL privadas que un proceso de usuario puede asignar está siempre limitado el parámetro OPEN_CURSORS. El valor por defecto de este parámetro es 50.

Un área SQL privada continua existiendo hasta que el correspondiente cursor es cerrado o la sentencia es liberada. Aunque Oracle libera el área de ejecución después de que la sentencia se complete, el área persistente se mantiene en espera. Las aplicaciones de desarrollo cierran todos los cursores abiertos que no van a ser usados otra vez para liberar el área persistente y minimizar la cantidad de memoria requerida por el usuario de la aplicación.



2.1.3 Requerimientos para Instalación de la Base de Datos

Antes de instalar cualquier SGBD 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.
Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar oracle 11g Express y MySQL estándar versión 5.1. En Windows Seven y Ubuntu 10.
Requerimiento
Oracle
MySQL
RAM
512 MB
512 MB
Memoria virtual
1024 MB
1024 MB
Espacio disco duro
1.5 GB
1 GB
Tamaño máximo de la base de datos
4 GB
Sin limite
Sistema Operativo: Windows Server, Windows Seven, Linux, Unix
  

Arquitectura del Sistema 32/64-bit


Protocolo de red TCP/IP
Protocolo de red TCP/IP con SSL


La regla general para determinar el tamaño de la memoria virtual depende del tamaño de memoria RAM instalada. Si su sistema tiene menos de 4 GB de RAM por lo general el espacio de intercambio debe ser de al menos dos veces este tamaño. Si usted tiene más de 8 GB de memoria RAM instalada puede considerar usar el mismo tamaño como espacio de intercambio. Cuanta más memoria RAM tenga instalada, es menos probable usar el espacio de intercambio, a menos que tenga un proceso inadecuado.

2.1.4 Instalación del software de BD en modo transaccional 

Para realizar la instalación de un SGBD, se deberían identificar los siguientes requisitos:

Tamaño de la base de datos. Un gran tamaño de base de datos requiere se software muy potente para la gestión de la misma, además podría plantear el hecho de separar los datos en distintas unidades de disco o incluso máquinas lo que podría requerir clústeres o sistemas distribuidos.
Conectividad. Si necesitamos que la base de datos sea accesible desde Internet, una Intranet o incluso si bastaría con un solo equipo de acceso.
Número de usuarios. Un número grande de usuarios requiere controles avanzados de seguridad.
Número de conexiones simultáneas. Suele ser el punto álgido de requisitos, ya que un gran número de conexiones simultáneas implica SGBD con grandes capacidades de trabajo concurrente y pocos Sistemas serían capaces de aceptarlo.
Aprovechamiento de hardware. Puede ser que sea el propio hardware de la empresa el que predetermine la selección al estar limitados por el mismo.
Política de empresa. Por ejemplo si la empresa tiene una política de impulso de software libre o acuerdos con empresas concretas de software.

Instalación y Configuraciòn de un SGBD
Comprobación de requerimientos:
Sistemas operativos. No todos los SGBD son multiplataforma, lo normal es que sean compatibles con unas cuantas plataformas: Windows, Linux, Unix,…
Paquetes o aplicaciones preinstaladas. A veces se requiere que el sistema posea algún software previo a la instalación del SGBD. En el mundo Linux se suele requerir de paquetes (como por ejemplo el compilador de C, o librerías especiales de entrada salida,…); en Windows es alguna actualización (como sus clásicos Service Pack) o software de terceros que se requiere (como la máquina Java, el Framework .Net o un servidor web concreto).
Memoria RAM. Es el requisito que más importa: más RAM, más ligero funciona el sistema. Oracle en su versión 11g aconseja al menos 1 GB de RAM
Procesador. Se suele exigir un modelo y una velocidad mínima en el mismo.
Disco duro. Se exige un espacio mínimo de disco
Requisitos de red. Se puede exigir que el equipo tenga una función concreta como que sea un servidor de dominio, o que tenga una conectividad particular (como una dirección IP fija).
Incompatibilidades. A veces se indican productos con los que existen problemas de compatibilidad. 

2.1.5 Variables de Ambiente y archivos importantes para instalación.


Variable: Es un espacio en memoria al cual se le da un nombre Hay variables específicas que se crean al momento de entrar al sistema, pero también hay variables que pueden ser definidas por el usuario. Las variables son una forma de pasar información a los programas al momento de ejecutarlos.

Variables de Ambiente: Se usan para personalizar el entorno en el que se ejecutan los programas y para ejecutar en forma correcta los comandos del shell.

Toman su valor inicial generalmente de un archivo .profile, pero hay veces en que el usuario tiene que modificar los valores de alguna variable de ambiente cuando está tratando de instalar o ejecutar un nuevo programa

A continuación se comentan las opciones más utilizadas de la sección mysqld (afectan al funcionamiento del servidor MySQL), se almacenan en el archivo my.cnf (o my.ini)

basedir = ruta: Ruta a la raíz MySQL
console: Muestra los errores por consola independientemente de lo que se configure para log_error.
datadir = ruta: Ruta al directorio de datos.
default-table-type = tipo: Tipo de la Tabla InnoDB o, MyISAM.
flush: Graba en disco todos los comandos SQL que se ejecuten (modo de trabajo, sin transacción).
general-log = valor: Con valor uno, permite que funcione el archivo LOG para almacenar las consultas realizadas.
general-log-file = ruta: Indica la ruta al registro general de consultas.
language: Especifica el idioma de los lenguajes de error, normalmente esots archivos de lenguaje, están bajo /usr/local/share.
log-error = ruta: Permite indicar la ruta al registro de errores.
log = ruta: Indica la ruta al registro de consultas.
long-query-time = n: Segundos a partir de los cuales una consulta que tardes más, se considerará una consulta lenta.
og-bin = ruta: Permite indicar la ruta al registro binario.
pid-file = ruta: Ruta al archivo que almacena el identificador de proceso de MySQL.
port = puerto: Puerto de escucha de MySQL.
skip-grant-tables: Entra al servidor saltándose las tablas de permisos, es decir todo el mundo tiene privilegios absolutos.
skip-networking: El acceso a MySQL se hará solo desde el servidor local.
slow-query-log = 0|1: Indica si se hace LOG de las consultas lentas.
slow-query-log-file = ruta: Ruta al archivo que hace LOG de las consultas lentas.
socket = ruta: Archivo o nombre de socket a usar en las conexiones locales.
standalone: Para Windows, hace que el servidor no pase a ser un servicio.
user = usuario: Indica el nombre de usuario con el que se iniciará sesión en MySQL.
tmpdir = ruta: Ruta al directorio para archivos temporales.
Archivos LOG en MySQL

Hay cuatro registros (logs):

Registro de Errores (Error Log): Indica cuando arrancó y se detuvo el servidor. Se graba por defecto en la carpeta de datos de MySQL (archivo host_name.err, donde host_name es el nombre del servidor), pero la variable de sistema log_error permite indicar otra ruta si fuera necesario.

Registro General de Consultas (General Log File): Está en la carpeta de datos de MySQL, salvo que se indique la variable general-log-file. Contiene las consultas realizadas. Es el archivo host_name.log.

Registro Binario (Binary Log): Registra instrucciones DML. Los archivos binarios se almacenan por defecto en el directorio de datos. Sirve para intentar restaurar una base de datos en caso de desastre. Es binario, por lo que su manejo es complicado, para ver el contenido se usa la utilidad mysqlbinlog de esta forma: mysqlbinlog archivoLOG

Registro de Consultas Lentas (Slow Query Log File): Registra las consultas que tardaron más del tiempo mínimo establecido. El archivo está (salvo quese especifique slow-log-file como parámetro) en la carpeta de datos de MySQL con el nombre host_name-slow.log

2.1.6 Procedimiento general de instalación 

Aqui pueden ver un ejemplo de instalacion visto ena la unidad 2 :

https://davidmaldonadoitm.blogspot.mx/2018/02/como-instalar-apache-derby-y-crear-una.html

2.1.7 Procedimiento para configuración de un DBMS. 

Aqui podran ver un ejemplo de cofiguracion visto en la unidad 2:

https://davidmaldonadoitm.blogspot.mx/2018/01/mi-gestor-de-base-de-datos-fire-bird.html



2.1.8 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.

Por lo tanto, la creación de las tablas en el proceso de programación en Oracle juegan un papel muy importante. En el momento de crear las tablas se definen características a dos niveles: Tabla y Columna, como se muestra a continuación: A nivel de tabla: Refieren a una o a varias columnas, donde cada columna se define individualmente.
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 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.

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 (
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;


Conclusion:
Hay muchos tipos de SGBD distintos según manejen los datos, y debemos conocerlos ya que en alguna ocasión como profesionistas podremos utilizarlos. Saber cómo funcionan, sus requisitos y que necesidades satisfacen es crucial para un buen desarrollo de bases de datos.
Un SGBD nos permite controlar el acceso a los datos, asegurar su integridad, gestionar el acceso concurrente a ellos, recuperar los datos tras un fallo del sistema y hacer copias de seguridad. Las bases de datos y los sistemas para su gestión son esenciales para cualquier área de negocio, y deben ser gestionados con esmero. 


Fuentes de informacion:
https://prezi.com/0uewhljd1axo/administracion-de-bases-de-datos_unidad2/
https://sites.google.com/site/itjabd23/home/asignatura/plan-de-estudios/unidad-2-arquitectura-del-gestor
https://proyecto359.webnode.mx/unidad2/

jueves, 12 de abril de 2018

Procedimientos almacenados vistos en clase

Insertar:

DELIMITER //
CREATE PROCEDURE nuevo_libro(
IN N_nombre varchar(45),
IN N_editorial varchar(45),
IN N_edicion date
)
BEGIN
  INSERT INTO libros(nombre, editorial, edicion)
  VALUES (N_nombre, N_editorial, N_edicion);
END //
DELIMITER ;

Eliminar:

DELIMITER //
CREATE PROCEDURE eliminar_libro(
IN id int
)
BEGIN
  DELETE FROM libros WHERE id_libro=id;
END //
DELIMITER ;

Cosultar:

DELIMITER //
CREATE PROCEDURE consultar_editorial(
IN id int
)
BEGIN
  SELECT * FROM editorial WHERE id_editorial=id;
END //

DELIMITER ;


Con Case:

delimiter $$

create procedure usuariox (
in _id int,
in _nombre varchar(45),
in _apellido_pa varchar(45),
in _apellido_ma varchar(45),
in _telefono varchar(45),
in accion varchar(45)
)

begin
case accion
    when 'nuevo' then
insert into usuarios(nombre,apellido_pa, apellido_ma, telefono)
        values(_nombre, _apellido_pa, _apellido_ma, _telefono);
when 'editar' then
update usuarios set
        nombre=_nombre, apellido_pa=_apellido_pa, apellido_ma=_apellido_ma, telefono=_telefono
        where idusuarios=_id;
when 'eliminar' then
delete from usuarios where id=_id;
when 'consultar' then
select * from usuarios where id=_id;
     
        end case;
end

Posicionar un caracter en las coordenadas dadas por el usuario

gotoxy macro fila,col ;declaracion de macro gotoxy parametros:fila,col
mov ah,02h   ;complemento interrupcion 10h modo video colocacion cursor
mov dh,fila  ;coordenada x para colocacion de cursor dh
mov dl,col   ;coordenada y para colocacion de cursor dl
mov bh,0h   
int 10h      ;interrupcion de video
endm   ;fin de macro

pantalla macro que  ;declaracion de macro pantalla parametro que
mov ah,02h       ;complemento interrupcion 21h
mov dl,que   ;que es el caracter capturado
int 21h      ;interrupcion DOS
endm  ;fin de macro

imprime macro eztryng  ;declaracion de macro con parametro eztryng
mov dx,offset eztryng  ;coloca mensajes en dx
mov ah,9               ;complemento para la interrupcion 21h para impresion de txto
int 21h                ;interrupcion DOS
endm                   ;fin de macro

.data    ;variables
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$"
caracter DB 40
varx DB ?
vary DB ?
vtext db 100 dup('$')

.code

startup:
mov ax,@data  ;asignacion de datos ax
mov ds,ax     ;asignacion de datos al segmento de datos

imprime mensaje ;llama macro imprime con el parametro 'mensaje'
mov si,00h      ;limpia el apuntador SI


 leer:          ;declaracion de metodo leer   
 mov ax,0000    ;limpia ax
 mov ah,01h     ;complemento para interrupcion 21h captura
 int 21h        ;interrupcion DOS
 mov caracter[si],al ;guarda el dato capturado en variable caracter
 inc si         ;incrementa apuntador si
 cmp al,0dh     ;compara si la ultima tecla presionada fue Intro
 ja coordenadas ;si cumple brinca a coordenadas
 jb leer        ;sino cumple vuelve a ejecutar leer

coordenadas:    ;declaracion de metodo coordenadas
mov dx,offset caracter ;coloca en dx el caracter ingresado
mov ah,0ah             ;complemento de interrupcion 21h lee cadena de texto por teclado
int 21h                ;interrupcion DOS
imprime caracter       ;llama macro imprime con parametro caracter
imprime mensaje2       ;llama macro imprime con parametro mensaje2
mov ah,01h             ;complemento de interrupcion 21h Eco de un caracter
int 21h                ;interrupcion DOS
sub al,30h             ;resta 30h para convertir al valor numerico
mov bl,al              ;mueve al a bl
mov varx,al            ;guarda al en varx (coordenada x)
imprime mensaje3       ;//////////////se repite/////////
mov ah,01h
int 21h
sub al,30h
mov bl,al
mov vary,al            ;////////////////////////
mov ax,0003h           ;complemento interrupcion 10h modo texto
int 10h                ;interupccion de video

gotoxy vary,varx       ;llama macro gotxy con los parametros vary y varx como columna y fila
pantalla caracter[0]   ;llama macro pantalla con el caracter capturado como parametro

mov ah,01h             ;complemento de interrupcion 21h Eco de un caracter
int 21h                ;interrupcion DOS
mov ax,4c00h           ;complemento interrupcion 21h fin de probrama
int 21h                ;interrupcion DOS
end startup            ;fin de funcion principal