martes, 30 de abril de 2013

Vistas en MySQLy Comandos (3 link)


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

Ejemplo: Crear  una  vista  que  contiene  los  apellidos  y  nombre  de  los  empleados  del  departamento “Ventas”. Asegurarse que a través de ella sólo pueden modificarse, eliminarse o añadirse los empleados de dicho departamento.
  •   CREATE VIEW EmpDepVentas
  •   AS SELECT apellidos, nombre
  •     FROM Empleados
  •     WHERE dep=”Ventas”
  •   WITH CHECK OPTION;
VISUALIZAR LA ESTRUCTURA DE UNA VISTA:

DESCRIBE <vista>;
 donde: <vista>  Es el nombre de la vista.
 Listar las vistas existentes: SELECT * FROM USER_VIEWS;

Indicaciones y restricciones de uso:
 -  La subconsulta puede contener una sentencia SELECT de sintaxis compleja, incluyendo combinaciones (JOIN), agrupamientos (GROUP BY), y subconsultas internas.
-  Pero no puede incluir una cláusula ORDER BY. Si se desea ordenar, esto deberá hacerse mediante una consulta posterior que utilice la vista

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

A continuación, intentaré nombrar algunos comandos útiles para ejecutar en MySQL. Cabe destacar, que estos comandos pueden ser ejecutados desde el shell del sistema operativo ($) y/o desde el shell de MySQL (mysql>). Por una cuestión de orden, los comandos serán clasificados en:

  • Descripción del sistema, bases de datos y tablas.
  • Definición de datos
  • Administración
  • Backups e importación de datos
  • Descripción del sistema, bases de datos y tablas.
mysql> show databases;

  mysql> show tables;

 mysql> show columns from nombre_de_tabla;

 mysql> show variables;

  mysql> show grants for usuario@host
;
 mysql> show columns from base_de_datos.nombre_de_tabla;

mysql> show privileges;

  mysql> show character set;

 mysql> describe nombre_de_tabla
Definición de datos:

mysql> drop database nombre_de_base_de_datos;

mysql> drop table nombre_de_tabla;

 mysql> alter table nombre_de_tabla drop column nombre_de_columna;

mysql> alter table nombre_de_tabla add column nombre_de_columna tipo_de_dato;

mysql> alter table nombre_de_tabla change nombre_de_columna_original nombre_de_columna_nuevo tipo_de_dato;

mysql> alter table nombre_de_tabla add unique (nombre_de_columna);

mysql> alter table nombre_de_tabla modify nombre_de_columna tipo_de_dato;

Administración

 $ mysqladmin -u root -h host -p password ‘nuevo_password
$ mysqladmin extended-status

 $ mysqladmin status

 $ mysqladmin variables

 $ mysqladmin version

  $ mysqladmin create base_de_datos

 $ mysqladmin drop base_de_datos

 $ mysqladmin flush-privileges

$ mysqladmin ping

 $ mysqladmin reload

$ mysqladmin kill id_proceso, id_proceso

$ mysqladmin shutdown

  Backups e importación de datos

$ mysql base_de_datos< backup.sql

 $ mysqldump base_de_datos [tablas] > backup.sql

 $ mysqldump –no-data base_de_datos [tablas] > backup.sql

 $ mysqldump –add-drop-table base_de_datos [tablas] > backup.sql

 $ mysqldump –compatible=mysql40 base_de_datos [tablas] > backup.sql

mysql> LOAD DATA INFILE ‘/tmp/archivo.csv’ REPLACE INTO TABLE [nombre_de_tabla] FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’ (campo1,campo2,…) 


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


Procedimientos almacenados y funciones en MySQL (2 link)



       Ahora bien, ¿Qué son en realidad los procedimientos almacenados?


Los procedimientos almacenados son un conjunto de instrucciones SQL más una serie de estructuras de control que nos permiten dotar de cierta lógica al procedimiento. Estos procedimientos están guardados en el servidor y pueden ser accedidos a través de llamadas, como veremos más adelante.


 ¿ Y como creamos un procedimiento?

Para crear un procedimiento, MySQL nos ofrece la directiva CREATE PROCEDURE. Al crearlo éste es ligado o relacionado con la base de datos que se está usando, tal como cuando creamos una tabla, por ejemplo.
Para llamar a un procedimiento lo hacemos mediante la instrucción CALL. Desde un procedimiento podemos invocar a su vez a otros procedimientos o funciones.

Observa algunos ejemplos.
MySQL sigue la sintaxis SQL:2003 para procedimientos almacenados, que también usa IBM DB2.

