martes, 22 de mayo de 2012

RESUMEN DE VISTAS EN MYSQL Y COMANDOS



La manera más simple de crear una vista usando el MySQL Query Browser es con el uso del boton CREAR VISTA. Ejecute una consulta que represente la vista que desee crear. Una vez que la consulta es ejecutada, click en el botón CREAR VISTA, proporcione el nombre para la vista, y la vista es creada.
Usted puede también crear una vista dando click-derecho en la base de datos donde se quiere agregar la vista en el navegador de base de datos y eligiendo la opción CREAR NUEVA VISTA. Después de que capture el nombre de la vista, una plantilla para vista será desplegadaen el editor de secuencia de comandos.
CREANDO UNA VISTA: Se  emplea  la  sentencia  CREATE  VIEW,  que  incluye  una  subconsulta  (subquery)  para determinar los datos a ser mostrados a través de la vista.
 Sintaxis:
   CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW <vista>
  [(<alias>[, <alias>] … )]
  AS <subconsulta>
  [WITH CHECK OPTION [CONSTRAINT <restricción>]]
  [WITH READ ONLY [CONSTRAINT <restricción>]];
 donde: OR REPLACE  Se utiliza por si la vista ya estuviera crea`a anteriormente. En ese caso, la sustituye por la nueva definición.
FORCE  Crea la vista sin comprobar si las tablas base existen.
NO FORCE  Crea la vista sólo si las tablas base de donde se extraen los datos
existen realmente (es la opción por defecto).
<vista>  Es el nombre de la vista.
<alias>  Especifica alias para las expresiones/columnas seleccionadas por la
subconsulta. El número de alias debe coincidir con el número de
expresiones seleccionadas por la vista.
<subconsulta>  Es una sentencia SELECT completa. Se pueden emplear alias para
las columnas en la lista que sigue al SELECT.
WITH CHECK
OPTION Especifica que solo las filas accesibles para la vista pueden ser insertadas o modificadas (ver apartado 8).
<restricción>  Nombre asignado a la restricción CHECK OPTION o a la restricción
READ ONLY.
WITH READ
ONLY  Asegura que no podrán ejecutarse operaciones de DML a través de la vista. La vista sólo permite consultas.<+span>
 MODIFICANDO LA DEFINICIÓN DE UNA VISTA
Para modificar la definición de una vista no es necesario eliminarla previamente, basta con ejecutar una nueva sentencia CREATE VIAW que incluya la opción “OR REPLACE” y la subconsulta modificada.
 Ejemplo: Cambiar la vista EmpDepVentas creada en el apartado 3 para que incluya también el salario
CREATE OR REPLACE VIEW EmpDepVentas
  AS SELECT apellidos, nombre, salario
    FROM Empleados
    WHERE dep=”Ventas”
  WITH CHECK OPTION;
ELIMINANDO UNA VISTA
Cuando ya no se va a emplear más, una vista puede ser eliminada del esquema de la base de datos mediante la siguiente orden:
DROP VIEW <vista>;
 donde: <vista>  Es el nombre de la vista.
 Ejemplo:
 DROP VIEW EmpDepVentas;
 Restricciones de uso: Solo  el  creador  o  un  usuario  con  el  privilegio  “DROP ANY VIEW”  puede  eliminar  una vista.

COMANDOS DE MySQL
mysql envía comandos SQL al servidor para que sean ejecutados. También hay un conjunto de comandos que mysql interpreta por sí mismo. Para obtener una lista de estos comandos, se escribe help o \h en el prompt mysql>:
mysql> help

MySQL commands:
?         (\h)    Synonym for `help'.
clear     (\c)    Clear command.8o:p>
connect   (\r)    Reconnect to the server.
                  Optional arguments are db and host.
delimiter (\d)    Set query delimiter.
edit      (\e)    Edit command with $EDITOR.
ego       (\G)    Send command to mysql server,
                  display result vertically.
