0% encontró este documento útil (0 votos)
27 vistas14 páginas

Gestor de Base de Datos

GBD GUIA

Cargado por

adri adrian
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
27 vistas14 páginas

Gestor de Base de Datos

GBD GUIA

Cargado por

adri adrian
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 14

Gestor de Base de Datos: MySQL, SQLserver.

MySQL es un gestor de base de datos sencillo de usar y increíblemente rápido. También es


uno de los motores de base de datos más usados en Internet, la principal razón de esto es que
es gratis para aplicaciones no comerciales.

Estructuras organizativas/asociativas o de decisión

MySQL es una idea originaria de la empresa opensource MySQL AB establecida inicialmente


en Suecia en 1995 y cuyos fundadores son David Axmark, Allan Larsson, y Michael "Monty"
Widenius. El objetivo que persigue esta empresa consiste en que MySQL cumpla el estándar
SQL, pero sin sacrificar velocidad, fiabilidad o usabilidad.

La dirección y el patrocinio de los proyectos MySQL están a cargo de la empresa MySQL AB


quien posee el copyrigth del código fuente MySQL, su logo y marca registrada. MySQL, Inc. y
MySQL GmbH son ejemplos de empresas subsidiarias de MySQL AB. Están establecidas en
los Estados Unidos y Alemania respectivamente. MySQL AB, cuenta con más de 200
empleados en más de 20 países y funcionan bajo la estrategia de teletrabajo.

En enero del 2008 Sun Microsystems anuncia su compra.

Las características principales de MySQL son:

Es un gestor de base de datos. Una base de datos es un conjunto de datos y un gestor de base
de datos es una aplicación capaz de manejar este conjunto de datos de manera eficiente y
cómoda.

Es una base de datos relacional. Una base de datos relacional es un conjunto de datos que
están almacenados en tablas entre las cuales se establecen unas relaciones para manejar los
datos de una forma eficiente y segura. Para usar y gestionar una base de datos relacional se
usa el lenguaje estándar de programación SQL.
Es una base de datos muy rápida, segura y fácil de usar. Gracias a la colaboración de muchos
usuarios, la base de datos se ha ido mejorando optimizándose en velocidad. Por eso es una de
las bases de datos más usadas en Internet.
Existe una gran cantidad de software que la usa.

Licencia:

Es Open Source. El código fuente de MySQL se puede descargar y está accesible a cualquiera,
por otra parte.

MySQL es software de fuente abierta. Fuente abierta significa que es posible para cualquier
persona usarlo y modificarlo. Cualquier persona puede bajar el código fuente de MySQL y
usarlo sin pagar. Cualquier interesado puede estudiar el código fuente y ajustarlo a sus
necesidades. MySQL usa el GPL (GNU General Public License) para definir que puede hacer
y que no puede hacer con el software en diferentes situaciones. Si usted no se ajusta al GPL o
requiere introducir código MySQL en aplicaciones comerciales, usted puede comprar una
versión comercial licenciada.
Qué licencia utilizar

La licencia GNU GPL de MySQL obliga a que la distribución de cualquier producto derivado
(aplicación) se haga bajo esa misma licencia. Si un desarrollador desea incorporar MySQL en
su producto pero desea distribuirlo bajo otra licencia que no sea la GNU GPL, puede adquirir
una licencia comercial de MySQL que le permite hacer justamente eso.

TIPO DE DATOS EN MYSQL

Después de la fase de diseño de una base de datos, y una vez se ha realizado el paso a tablas
del mismo, en necesario crear las tablas correspondientes dentro de la base de datos. Para
cada campo de cada una de las tablas, es necesario determinar el tipo de datos que contiene,
para de esa forma ajustar el diseño de la base de datos, y conseguir un almacenamiento
óptimo con la menor utilización de espacio.

PMyAdmin. es una herramienta escrita en PHP con la intención de manejar la administración


