viernes, 8 de julio de 2016

software que manejan MysQL

PostgreSQL

Pg logo.png
PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos y libre, publicado bajo la licencia BSD.
Como muchos otros proyectos de código abierto, el desarrollo de PostgreSQL no es manejado por una empresa y/o persona, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre y/o apoyados por organizaciones comerciales. Dicha comunidad es denominada el PGDG (PostgreSQL Global Development Group).

Firebird

Ds-firebird-logo.svg
Firebird es un sistema de administración de base de datos relacional (o RDBMS) (Lenguaje consultas: SQL) de código abierto, basado en la versión 6 de Interbase, cuyo código fue liberado por Borland en 2000. Su código fue reescrito de C a C++. El proyecto se desarrolla activamente, el 18 de abril de 2008 fue liberada la versión 2.1 y el 26 de diciembre de 2009 fue liberada la versión 2.5.0 RC1.
A finales de la década de 1990, Borland decidió liberar el código de Interbase. Diversos integrantes de la plantilla crearon una nueva empresa denominada IBPhoenix, y junto a otros desarrolladores independientes, crearon el fork ahora conocido como Firebird. Más tarde, Borland decidiría volver a privatizar Interbase y comercializar sus licencias. Sin embargo, Firebird sigue siendo un proyecto de código abierto bajo una licencia similar a la MPL (Mozilla Public License).

SQLite

SQLite370.svg
SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña (~275 kiB) biblioteca escrita en C. SQLite es un proyecto de dominio público creado por D. Richard Hipp.
A diferencia de los sistema de gestión de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. El programa utiliza la funcionalidad de SQLite a través de llamadas simples a subrutinas y funciones. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son más eficientes que la comunicación entre procesos. El conjunto de la base de datos (definiciones, tablas, índices, y los propios datos), son guardados como un sólo fichero estándar en la máquina host. Este diseño simple se logra bloqueando todo el fichero de base de datos al principio de cada transacción.

etapas de planeacion y aprobación del plan de migración de una base de datos

Todo proceso de migración debe estar alineado con la estrategia empresarial y, por ello, el plan de migración de datos se debe ajustar a las prioridades de negocio, algo que debe reflejarse en todas y cada una de sus etapas. Para alcanzar el éxito en un proyecto de este tipo hay que buscar la aplicación de las mejores prácticas, ser realista en el establecimiento de objetivos y garantizar una buena organización.
Los componentes principales del plan de migración de datos

1. Alcance del proyecto de migración de datos

Antes de comenzar a elaborar el plan de migración de datos es necesario definir algunos términos y aclarar conceptos. Esta preparación facilitará la tarea de planning y reducirá los posibles errores que pudiesen surgir por causa de falta de consenso, omisiones o errores de cálculo.

En el establecimiento del alcance del proyecto hay que determinar:

 Propósito de la migración de datos.

 Objetivos.

 Presupuesto.

 Áreas y plazo de ejecución.

 Entregables y sus deadlines.

 Herramientas a utilizar.

 Roles y responsabilidades.

 Plan de comunicación.

 Plan de gestión del cambio.

 Plan de gestión del riesgo.

 Plan de gestión de la calidad.


 Descripción del entorno de pruebas: herramientas, especificaciones, limitaciones y obligaciones de reporting.

 Test de integración.

 Opciones de recuperación para las distintas fases de la migración.


Descarga nuestra Guía sobre "Migraciones de Datos"

2. Planificación de la migración

La parte central del plan de migración de datos es la planificación. En esta etapa se ha de decidir, entre otras cosas, la metodología a aplicar para llevarla a cabo. Independientemente del método que se decida aplicar, es necesario que se observen, al menos, las siguientes pautas:

 Diseño de la extracción.

 Requisitos de transformación de los datos.

 Estándares de calidad aplicables.


 Reglas de mapeo de datos.



3. Preparación de los datos

Identificados el por qué, cómo, dónde y cuándo falta trabajar en el qué. Los datos y sistemas necesitan una preparación previa a la migración y esto ha de contemplarse en el plan de migración de datos. Este paso se estructura en torno a tres momentos:

Establecimiento de los requisitos de calidad de los datos: aplicables a cada elemento, sus atributos e interrelaciones dentro del sistema fuente. Implica la definición de las reglas de calidad y requiere de la recogida de incidencias para su monitorización y evaluación.

Perfilado de datos: en base a los formatos de datos existentes y a los modelos de estructura que imperan en destino, se deberán preparar los datos de origen para asegurar que, no sólo su calidad es suficiente, sino que están preparados para el cambio. Hay que determinar también el modo de proceder con los datos que no cumplan con estos requisitos.

Limpieza de datos: puede llevarse a cabo en una o dos etapas pero siempre se ha de sujetar a verificación, para comprobar que los resultados obtenidos son los esperados.

4. La seguridad en el plan de migración de datos

La protección de los datos es una imposición legal y hace tiempo que ha dejado de ser una simple alternativa. Se ha de preservar la integridad del dato garantizando la seguridad de la información sensible. Para ello, existen diferentes métodos aplicables a una migración, como pueden ser:

Autorizaciones de acceso.

Diferentes niveles de acceso para diferentes usuarios o roles.

Enmascaramiento de datos.

Técnicas de encriptación.

aprobación 


En tanto que una migración de BD es un proceso que se realiza para mover o trasladar los datos almacenados en un origen de datos a otro, para lo cual es indispensable que antes de empezar cualquier proceso de esta naturaleza, se tenga clara y documentada la razón por la cual se está migrando, además de elaborarse la planeación detallada de las actividades contempladas. Dicha migración se requiere llevar a cabo cuando es necesario mover un esquema dentro del mismo servidor, o de un servidor a otro, así como para actualizar la versión del software, y hacer un cambio de manejador de bases de datos por el de otro fabricante o para cambiarlo a una plataforma de cómputo distinta.

Existen diversos motivos para hacer una migración, tales como: mejorar el desempeño de la base de datos, cumplir con nuevos requerimientos de usuario, de la aplicación o políticas de seguridad; así como la compatibilidad con otras aplicaciones, la actualización de versiones, la estandarización de la tecnología de información en la organización, la reducción de costos que se puede tener al cambiar por software libre, el aumento en el volumen de datos, nuevos procesos de negocio, entre otros escenarios posibles.

Es conveniente hacer notar que en la planeación del proyecto de migración, se debe delimitar el alcance, definir la estrategia por seguir, identificar en forma completa los requerimientos, hacer un análisis de riesgos, así como analizar las condiciones actuales y finales. En esta fase es necesario, igualmente, determinar la viabilidad técnica y la factibilidad económica de la solución planteada; pero antes, es oportuno realizar respaldos de la base de datos antes y después del proceso de migración, así como considerar en qué momento y durante cuánto tiempo se va a detener la operación de la base de datos en producción. Si esto no es posible, se debe determinar el procedimiento para identificar los datos que fueron ingresados durante el proceso de migración, para su actualización posterior.

lunes, 4 de julio de 2016

clausalas de consultas MyQSL

Insert SQL

La instrucción INSERT permite crear o insertar nuevos registros en una tabla, veamos su sintaxis con un ejemplo práctico, la inserción de un registro en la tabla ALUMNOS:

CÓDIGO: SELECCIONAR TODO

insert into ALUMNOS (ID_ALUMNO , NOMBRE , APELLIDOS , F_NACIMIENTO) 
values (1 , 'Pablo' , 'Hernandaz Mata' , '1995-03-14')

SENTENCIA DELETE Y CLÁUSULA WHERE
La sentencia DELETE se suele usar para borrar unos registros de una tabla que cumplen una o varias condiones. Vamos a utilizar una sintaxis 

mysqli_query($link, " DELETE FROM nombreTabla WHERE columna (>, <, =, etc.) valorEspecificado ")



                                                    para buscar datos 