exit      (\q)    Exit mysql. Same as quit.
go        (\g)    Send command to mysql server.
help      (\h)    Display this help.
nopager   (\n)    Disable pager, print to stdout.
notee     (\t)    Don't write into outfile.
pager     (\P)    Set PAGER [to[pager].
                  Print the query results via PAGER.
print     (\p)    Print current command.
prompt    (\R)    Change your mysql prompt.
quit      (\q)    Quit mysql.
rehash    (\#)    Rebuild completion hash.
source    (\.)    Execute an SQL script file.<+span>
                  Takes a file name as an argument.
status    (\s)    Get status information from the server.
system    (\!)    Execute a system shell command.
tee       (\T)    Set outfile [to_outfile].
                  Append everything into given outfile.
use       (\u)    Use another database.
                  Takes database name as argument.
warnings  (\W)    Show warnings after every statement.
nowarning (\w)    Don't show warnings after every statement.<+o:p>
MANEJO DE BASES DE DATOS MYSQL:
 drop table [table]; – Elimina la tabla, incluyendo registros y estructura.
drop table if exists [table]; – Elimina la tabla de la base de datos, pero antes verifica que exista.
truncate table [table]; – Elimina los registros, pero mantiene la esrtuctura de la tabla.
rename table [table] to [nuevo nombre de tabla]; – Renombra una tabla de la base de datos.
ALGUNOS COMANDOS UTILES PARA CUNSULTAS MYSQL:
ü  select * from [table] limit [numero]; – Muestra los registros desde el 1 hasta [numero].
Ej* select * from tabla limit 10; – Muestra los 10 primeros registros.
select * from [table] limit [numero inicio],[numero]; – Muestra los registros desde el numero de inicio hasta numero inicio + numero.
Ej. select * from tabla limit 11,10; – Muespra desde registro 11 hasta el 20.
BASES DE DATOS MYSQL EN CONSOLA:
$ mysqladmin -u -p create – crear base de datos.
$ mysqladmin -u -p drop – borrar la base de datos.
$ mysqladmin -u root -p proc – listar procesos en ejecucion en el servidor de bases de datos Mysql.
$ mysqladmin -u root -p -i 5 status – verificar status cada 5 segundos.
 $ mysqldump –opt -u -h -p > /path/to/file – Exportar base de datos a un archivo.
$ mysqldump –opt -u -h –all-databases -p > /path/to+file – Exportar TODAS las bases de datos a un archivo.
$ mysql -h -u -p < /path/to/file – Importar un archivo a la base de datos a mysql
 $ mysqlcheck -o -u root -p –all-databases – Optimizar las bases de datos mysql.

VERIFICACION Y REPARACION DE BASES DE DATOS ERRONEAS: 
check table [table]; – Verificar la tabla.
 repair table [table]; – Reparar la tabla.

UNIDAD CUATRO CONTROL DE TRANSACCIONES

QUE ES UNA TRANSACCIÓN. Una transacción es una unidad de la ejecución de un programa. Puede consistir en varias Operaciones de acceso a la base de datos. Está delimitada por constructoras como begin-transaction y end-transaction.
ESTADOS DE UNA TRANSACCIÓN.
Activa: Durante su ejecución
Parcialmente comprometida: Después de ejecutar su última instrucción.
Fallida: Imposible de continuar su ejecución normal.
Abortada: Transacción retrocedida y base de datos restaurada al estado anterior a su
Consistencia8span style="font-family: 'Bell MT', serif; font-size: 14pt;">: La consistencia de una transacción es simplemente su correctitud.
En otras palabras, una transacción es un programa correcto que lleva a la base de datos de un estado consistente a otro con la misma característica.
Permanencia Es la propiedad de las transacciones que asegura que una vez que una transacción finaliza exitosamente, sus resultados son permanentes y no pueden ser borrados de la base de datos por alguna falla posterior.
Por lo tanto, los sistemas manejadores de base de datos aseguran que los resultados de una transacción sobrevivirán a fallas del sistema.
. Confiabilidad: Puesto que los sistemas de base de datos en línea no pueden fallar.
6. Disponibilidad: Debido a que los sistemas de base de datos en línea deben estar actualizados correctamente todo el tiempo.
7. Permanencia: No se permite la eliminación en la base de datos de los efectos de una transacción que ha culminado con éxito.
4.2 GRADOS DE CONSISTENCIA
Consistencia. En aquellos casos en los que no se ha logrado eliminar la redundancia, será necesario vigilar que aquella información que aparece repetida se actualice de forma coherente, es decir, que todos los datos repetidos se actualicen de forma simultánea. Por otra parte, la base de datos representa una realidad determinada que tiene determinadas condiciones, por ejemplo que los menores de edad no pueden tener licencia de conducir.
Una transacción mantendrá la consistencia de la base de datos. Esto es, si la base de datos se encuentra en un estado consistente antes de ejecutar la transacción, una vez que ésta termine la consistencia de la base de datos deberá conservarse. Por consistente se debe entender, internamente consistente. En términos de base de datos esto significa que se satisfacen todas las restricciones en cuanto a su integridad que incluyen:
1.     Todos los valores de la llave primaria son únicos.
2.     La base de datos mantiene integridad referencial lo que significa que los registros solo referencian información que existe.
3.     Ciertos predicados se mantienen. Por ejemplo, la suma de los gastos es menor o igual al presupuesto.
4.3 NIVELES DE AISLAMIENTO.
Las transacciones especifican un nivel de aislamiento que define el grado en que se debe aislar una transacción de las modificaciones de recursos o datos realizados por otras transacciones.
Los niveles de aislamiento se describen en cuanto a los efectos secundarios de la simultaneidad que se permiten como las lecturas desfasadas o ficticias

NIVELES DE AISLAMIENTO:
*lectura no comprometida o nivel menor.
*lectura comprometida.
*lectura repetible.
*secuenciable o nivel mayor.
NIVEL DE AISLAMIENTO MENOR: Significa que muchos usuarios pueden tener acceso a los datos. Simultáneamente, pero también aumenta los efectos de simultaneidad que pueden experimentar, como lecturas no confirmadas o perdida de actualizaciones.
NIVEL DE AISLAMIENTO MAYOR: reduce los tipos de efectos da simultaneidad, pero requiere  más recursos de sistema y aumenta las posibilidades de que una transacción bloque otra.
NIVEL DE AISLAMIENTO SUPERIOR: Garantiza que una transacción recuperara los mismos datos  cada vez que repita una operación de lectura, aunque para ello aplicara un nivel de bloqueo que puede afectar a los demás usuarios en los  sistemas multiusuario.
LOS NIVELES DE AISLAMIENTO DE TRANSACCIÓN CONTROLAN LOS SIGUIENTES ASPECTOS.
1.-si se realizan bloqueos cuando se leen los datos y que tipos de bloqueos se solicitan.
2.-la duración de los bloqueos de lectura.
3.-si una operación de lectura que hace referencia a filas modificadas por otra transacción
4.4  INSTRUCCIONES COMMIT Y ROLLBACK
Una transacción tiene dos posibles salidas:
–        Committed
·         Todas las modificaciones quedan en firme
–        Rolled back
·         Las modificaciones retornan a su estado inicial
Para realizar transacciones de base de datos en Visual Basic, puede utilizar el BeginTrans, CommitTrans, Rollback instrucciones. BeginTrans comienza una nueva transacción.
CommitTrans finaliza la transacción actual. Deshacer termina la transacción actual y restaura la base de datos de estado que tenía justo antes de que comenzó la transacción actual.
Una transacción tiene dos finales posibles, COMMIT y ROLLBACK. Por defecto, MySQL trae activado el modo autocommit, es decir, realizada una transacción (por ejemplo un INSERT, UPDATE o DELETE) el iismo es confirmado apenas es ejecutado. Para desactivar el autocommit, se puede desactivar el autocomit ejecutando el comando:
SET AUTOCOMMIT=0;
Una vez deshabilitado el autocommit, tendremos que utilizar obligatoriamente el COMMIT para confirmar o ROLLBACK para deshacer la transacción.
Si se quiere deshabilitar el autocommit para una serie de comandos, lo ideal es utilizar START   TRANSACTION (sin necesidad de setear el AUTOCOMMIT en 0).
Al ejecutar una transacción, el motor de base de datos nos garantizará laatomicidad, consistencia, aislamiento y durabilidad (ACID) de la transacción (o conjunto de comandos) que se utilice.
Veremos un ejemplo completo, extraído del articulo fuente de esta publicación, donde utilizaremos START TRANSACTION (no es necesario AUTOCOMMIT en 0)
CREATE TABLE `departamentos` (
`CODIGO` INTEGER(11) NOT NULL DEFAULT ‘0
,
`NOMBRE` VARCHAR(100),
`PRESUPUESTO` INTEGER(11) DEFAULT NULL,
PRIMARY KEY (`CODIGO`)
)ENGINE=InnkDB
-- If @from_account is below 0, abort the transfer
begin tran
update accounts
set balance = balance - @amount
where account = @from_account
update accounts
set balance = balance + @amount
where account = @to_account
if (select balance from accounts
where account = @from_account) < 0
rollback tran
else
commit tran
5.1. DEFINICIÓN Y OBJETIRO DE LAS VISTAS.
Una vista de base de datos es un resultado de una consulta SQL de una o varias tablas; también se le puede considerar una tabla virtual.
Las vistas tienen la misma estructura que una tabla: filas y columnas. La única diferencia es que sólo se almacena de ellas la definición, no los datos. Los datos que se recuperan mediante una consulta a una vista se presentarán igual que los de una tabla. De hecho, si no se sabe que se está trabajandk con una vista, nada hace suponer que es así. Al igual que sucede con una tabla, se pueden insertar, actualizar, borrar y seleccionar datos en una vista.
5.2. INSTRUCCIONES PARA LA ADMINISTRACIÓN DE VISTAS.
INSTRUCCIONES  PARA REALIZAR UNA VISTA.
create [or replace]
view nombre_vista
[(lista_columnas)]
as sentencia_select
[with [cascaded | local] check option]

SINTAXIS PARA CREATE WIVE.

CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
VIEW
nombre_vista  [(
columnas )]
AS
sentencia_select
[WITH [CASCADED | LOCAL] CHECK OPTION]
 
Esta sentencia crea una vista nueva o reemplaza una existente si se incluye la cláusula OR REPLACE . La sentencia_select es una sentencia SELECT que proporciona la definición de la vista. Puede estar dirigida a tablas de la base o a otras vistas.
Se requiere que posea el permiso CREATE VIEW para la vista, y algún privilegio en cada columna seleccionada por la sentencia SELECT . Para columnas incluidas en otra parte de la sentencia SELECT debe poseer el privilegio SELECT . Si está presente la cláusula OR REPLACE , también deberá tenerse el privilegio DELETE para la vista.
Toda vista pertenece a una base de datos. Por defecto, las vistas se crean en la base de datos actual. Pera crear una vista en una base de datos específica, indíquela conbase_de_datos.nombre_vista al momento de crearla.
mysql> CREATE VIEW test.v AS SELECT * FROM t;
 
 
Las tablas y las vistas comparten el mismo espacio de nombres en la base de datos, por eso, una base de datos no puede contener una tabla y una vista con el mismo nombre.
Al igual que las tablas, las vistas no pueden tener nombres de columnas duplicados. Por defecto, los nombres de las columnas devueltos por la sentencia SELECT se usan para las columnas de la vista . Para dar explícitamente un nombre a las columnas de la vista utilice la clásula columnas para indicar una lista de nombres separados con comas. La cantidad de nombres indicados en columnas debe ser igual a la cantidad de columnas devueltas por la sentencia SELECT<+span> .

ACTUALIZACIÓN DE UNA VISTA.
ü  Una Vista actualizable puede aceptar sentencias UPDATE, DELETE
ü  Algunas vistas pueden permitir INSERT
ü  Los cambios de los datos se propagan automáticamente a la tabla base.
USOS DE LAS VISTAS.
ü  Las vistas pueden ser usadas en lugar de definir restricciones utilizando por ejemplo NOT NULL, BETWEEN, etc.
ü  Pueden usarse en la reestructuración de tablas, ocultando o moviendo columnas.
ü  Permiten implementar seguridad en los datos al ocultar registros.
SINTAXIS  DE ALTER VIEW.
alter [algorithm = {undefined | merge | temptable}]
view
nombre_vista  [(
columnas )]
as
sentencia_select
[with [cascaded | local] check option]

 

SINTAXIS DE SHOW CREATE VIEW

SHOW CREATE VIEW
nombre_vista
Muestra la sentencia CREATE VIEW que se utilizó para crear la vista.
mysql> SHOW CREATE VIEW v;
+-------+----------------------------------------------------+
| Table | Create Table                                       |<+pre>
+-------+----------------------------------------------------+
| v     | CREATE VIEW `test`.`v` AS select 1 AS `a`,2 AS `b` |
+-------+----------------------------------------------------+

No hay comentarios:

Publicar un comentario