de MySQL a través de páginas webs, utilizando Internet. Actualmente puede crear y eliminar
Bases de Datos, crear, eliminar y alterar tablas, borrar, editar y añadir campos, ejecutar
cualquier sentencia SQL, administrar claves en campos, administrar privilegios, exportar
datos en varios formatos y está disponible en 50 idiomas. Se encuentra disponible bajo la
licencia GPL.

Lenguajes de programación

Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de


programación, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi
(via dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java),
Lisp, Perl, PHP, Python, Ruby,Gambas, REALbasic (Mac y Linux), (x)Harbour (Eagle1),
FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe un interfaz
ODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte
ODBC comunicarse con las bases de datos MySQL. También se puede acceder desde el
sistema SAP, lenguaje ABAP.

Aplicaciones

MySQL es muy utilizado en aplicaciones web, como Drupal o phpBB, en plataformas


(Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de
errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a
menudo aparece en combinación con MySQL. MySQL es una base de datos muy rápida en la
lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de
integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja
concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de
datos, lo que hace a MySQL ideal para este tipo de aplicaciones. Sea cual sea el entorno en el
que va a utilizar MySQL, es importante adelantar monitoreos sobre el desempeño para
detectar y corregir errores tanto de SQL como de programación
Plataformas

MySQL funciona sobre múltiples plataformas, incluyendo:


AIX
BSD
FreeBSD
HP-UX
GNU/Linux
Mac OS X
NetBSD
Novell Netware
OpenBSD
OS/2 Warp
QNX
SGI IRIX
Solaris
SunOS
SCO OpenServer
SCO UnixWare
Tru64
eBD
Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista,
Windows 7 y Windows Server (2000, 2003 y 2008) Windows.
OpenVMS

Características

Un amplio subconjunto de ANSI SQL 99, y varias extensiones.


Soporte a multiplataforma
Procedimientos almacenados
Disparadores (triggers)
Cursores
Vistas actualizables
Soporte a VARCHAR
INFORMATION_SCHEMA
Modo Strict
Soporte X/Open XA de transacciones distribuidas; transacción en dos fases como parte de
esto, utilizando el motor InnoDB de Oracle
Motores de almacenamiento independientes (MyISAM para lecturas rápidas, InnoDB para
transacciones e integridad referencial)
Transacciones con los motores de almacenamiento InnoDB, BDB Y Cluster; puntos de
recuperación (savepoints) con InnoDB
Soporte para SSL
Query caching
Sub-SELECTs (o SELECTs anidados)
Réplica con un maestro por esclavo, varios esclavos por maestro, sin soporte automático para
múltiples maestros por esclavo.
indexing y buscando campos de texto completos usando el motor de almacenamiento
MyISAM
Embedded database library
Soporte completo para Unicode
Conforme a las reglas ACID usando los motores InnoDB, BDB y Cluster
Shared-nothing clustering through MySQL Cluster.

Características adicionales

Usa GNU Automake, Autoconf, y Libtool para portabilidad


Uso de multihilos mediante hilos del kernel.
Usa tablas en disco b-tree para búsquedas rápidas con compresión de índice
Tablas hash en memoria temporales
El código MySQL se prueba con Purify (un detector de memoria perdida comercial) así como
con Valgrind, una herramienta GPL
Completo soporte para operadores y funciones en cláusulas select y where.
Completo soporte para cláusulas group by y order by, soporte de funciones de agrupación
Seguridad: ofrece un sistema de contraseñas y privilegios seguro mediante verificación basada
en el host y el tráfico de contraseñas está cifrado al conectarse a un servidor.
Soporta gran cantidad de datos. MySQL Server tiene bases de datos de hasta 50 millones de
registros.
Se permiten hasta 64 índices por tabla (32 antes de MySQL 4.1.2). Cada índice puede consistir
desde 1 hasta 16 columnas o partes de columnas. El máximo ancho de límite son 1000 bytes
(500 antes de MySQL 4.1.2).
Los clientes se conectan al servidor MySQL usando sockets TCP/IP en cualquier plataforma.
En sistemas Windows se pueden conectar usando named pipes y en sistemas Unix usando
ficheros socket Unix.
En MySQL 5.0, los clientes y servidores Windows se pueden conectar usando memoria
compartida.
MySQL contiene su propio paquete de pruebas de rendimiento proporcionado con el código
fuente de la distribución de MySQL.

El mapa de ruta de MySQL 5.1 indica soporte para:


Particionado de la base de datos
Backup en línea para todos los motores de almacenamiento
Replicación segura
Restricciones a nivel de columna
Planificación de eventos
Funciones XML

Características distintivas

Las siguientes características son implementadas únicamente por MySQL:


Múltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB, Memory/heap,
MySQL Cluster, Federated, Archive, CSV, Blackhole y Example en 5.x), permitiendo al
usuario escoger la que sea más adecuada para cada tabla de la base de datos.
Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para
incrementar el número de transacciones por segundo.