SELECT 
      [ALL | DISTINCT | DISTINCTROW]
      [HIGH_PRIORITY]
      [STRAIGHT_JOIN]
      [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
      [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
   select_expr,...
   [INTO OUTFILE 'file_name' export_options]
    | INTO DUMPFILE 'file_name']
   [FROM table_references
      [WHERE where_definition]
      [GROUP BY \ 
        [ASC | DESC], ... [WITH ROLLUP]]
      [HAVING where_definition]
      [ORDER BY \ 
        [ASC | DESC] ,...]
      [LIMIT \]
      [PROCEDURE procedure_name(argument_list)]
      [FOR UPDATE | LOCK IN SHARE MODE]]


para modificar datos 

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]

imprimir datos 
$sql_clubes = "SELECT * FROM clubes, jugadores WHERE clubes.NOMBRE='".$_REQUEST['id_c']."' AND jugadores.EQUIPO=clubes.NOMBRE;";
$resultado = mysql_query($sql_clubes);




Tipos de datos de MySQL

1 Tipos numéricos: 

Existen tipos de datos numéricos, que se pueden dividir en dos grandes grupos, los que están en coma flotante (con decimales) y los que no. 

TinyInt: es un número entero con o sin signo. Con signo el rango de valores válidos va desde -128 a 127. Sin signo, el rango de valores es de 0 a 255 

Bit ó Bool: un número entero que puede ser 0 ó 1 

SmallInt: número entero con o sin signo. Con signo el rango de valores va desde -32768 a 32767. Sin signo, el rango de valores es de 0 a 65535. 

MediumInt: número entero con o sin signo. Con signo el rango de valores va desde -8.388.608 a 8.388.607. Sin signo el rango va desde 0 a16777215. 

Integer, Int: número entero con o sin signo. Con signo el rango de valores va desde -2147483648 a 2147483647. Sin signo el rango va desde 0 a 429.4967.295 

BigInt: número entero con o sin signo. Con signo el rango de valores va desde -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807. Sin signo el rango va desde 0 a 18.446.744.073.709.551.615. 

Float: número pequeño en coma flotante de precisión simple. Los valores válidos van desde -3.402823466E+38 a -1.175494351E-38, 0 y desde 1.175494351E-38 a 3.402823466E+38. 

xReal, Double: número en coma flotante de precisión doble. Los valores permitidos van desde -1.7976931348623157E+308 a -2.2250738585072014E-308, 0 y desde 2.2250738585072014E-308 a 1.7976931348623157E+308 

Decimal, Dec, Numeric: Número en coma flotante desempaquetado. El número se almacena como una cadena 