En resumen, la sintaxis de un procedimiento almacenado es la siguiente:

view plainprint?
CREATE PROCEDURE nombre (parámetro)
    [características] definición

Puede haber más de un parámetro (se separan con comas) o puede no haber ninguno (en este caso deben seguir presentes los paréntesis, aunque no haya nada dentro).
os parámetros tienen la siguiente estructura: modo nombre tipo

Donde:
modo: es opcional y puede ser IN (el valor por defecto, son los parámetros que el procedimiento recibirá), OUT (son los parámetros que el procedimiento podrá modificar) INOUT (mezcla de los dos anteriores).
nombre: es el nombre del parámetro.
tipo: es cualquier tipo de dato de los provistos por MySQL.
Dentro de características es posible incluir comentarios o definir si el procedimiento obtendrá los mismos resultados ante entradas iguales, entre otras cosas.
definición: es el cuerpo del procedimiento y está compuesto por el procedimiento en sí: aquí se define qué hace, cómo lo hace y bajo qué circunstancias lo hace.
Su sintaxis es:
view plainprint?
  CREATE FUNCTION nombre (parámetro)
RETURNS tipo
[características] definición
Para llamar a una función lo hacemos simplemente invocando su nombre, como se hace en muchos lenguajes de programación.

Desde una función podemos invocar a su vez a otras funciones o procedimientos.

view plainprint?
  mysql> delimiter //
mysql> CREATE PROCEDURE procedimiento (IN cod INT)
     -> BEGIN
     ->    SELECT * FROM tabla WHERE cod_t = cod;
     -> END
     -> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> CALL procedimento(4);


Otro ejemplo:

view plainprint?
  CREATE PROCEDURE procedimiento2 (IN a INTEGER)
BEGIN
DECLARE variable CHAR(20);
IF a > 10 THEN
SET variable = ‘mayor a 10’;
ELSE
SET variable = ‘menor o igual a 10’;
END IF;
INSERT INTO tabla VALUES (variable);
END


Observemos ahora un ejemplo de funciones:
view plainprint?
  mysql> delimiter //
mysql> CREATE FUNCTION cuadrado (s SMALLINT) RETURNS SMALLINT
    -> RETURN s*s;
    -> //
Query OK, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> SELECT cuadrado(2);

En definitiva hemos dado un recorrido por el mundo de la programación de procedimientos almacenados en MySQL. Es importante que se trata de un mundo que está en pleno desarrollo y que promete evolucionar.

JessyGerman :)


Sistema de Base de Datos (1 link)


MySQL

¿A que nos referimos cuando hablamos de MySQL?

MySQL es uno de los sistemas de gestión de bases de datos más populares del mercado. Se trata de un SGBD basado en el modelo relacional, con licencia dual GPL y propietaria, desarrollado por MySQL AB, una compañía propiedad de Sun Microsystems, creadores de Java, desde Enero de 2008.

En esta entrada veremos algunos de los comandos básicos utilizados a la hora de trabajar con MySQL.

Para iniciar el cliente indicando el nombre de usuario (en este caso root)  root* Ruta
mysql -u root

Para que nos pida la contraseña: (Puedes ingresar una contraseña sencilla 123*)
mysql -u root -p

Para ejecutar un script SQL:
mysql < archivo.sql
o desde la consola de MySQL:

Y...¿Como creamos una base de Datos?
  1. CREATE DATABASE base_datos;  


Si ya existe una base de datos con ese nombre, MySQL mostrara un error. Si queremos crear una base de datos solo cuando no exista podemos añadir el texto IF NOT EXISTS:

  1. CREATE DATABASE IF NOT EXISTS base_datos;  
A la hora de crear la base de datos también podemos especificar si usaremos caracteres y algunos acompañantes (conjunto de reglas utilizadas para comparar los caracteres) a utilizar por defecto. Esto se logra con DEFAULT CHARACTER SET y DEFAULT COLLATE respectivamente.

  1.     CREATE DATABASE IF NOT EXISTS base_datos  
  2.     DEFAULT CHARACTER SET utf8  
  3.     DEFAULT COLLATE utf8_general_ci;  
También se puede especificar un juego de caracteres y colación a utilizar por defecto para el servidor mediante las opciones --character-set-server y --collation-server.
Para comunicarnos con el servidor usando un cierto juego de caracteres se puede usar el comando SET NAMES.




Para ver las distintas bases de datos disponibles en nuestro servidor MySQL:


Para borrar una base de datos:

Para seleccionar la base de datos con la que queremos trabajar:

Para ver las tablas de la base de datos:

Para ver las columnas de la tabla:

o bien de esta manera tambien da el mismo resultado:





e incluso:

Si necesitamos ver también la colación, los privilegios que tenemos o los comentarios de las columnas añadiremos la palabra clave FULL a SHOW COLUMNS:


Para crear una tabla nueva se usa el comando CREATE TABLE tabla al que se le pasa la definición de las columnas, las posibles restricciones (constraints) y las opciones de la tabla y de partición.



Veamos primero los tipos numéricos:

BIT: Representación en binario de un número. Por defecto es un número binario de 1 bit por lo que su valor puede ser 0 o 1.


TINYINT: Para representar enteros muy pequeños, de -128 a 127. Se puede utilizar la palabra clave UNSIGNED para que almacene solo números positivos, en cuyo caso el rango va de 0 a 255.





  • BOOL: Sinónimo de TINYINT(1). El valor 0 se considera falso, el resto verdadero.
  • BOOLEAN: Sinónimo de TINYINT(1). El valor 0 se considera falso, el resto verdadero.


  • SMALLINT: Un entero pequeño, de -32768 a 32767. Si se utiliza UNSIGNED el rango va de 0 a 65535.




  • MEDIUMINT: Un entero de tamaño medio, de -8388608 a 8388607. Si se usa UNSIGNED, de 0 a 16777215.
  • INT: Un entero, con rango de -2147483648 a 2147483647 y de 0 a 4294967295 si es UNSIGNED.
  • INTEGER: Sinónimo de INT.
  • BIGINT: Un entero grande, de -9223372036854775808 a 9223372036854775807 y de 0 a 18446744073709551615 para los UNSIGNED.
  • SERIAL: Alias para BIGINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE.
  • FLOAT: Un número decimal en coma flotante. Los valores permitidos son el 0 y los valores de -3.402823466E+38 a -1.175494351E-38 y de 1.175494351E-38 a 3.402823466E+38 aunque el rango puede ser menor dependiendo de la máquina y el sistema operativo utilizado.
  • DOUBLE: Un número en coma flotante de precisión doble. Los valores permitidos van de -1.7976931348623157E+308 a -2.2250738585072014E-308 y de 2.2250738585072014E-308 a 1.7976931348623157E+308
  • REAL: Sinónimo de DOUBLE, a menos que esté activado el modo REAL_AS_FLOAT, en cuyo caso funciona como sinónimo de FLOAT.
  • DECIMAL: Para representar números decimales de forma más precisa que FLOAT y DOUBLE.
  • NUMERIC: Sinónimo de DECIMAL.
  • DATETIME: Una combinación de fecha y hora en formato YYYY-MM-DD HH:MM:SS. El rango soportado va desde 1000-01-01 00:00:00 a 9999-12-31 23:59:59.
  • TIME: Una hora. El valor se muestra en formato HH:MM:SS. El rango va de -838:59:59 a 838:59:59.
  • YEAR: Un año en formato YYYY. Los valores admitidos son 0000 y los valores de 1901 a 2155. También se puede usar formato YY si se utiliza YEAR(2) en cuyo caso el rango de valores admitidos va de 70 a 69, representando los años de 1970 a 2069.


  • Por último, los tipos de texto son los siguiente:
    • CHAR: Cadenas de longitud fija cuyo número de caracteres se especifica entre paréntesis (si no se especifica es 1 por defecto). Este mecanismo de indicar el tamaño entre paréntesis es común para el resto de los tipos, por lo que no se obviará.
    • VARCHAR: Cadena de longitud variable. Opcionalmente se puede indicar el tamaño máximo de la cadena con un número entre paréntesis.
    • BINARY: Similar a CHAR pero en este caso las cadenas se almacenan como binarias.
    • VARBINARY: Similar a VARCHAR pero en este caso las cadenas se almacenan como binarias.
    • BLOB: Un Binary Large OBject (gran objeto binario), para almacenar datos binarios como imágenes. El tamaño máximo es de 65.535 bytes.
    • TINYBLOB: Un BLOB de pequeño tamaño (un máximo de 255 bytes).
    • MEDIUMBLOB: Un BLOB de tamaño medio (un máximo de 16.777.215 bytes; cerca de 16MB)
    • LONGBLOB: Un BLOB de gran tamaño (un máximo de 4GB bytes)
    • TEXT: Un texto con un máximo de 65.535 caracteres (menos si se utilizan caracteres multi-byte, evidentemente).
    • TINYTEXT: Un texto pequeño, con un máximo de 255 caracteres.
    • MEDIUMTEXT: Un texto de longitud media, con un máximo de 16.777.215 caracteres.
    • LONGTEXT: Un texto largo, con un máximo de 4.294.967.295 caracteres.
    • ENUM: Enumerado, un tipo cuyo valor puede ser una cadena de entre las indicadas entre paréntesis.
    • SET: Similar a ENUM, pero en este caso el campo puede tener cero o más valores de entre los indicados entre paréntesis.
    Para cada columna, además del tipo, podemos definir otras propiedades
    • NOT NULL: No se puede introducir valores nulos.
    • DEFAULT valor: Para definir un valor por defecto
    • AUTO_INCREMENT: Para cada tupla añadida a la tabla el valor del campo crecerá en una unidad. Solo puede existir una columna con AUTO_INCREMENT en cada tabla, y debe tratarse de una clave.
    • UNIQUE KEY: Los valores no se pueden repetir. Si puede existir varias tuplas con valor NULL para la columna.
    • PRIMARY KEY: La clave primaria de la relación. Los valores deben ser únicos y no nulos. Una tabla, como es lógico, sólo puede tener una clave primaria. Si necesitamos crear una clave primaria compuesta por varios campos no podemos usar este método en el que definimos las propiedades de un solo campo, sino que tendremos que utilizar una clausula PRIMARY KEY
    • COMMENT "comentario": Comentarios varios sobre el campo.
    • REFERENCES tabla (campo): Para crear una clave foránea o ajena. De esta forma indicamos este valor toma valores de claves de otra tabla, implementando así una relación 1:N. En esta clausula también podemos indicar las reglas de integridad referencial, es decir, qué ocurrirá cuando se borre (ON DELETE) o se actualice (ON UPDATE) la tupla referenciada. Los valores posibles son RESTRICT, que indica que no se permite la actualización o borrado; CASCADE, con la que la actualización o borrado se propaga; SET NULL, que establece las claves foráneas a NULL y NO ACTION, que en MySQL es similar a RESTRICT.
    Las restricciones posibles para la tabla son:
    • PRIMARY KEY (campo1, campo2, ...): Para indicar el campo o campos que conforman la clave primaria.
    • KEY (campo1, campo2, ...): Para crear una clave no primaria ni única. Esto creará un índice para el campo.
    • INDEX (campo1, campo2, ...): Sinónimo de KEY.
    • FOREIGN KEY (campo1, campo2, ...) REFERENCES tabla (campo3, campo4, ...): Para crear una clave foránea o ajena. Sigue el mismo formato que REFERENCES para las columnas.
    • CHECK (expresion): En teoría, para definir otras restricciones. En realidad esta opción se admite por el parser, pero se ignora. Tenemos que recurrir a triggers o disparadores.

    Para eliminar una tabla:

    Para que no produzca un error si la tabla no existe:



    Para modificar una tabla se utiliza ALTER TABLE que permite cosas como añadir columnas:




    Eliminar columnas

    Cambiar la definición de las columnas:



    O renombrar la tabla:



    Jessy&German


    Unidad 2: Construcción de Bases de Datos (COBD)

    Unidad 2: Gestión y aprovechamiento de la información de las bases de datos.
    Peso de la Unidad: 25%

    R.A 2.1: Estructura la consulta de información, mediante la selección, inserción, eliminación y actualización de datos en el sistema gestor de base de datos.
    Peso del Resultado: 15%

    Contenidos:
    a)   Actualización de información mediante lenguaje SQL
    • Operaciones de inserción, eliminación y actualización.
    b)   Elaboración de consultas mediante lenguaje SQL
    • Operaciones de selección, operaciones aritméticos, de comparación y lógicos, subconjuntos de una tabla y combinación de tablas.
    c)   Manejo de disparadores de bases de datos
    •  Creación, tipos y opciones de uso.
     Periodo del resultado de aprendizaje: 29 de Abril - 17 de Mayo

    R.A 2.2: Diseña formularios y reportes empleando los recursos que ofrece el sistema gestor de base de datos.
    Peso del Resultado: 10%

    Contenidos:
    a)   Elaboración de aplicaciones convistas
    • Definición, creación, eliminación y uso.
    b)   Elaboración de formularios y reportes
    • Creación, eliminación y uso
     Periodo del resultado de aprendizaje: 20 de Mayo - 31 de Mayo