InnoDB no detecta el tamaño máximo de fichero, por lo tanto, hay que ser cuidadoso en
sistemas de ficheros donde el tamaño máximo sea de 2GB. Para especificar el tamaño
máximo de un fichero autoextensible, se emplea el atributo max
InnoDB no crea directorios, de modo que hay que estar seguro de que el directorio
/ibdata existe antes de iniciar el servidor. Esto se aplica también a cualquier directorio
de ficheros de registro (log) que se configure. Para crear los directorios necesarios se
emplea el comando mkdir que existe en Unix y DOS.
No se deben convertir las tablas del sistema en la base de datos mysql (por ejemplo,
user o host) al tipo InnoDB. Las tablas del sistema siempre deben ser del tipo MyISAM.

Tipos de compilación del servidor

Hay tres tipos de compilación del servidor MySQL:


Estándar: Los binarios estándar de MySQL son los recomendados para la mayoría de los
usuarios, e incluyen el motor de almacenamiento InnoDB.
Max (No se trata de MaxDB, que es una cooperación con SAP): Los binarios incluyen
características adicionales que no han sido lo bastante probadas o que normalmente no son
necesarias.
MySQL-Debug: Son binarios que han sido compilados con información de depuración extra.
No debe ser usada en sistemas en producción porque el código de depuración puede reducir el
rendimiento.

Especificaciones del código fuente

MySQL está escrito en una mezcla de C y C++. Hay un documento que describe algunas de
sus estructuras internas en http://dev.mysql.com/doc/internals/en/ (en inglés).

Otras funcionalidades de las listas de correo

Bugs: permite a la gente buscar y arreglar bugs.


MySQLdoc: para gente que trabaja en documentación.
Pruebas de rendimiento: para gente interesada en temas de rendimiento no sólo de MySQL,
sino de otros motores de bases de datos.
Otras listas de correo son: MyODBC, Herramientas GUI, Cluster, Dotnet, PlusPlus y Perl.
Adicional a las listas de correo, se encuentra el soporte de IRC de la comunidad MySQL.

Industria relacionada

La industria radica en la venta de productos software y de algunos servicios relacionados a


numerosas empresas que utilizan estos productos.

MySQL AB clasifica los productos así:


MySQL Enterprise: incluye MySQL Enterprise Server , Monitoreo de la red MySQL,
servicios de consulta y soporte de producción MySQL
MySQL Cluster
MySQL Embedded Database
MySQL Drivers: para JDBC, ODBC y .Net
MySQL Tools: MySQL Administrator, MySQL Query Browser, and the MySQL Migration
Toolkit
MaxDB: MaxDB es una base de datos de código abierto certificada para SAP/R3
MySQL en cifras

Según las cifras del fabricante, existirían más de seis millones de copias de MySQL
funcionando en la actualidad, lo que supera la base instalada de cualquier otra herramienta
de bases de datos.
El tráfico del sitio web de MySQL AB superó en 2004 al del sitio de IBM.

Estado actual