Tipo de Campo
Tamaño de Almacenamiento
TINYINT
1 byte
SMALLINT
2 bytes
MEDIUMINT
3 bytes
INT
4 bytes
INTEGER
4 bytes
BIGINT
8 bytes
FLOAT(X)
4 ú 8 bytes
FLOAT
4 bytes
DOUBLE
8 bytes
DOUBLE PRECISION
8 bytes
REAL
8 bytes
DECIMAL(M,D
M+2 bytes sí D > 0, M+1 bytes sí D = 0
NUMERIC(M,D)
M+2 bytes if D > 0, M+1 bytes if D = 0


2 Tipos fecha: 

A la hora de almacenar fechas, hay que tener en cuenta que Mysql no comprueba de una manera estricta si una fecha es válida o no. Simplemente comprueba que el mes esta comprendido entre 0 y 12 y que el día esta comprendido entre 0 y 31. 
Date: tipo fecha, almacena una fecha. El rango de valores va desde el 1 de enero del 1001 al 31 de diciembre de 9999. El formato de almacenamiento es de año-mes-dia 

DateTime: Combinación de fecha y hora. El rango de valores va desde el 1 de enero del 1001 a las 0 horas, 0 minutos y 0 segundos al 31 de diciembre del 9999 a las 23 horas, 59 minutos y 59 segundos. El formato de almacenamiento es de año-mes-dia horas:minutos:segundos 

TimeStamp: Combinación de fecha y hora. El rango va desde el 1 de enero de 1970 al año 2037. El formato de almacenamiento depende del tamaño del campo: 

Tamaño
Formato
14
AñoMesDiaHoraMinutoSegundo aaaammddhhmmss
12
AñoMesDiaHoraMinutoSegundo aammddhhmmss
8
ñoMesDia aaaammdd
6
AñoMesDia aammdd
4
AñoMes aamm
2
Año aa


Time: almacena una hora. El rango de horas va desde -838 horas, 59 minutos y 59 segundos a 838, 59 minutos y 59 segundos. El formato de almacenamiento es de 'HH:MM:SS' 

Year: almacena un año. El rango de valores permitidos va desde el año 1901 al año 2155. El campo puede tener tamaño dos o tamaño 4 dependiendo de si queremos almacenar el año con dos o cuatro dígitos. 

Tipo de Campo
Tamaño de Almacenamiento
DATE
3 bytes
DATETIME
8 bytes
TIMESTAMP
4 bytes
TIME
3 bytes
YEAR
1 byte


3 Tipos de cadena: 

Char(n): almacena una cadena de longitud fija. La cadena podrá contener desde 0 a 255 caracteres. 

VarChar(n): almacena una cadena de longitud variable. La cadena podrá contener desde 0 a 255 caracteres. 

Dentro de los tipos de cadena se pueden distinguir otros dos subtipos, los tipo Test y los tipo BLOB (Binary large Object) 

La diferencia entre un tipo y otro es el tratamiento que reciben a la hora de realizar ordenamientos y comparaciones. Mientras que el tipo test se ordena sin tener en cuenta las Mayúsculas y las minúsculas, el tipo BLOB se ordena teniéndolas en cuenta. 

Los tipos BLOB se utilizan para almacenar datos binarios como pueden ser ficheros. 

TinyText y TinyBlob: Columna con una longitud máxima de 255 caracteres. 

Blob y Text: un texto con un máximo de 65535 caracteres. 

MediumBlob y MediumText: un texto con un máximo de 16.777.215 caracteres. 

LongBlob y LongText: un texto con un máximo de caracteres 4.294.967.295. Hay que tener en cuenta que debido a los protocolos de comunicación los paquetes pueden tener un máximo de 16 Mb. 

Enum: campo que puede tener un único valor de una lista que se especifica. El tipo Enum acepta hasta 65535 valores distintos 

Set: un campo que puede contener ninguno, uno ó varios valores de una lista. La lista puede tener un máximo de 64 valores. 

Tipo de campo
Tamaño de Almacenamiento
CHAR(n)
n bytes
VARCHAR(n)
n +1 bytes
TINYBLOB, TINYTEXT
Longitud+1 bytes
BLOB, TEXT
Longitud +2 bytes
MEDIUMBLOB, MEDIUMTEXT
Longitud +3 bytes
LONGBLOB, LONGTEXT
Longitud +4 bytes
ENUM('value1','value2',...)
1 ó dos bytes dependiendo del número de valores
SET('value1','value2',...)
1, 2, 3, 4 ó 8 bytes, dependiendo del número de valores


sintaxis de MySQL

Aprendiendo la sintaxis básica 
En este curso nos centraremos en los métodos de recuperación por medio de SQL. Pero para ello es necesario aprender una sintaxis básica con la que se explican los principios de consulta SQL. En la siguiente tabla1 se observan una serie de palabras reservadas o cláusulas (coloreadas en rojo) que corresponden al selector de campos (SELECT), al selector de tablas (FROM) y a la cláusula condicional (WHERE).
SELECT campos FROM tabla WHERE condición
 Tabla1. Sintáxis de consulta básica

Siempre que se desea obtener datos o resultados de una consulta SQL se requiere un selector de los campos que son objetivo de la búsqueda, seleccionar la tabla en la que se desea buscar la información y establecer las condiciones oportunas que deben cumplir los resultados. Véase el siguiente ejemplo de la tabla2:

SELECT isbn FROM catalogo WHERE autor LIKE '%bryson%'
 Tabla2. Ejemplo de consulta de todos los isbn del catálogo de libros cuyo autor sea bryson

Este ejemplo se puede traducir de la siguiente forma: Selecciona el campo isbn de todos los registros de la tabla catálogoque cumplan la condición de que dentro del campo autor se contenga el término bryson. Obsérvese que el término de consulta esta rodeado de porcentajes. Esos caracteres también denominados truncamientos actúan sobre la consulta para indicar que la cadena bryson puede tener cadenas de texto que le precedan y que le sigan, como por ejemplo billbryson natural de.

Crear una base de datos
Para crear una base de datos solo es necesario recordar la fórmula (CREATE DATABASE + nombre de la base de datos), véase tabla3. El nombre de la base de datos es recomendable que se escriba siempre en minúsculas, sin caracteres extraños, símbolos o acentos. Tampoco debería preceder al nombre ningún número. Por otro lado los espacios en el nombre deben ser sustituidos por guiones bajos (_) o guiones medios (-). Finalmente es recomendable el uso de nombres sencillos que puedan ser fácilmente recordados.

CREATE DATABASE biblioteca
 Tabla3. Crear una base de datos denominada "biblioteca"

Crear una tabla con campos
La creación de una tabla en mysql implica también el diseño de su estructura de campos y con ello definir sus características. Resulta vital la forma en que se diseñan las tablas para así poder efectuar una mejor recuperación y utilizar funciones específicamente diseñadas para tal propósito, es el caso de las consultas de tipo FULLTEXT. Cuando se diseña la tabla, se deben establecer el tipo de campos que la componen en función al tipo de información que albergarán y a su extensión, por otro lado su set de codificación o set de caracteres que se utilizará, véase tabla4.

CREATE TABLE users (
id          INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
name        VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
surname     VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
allvisits   LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
lastvisit   VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
lastsession VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
online      VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
level       VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
username    VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
password    VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
trash       VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
snumber     VARCHAR(2) CHARACTER SET utf8 COLLATE utf8_general_ci,
email       VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci
) CHARACTER SET utf8 COLLATE utf8_general_ci
 Tabla4. Crear una tabla denominada "users"

Insertar un nuevo registro en la tabla
Crear un nuevo registro en la tabla anterior se lleva a cabo con la sentencia de la tabla5. Obsérvese la sintaxis (INSERT INTO + nombre de tabla afectada + SET + nombre del campo = 'datos', nombre del campo = 'datos', nombre del campo = 'datos'...) Esta forma de insertar datos permite al operador de MySQL tener un mayor control sobre la información que inserta en el registro, pues no esta obligado a introducir todos los datos de todos los campos si no lo desea. Es posible introducir sólo la información de los campos que se reseñen.

INSERT INTO users SET name='nombre', surname='apellidos', allvisits='registro de todas las visitas', lastvisits='última visita', lastsession='última sesión',online='estado', level='nivel de acceso', username='nombre de usuario',password='contraseña', trash='código de encriptación', snumber='código de seguridad', email='correo electrónico'
 Tabla5. Ejemplo de inserción de un registro completo en la tabla

Modificar y actualizar un registro de la tabla
Se utiliza la sintaxis (UPDATE + nombre de tabla afectada + SET + nombre del campo = 'nuevo dato', nombre del campo = 'nuevo dato', nombre del campo = 'nuevo dato' + WHERE + condición) Al igual que en el caso anterior de la inserción, no se está obligado a repetir todos los campos de la estructura que conforma la tabla de MySQL. Es suficiente reseñando sólo aquellos campos del registro en el que se van a suceder los cambios con nuevos datos. Finalmente se requiere la condición de la consulta de actualización, es decir, qué registro es el que se desea actualizar. En el caso de la tabla6, es sobre un registro en concreto, por lo que es necesario expresar que el identificador del usuario sea igual al que establezcamos.

UPDATE users SET name = 'nuevo nombre', surname = 'nuevos apellidosWHERE id = 'identificador del registro'
 Tabla6. Ejemplo de modificación y actualización de un registro de una tabla

Eliminar un registro de la tabla
Para eliminar un registro de una tabla se emplea la sintaxis (DELETE FROM + nombre de tabla afectada + WHERE + condición), véase tabla7. Al igual que en el caso de la modificación y actualización de una tabla es preciso determinar la condición bajo la que se eliminará los registros o registro concreto. Una vez más señalando el número de identificación es suficiente para indicar a MySQL cómo proceder.

DELETE FROM items WHERE id = 'identificador del registro'
 Tabla7. Borrar un registro de una tabla