La serie en desarrollo de MySQL Server actualmente, es la 5.1 a la cual se añaden nuevas


características en relación a la serie 5.0. La serie de producción actual de MySQL es 5.0, cuya
penúltima versión estable es la 5.0.26 lanzada en octubre de 2006. Actualmente, se puede
descargar la serie 5.0.27. La serie de producción anterior fue la 4.1, cuya versión estable es
4.1.7 lanzada en octubre de 2004. A estas versiones de producción sólo se arreglan problemas,
es decir, ya no se añaden nuevas características. Y a las versiones anteriores solamente se les
corrigen bugs críticos.

Usuarios destacados

Amazon.com
Cox Communications - La cuarta televisión por cable más importante de EEUU, tienen más
de 3.600 tablas y aproximadamente dos millones de inserciones cada hora.
Craigslist
CNET Networks
Digg - Sitio de noticias.
flickr, usa MySQL para gestionar millones de fotos y usuarios.
Google - Para el motor de búsqueda de la aplicación AdWords.
Joomla!, con millones de usuarios.
phpBB, Uno de los más famosos sitios de foros, con miles de instalaciones y con millones de
usuarios.
LiveJournal - Cerca de 300 millones de páginas servidas cada día.[3]
NASA
NetQOS, usa MySQL para la gestión de algunas de las redes más grandes del mundo como las
de Chevron, American Express y Boeing.
Nokia, usa un cluster MySQL para mantener información en tiempo real sobre usuarios de
redes de móviles.
Omniture
Sabre, y su sistema de reserva de viajes Travelocity
Slashdot - con cerca de 50 millones de páginas servidas cada día.
Wikipedia, sirve más de 200 millones de consultas y 1,2 millones de actualizaciones cada día,
con picos de 11.000 consultas por segundo.
WordPress, con cientos de blogs alojados en él.
Yahoo! - para muchas aplicaciones críticas.
Disparadores (triggers)

¿Que son los Triggers y como usarlos en MySQL 5.0?


Desde la salida de la versión 5 de MySql se pueden usar triggers en nuestras bases de
datos.

Peró, ¿qué son los triggers?, son objetos relacionados con tablas y almacenados en la
base dedatos que se ejecutan o se muestran cuando sucede algún evento sobre sus
tablas asociadas.

Los eventos pueden ser las sentencias INSERT, DELETE, UPDATE que modifican los
datos de una tabla. Los triggeres se pueden ejecutar antes (BEFORE) y/o después
(AFTER) de que sean modificados los datos.

Los triggers tienen dos palabras clave, OLD y NEW que se refieren a los valores que
tienen las columnas antes y después de la modificación. Los INSERT permiten NEW,
los DELETE sólo OLD y los UPDATE ambas.

Un ejemplo de trigger seria uno asociado a la sentencia DELETE en una tabla de


clientes, para impedir que se elimine uno que tenga un saldo distinto de cero. Otro
trigger seria guardar los datos que se modifican de un cliente en otra base de datos
que serviria de auditoria.

Crearemos la tabla de clientes y le ponemos algunos registros:

CREATE TABLE clientes(


id int not null auto_increment,
nombre varchar(100),
seccion varchar(10),
PRIMARY KEY(id),
KEY(nombre)
) ENGINE = InnoDB;

INSERT INTO clientes (nombre, seccion) VALUES


('Miguel','informatica'),
('Rosa','comida'),
('Maria','ropa'),
('Albert','informatica'),
('Jordi','comida');

Y una tabla que será la que guardará los datos de la "auditoria"

CREATE TABLE auditoria_clientes


(
id int not null auto_increment,
nombre varchar(100),
anterior_seccion varchar(10),
usuario varchar(40),
modificado datetime,
primary key(id)
) ENGINE = InnoDB;

y finalmente un trigger que se disparará cada vez que alguien modifique un dato de la
tabla clientes y lo guardará en una tabla junto al nombre del usuario y la fecha.

CREATE TRIGGER trigger_auditoria_clientes AFTER UPDATE ON clientes


FOR EACH ROW
INSERT INTO auditoria_clientes(name, anterior_seccion, usuario, modificado )
VALUES (OLD.nombre, OLD.seccion, CURRENT_USER(), NOW() );

A partir de MySQL 5.0.2 se incorporó el soporte básico para disparadores (triggers). Un


disparador es un objeto con nombre dentro de una base de datos el cual se asocia con una
tabla y se activa cuando ocurre en ésta un evento en particular. Por ejemplo, las siguientes
sentencias crean una tabla y un disparador para sentencias INSERT dentro de la tabla. El
disparador suma los valores insertados en una de las columnas de la tabla:

mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));


mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
 FOR EACH ROW SET @sum = @sum + NEW.amount;

Subconsultas
MySQL soporta sub-consultas y tablas derivadas. Una "sub-consulta" es un comando
SELECT anidado en otro comando. Una tabla "derivada" (una vista sin nombre) es una
subconsulta en la cláusula FROM de otra consulta.

Para versiones MySQL anteriores a la 4.1, la mayoría de subconsultas pueden reescribirse


usando joins u otros métodos.

.Vistas
Vistas (incluyendo vistas actualizables) se implementan en la versión 5.0 de MySQL Server.
Las vistas están disponibles en las versiones binarias a partir de la 5.0.1.

Las vistas son útiles para permitir acceder a los usuarios a un conjunto de relaciones (tablas)
como si fueran una sola, y limitar su acceso a las mismas. También se pueden usar las vistas
para restringir el acceso a registros (un subconjunto de una tabla particular). Para control de
acceso a columnas, puede usar el sofisticado sistema de privilegios de MySQL Server.

Al diseñar la implementación de las vistas, nuestro ambicioso objetivo, dentro de los límites de
SQL, ha sido la plena compatibilidad con la regla 6 de Codd para sistemas relacionales de
bases de datos: "Todas las vistas que son actualizables en teoría, deben serlo en la práctica".
Restricciones (constraints) en los índices PRIMARY KEY y
UNIQUE

Normalmente, un error ocurre cuando trata de ejecutar un INSERT o UPDATE en un registro


que viole la clave primaria, clave única o clave foránea. Si usa un motor transaccional como
InnoDB, MySQL automáticamente deshace el comando. Si usa un motor no transaccional,
MySQL para de procesar el comando en el registro en el que ocurre el error y deja sin
procesar el resto de registros.

Si desea ignorar este tipo de violaciones de claves, MySQL permite la palabra clave IGNORE
para INSERT y UPDATE. En este caso, MySQL ignora cualquier violación de clave y continúa
procesando el siguiente registro.De momento, sólo las tablas InnoDB soportan claves
foráneas.

Restricciones (constraints) sobre datos inválidos


Antes de la versión 5.0.2 de MySQL, se permitía insertar valores ilegales convirtiéndolos en
valores legales. A partir de la versión 5.0.2, sigue este compartimiento por defecto, pero puede
elegir un tratamiento para valores incorrectos más tradicional, como no aceptarlos y abortar
los comandos que los incluyen.

Esta sección describe el comportamiento por defecto de MySQL (permisivo), así como el
nuevo modo estricto SQL y en qué se diferencian.

Lo siguiente es cierto si no usa modo estricto. Si inserta un valor "incorrecto" en una columna,
como NULL en una columna NOT NULL o una valor numérico demasiado grande en una
columna numérica, MySQL cambia el valor al "mejor valor posible" para la columna en lugar
de producir un error:

MySQL le permite almacenar ciertos valores incorrectos en columnas DATE y DATETIME (tales
como '2000-02-31' o '2000-02-00'). La idea es que no es el trabajo del servidor SQL
validar fechas. Si MySQL puede almacenar una fecha y recuperarla fielmente, se almacena tal
y como se da. Si la fecha es totalmente incorrecta (más allá de la capacidad del servidor para
almacenarla), se almacena en su lugar el valor especial '0000-00-00'.

Si intenta almacenar NULL en una columna que no admita valores NULL ocurre un error para
los comandos INSERT de un solo registro. Para comandos INSERT de varios registros o para
comandos INSERT INTO... SELECT , MySQL Server almacena el valor implícito para el tipo
de datos de la columna. En general, es 0 para tipos numéricos, cadena vacía ("") para tipos
de cadenas de caracteres, y el valor "cero" para tipos de fecha y tiempo.

La razón para las reglas anteriores es que no podemos validar esas condiciones hasta que los
comandos han empezado a ejecutarse. No podemos deshacer si encontramos un problema
tras actualizar algunos registros, ya que el motor de almacenamiento puede no soportar
rollback. La opción de terminar el comando no es siempre positiva; en este caso, la
actualización quedaría "a medias", lo que posiblemente es la peor opción. En este caso, lo
mejor es hacerlo "lo mejor posible" y continuar como si nada hubiera ocurrido.
A partir de MySQL 5.0.2, puede seleccionar un tratamiento de validación de datos de entrada
más estricto usando los modos SQL STRICT_TRANS_TABLES o STRICT_ALL_TABLES.

STRICT_TRANS_TABLES funciona así:

Para motores de almacenamiento transaccionales, valores incorrectos en cualquier parte del


comando provocan que se aborte el comando y se deshaga el mismo.

Para motores no transaccionales, el comando aborta si ocurre un error en el primer registro a


insertar o actualizar. (En este caso, el comando dejará la tabla intacta, igual que en una tabla
transaccional.) Los errores en registros después del primero no abortan el comando. En lugar
de ello, los valores incorrectos se ajustan y se generan advertencias en lugar de errores. En
otras palabras, con STRICT_TRANS_TABLES, un valor incorrecto provoca que MySQL deshaga
todas las actualizaciones hechas hasta el momento, si es posible.

Para chequeo estricto, active STRICT_ALL_TABLES. Es equivalente a STRICT_TRANS_TABLES


excepto que en motores de almacenamiento no transaccionales, los errores abortan el
comando incluso cuando hay datos incorrectos a partir del primer registro. Esto significa que si
ocurre un error a medias de una inserción o actualización de varios registros en una tabla no
transaccional, se produce una actualización parcial. Los primeros registros se insertan o
actualizan, pero aquéllos a partir del punto en que ocurre el error no. Para evitar esto en tablas
no transaccionales, use inserciones de un solo registro o use STRICT_TRANS_TABLES para
obtener advertencias en lugar de errores. Para evitar problemas, no utilice MySQL para validar
contenido de columnas. Es preferible (y a menudo más rápido) dejar que la aplicación se
asegure de pasar sólo valores legales a la base de datos.

Con cualquiera de las opciones de modo estricto, puede hacer que se traten los errores como
advertencias usando INSERT IGNORE o UPDATE IGNORE en lugar de INSERT o UPDATE sin
IGNORE.

Restricciones ENUM y SET

Las columnas ENUM y SET proporcionan una manera eficiente de definir columnas que
contienen un conjunto dado de valores. Sin embargo, antes de MySQL 5.0.2, ENUM y SET no
son restricciones reales. Esto es por la misma razón que NOT NULL tampoco lo es

Las columnas de tipo ENUM siempre tienen un valor por defecto. Si no especifica un valor por
defecto, entonces será NULL para las columnas que permitan valores NULL, si no, se utiliza el
primer valor de la enumeración como valor por defecto.

Si inserta un valor incorrecto en una columna ENUM o si fuerza insertar un valor en una
columna ENUM con IGNORE, se inicializa al valor reservado para enumeraciones 0, el cual se
muestra como una cadena vacía en un contexto de cadenas de caracteres.

Si insertar un valor incorrecto en una columna SET, se ignora el valor incorrecto. Por ejemplo,
si la columna puede contener los valores 'a', 'b', y 'c', un intento de insertar 'a,x,b,y'
resulta en un valor de 'a,b'. .

En MySQL 5.0.2, puede configurar el servidor para que use el modo estricto de SQL. Cuando
el modo estricto está activado, la definición de columnas ENUM o SET no actúa como una
restricción en valores insertados en la columna. Los valores que no satisfacen estas
condiciones provocan un error:

 Un valor ENUM debe elegirse entre los listados en la definición de la columna, o el


equivalente numérico interno. El valor no puede ser un valor de error (esto es 0 o la
cadena vacía). Para una columna definida como ENUM('a','b','c'), valores tales
como "", 'd', y 'ax' son ilegales y rehusados.
 Un valor SET debe ser una cadena vacía o un valor consistente en uno o más valores
listados en la definición de la columna separados por comas. Para una columna
definida como SET('a','b','c'), valores tales como 'd', y 'a,b,c,d' serían
ilegales y, por lo tanto, rehusados.

Se pueden suprimir los errores derivados de valores inválidos en modo estricto usando
INSERT IGNORE o UPDATE IGNORE. En ese caso, se genera una advertencia en lugar de un
error. Para tipos ENUM, el valor se inserta como un miembro erróneo (0). Para tipo SET, el valor
se inserta igual excepto que se borra cualquier subcadena inválida. Por ejemplo, 'a,x,b,y'
se convertiría en 'a,b', como se ha descrito.

Copias de seguridad de bases de datos


Debido a que las tablas de MySQL se almacenan como archivos, es fácil hacer una copia de
seguridad. Para hacer una copia consistente haga un LOCK TABLES en las tablas relevantes,
seguido de un FLUSH TABLES para las tablas. Solo necesita obtener un bloqueo de lectura;
esto permite a otros clientes continuar consultando la tabla mientras usted está haciendo una
copia de los archivos del directorio de la base de datos. La sentencia FLUSH TABLES es
necesaria para asegurarse de que todas las páginas de índice activas se escriben al disco
antes de que comience la copia.

Si quiere hacer una copia de una tabla a un nivel SQL, puede utilizar SELECT INTO ...
OUTFILE o BACKUP TABLE. Para SELECT INTO ... OUTFILE, el archivo de salida no debe
existir previamente. Esto también es cierto para BACKUP TABLE, ya que permitir que archivos
externos sean sobreescritos sería un riesgo de seguridad

Otra técnica para hacer copias de seguridad de una base de datos es utilizar el programa
mysqldump o el script mysqlhotcopy script.

1. Hacer una copia completa de su base de datos:


2. shell> mysqldump --tab=/path/to/some/dir --opt db_name

O:

shell> mysqlhotcopy db_name /path/to/some/dir

También puede simplemente copiar todos los archivos de tablas (*.frm, *.MYD, y
*.MYI) siempre que el servidor no esté actualizando nada. El script mysqlhotcopy
utiliza este método. (Pero tenga en cuenta que estos métodos no funcionan si su base
de datos contiene tablas InnoDB. InnoDB no almacena los contenidos de las tablas en
directorios de base de datos, y mysqlhotcopy funciona solo para tablas MyISAM e
ISAM.)
MyISAM es el motor de almacenamiento por defecto. Se basa en el código ISAM pero
tiene muchas extensiones útiles. (Tenga en cuenta que MySQL 5.0 no soporta ISAM.)

El máximo número de índices por tabla MyISAM en MySQL 5.0 es 64. Esto puede
cambiarse recompliando. El máximo número de columnas por índice es 16.

La longitud máxima de clave es 1000 bytes. Esto puede cambiarse recompilando. En caso
de clave mayor a 250 bytes, se usa un tamaño de bloque mayor, de 1024 bytes.

Si su servidor MySQL es un servidor esclavo de replicación, entonces


independientemente del método de copia de seguridad que elija, también debe copiar
los archivos master.info y relay-log.info cuando copie los datos de su esclavo.
Estos archivos son siempre necesarios para continuar la replicación después de una
restauración de los datos del esclavo. Si su esclavo está replicando comandos LOAD
DATA INFILE, debería también copiar cualquier archivo SQL_LOAD-* que pueda
existir en el directorio especificado por la opción --slave-load-tmpdir. (Esta
localización es por defecto el valor de la variable tmpdir, si no se especifica.) El
esclavo necesita estos archivos para reiniciar la replicación de cualquier operación
LOAD DATA INFILE interrumpida

Si tiene que restaurar tablas MyISAM, intente recuperarlas utilizando REPAIR TABLE o
myisamchk -r primero. Esto debería funcionar en el 99.9% de los casos. Si
myisamchk falla, intente el siguiente procedimiento. Tenga en cuenta que solo
funciona si tiene activado el registro binario iniciando el servidor MySQL con la opción
--log-bi

SQL Server

Historia del proyecto

SQL (Lenguaje de Consulta Estructurado) fue comercializado por primera vez en 1981 por
IBM, el cual fue presentado a ANSI y desde entonces ha sido considerado como un estándar
para las bases de datos relacionales.
Michael Widenius en la década de los 90 trató de usar mSQL para conectar las tablas usando
rutinas de bajo nivel ISAM, sin embargo, mSQL no era rápido y flexible para sus
necesidades. Esto lo llevó a crear una API SQL denominada MySQL para bases de datos muy
similar a la de mSQL pero más portable.

La procedencia del nombre de MySQL no es clara. Desde hace más de 10 años, las
herramientas han mantenido el prefijo My. También, se cree que tiene relación con el nombre
de la hija del cofundador Monty Widenius quien se llama My.

Por otro lado, el nombre del delfín de MySQL es Sakila y fue seleccionado por los fundadores
de MySQL AB en el concurso “Name the Dolphin”. Este nombre fue enviado por Ambrose
Twebaze, un desarrollador de software de código abierto africano, derivado del idioma
SiSwate, el idioma local de Swazilandia y corresponde al nombre de una ciudad en Arusha,
Tanzania, cerca de Uganda la ciudad origen de Ambrose.
El ANSI SQL sufrió varias revisiones y agregados a lo largo del tiempo:

Año Nombre Alias Comentarios


1986 SQL-86 SQL-87 Primera publicación hecha por ANSI. Confirmada por ISO en
1987.
1989 SQL-89 Revisión menor.
1992 SQL-92 SQL2 Revisión mayor.
1999 SQL:1999 SQL2000 Se agregaron expresiones regulares, consultas recursivas (para
relaciones jerárquicas), triggers y algunas características
orientadas a objetos.
2003 SQL:2003 Introduce algunas características de XML, cambios en las
funciones, estandarización del objeto sequence y de las columnas
autonumericas. (Ver Eisenberg et al.: SQL:2003 Has Been
Published.)
2006 SQL:2006 ISO/IEC 9075-14:2006 Define las maneras en las cuales el SQL
se puede utilizar conjuntamente con XML. Define maneras
importar y guardar datos XML en una base de datos SQL,
manipulándolos dentro de la base de datos y publicando el XML
y los datos SQL convencionales en forma XML. Además,
proporciona facilidades que permiten a las aplicaciones integrar
dentro de su código SQL el uso de XQuery, lenguaje de consulta
XML publicado por el W3C (World Wide Web Consortium)
para acceso concurrente a datos ordinarios SQL y documentos
XML.
2008 SQL:2008 Permite el uso de la cláusula ORDER BY fuera de las
definiciones de los cursores. Incluye los disparadores del tipo
INSTEAD OF. Añade la sentencia TRUNCATE.

Los sistemas de gestión de base de datos con soporte SQL más utilizados son, por orden
alfabético:

 DB2
 Firebird
 Informix
 Interbase
 MySQL
 Oracle
 PostgreSQL
 Pervasive
 SQLite
 SQL Server
 Sybase ASE

También podría gustarte