MySQL. ¿Qué es MySQL? Es un sistema de gestión de bases de datos relacional, fue creada por la empresa sueca MySQL AB, la cual tiene el copyright del código fuente del servidor SQL, así como también de la marca. MySQL es un software de código abierto, licenciado bajo la GPL de la GNU, aunque MySQL AB distribuye una versión comercial, en lo único que se diferencia de la versión libre, es en el soporte técnico que se ofrece, y la posibilidad de integrar este gestor en un software propietario, ya que de otra manera, se vulneraría la licencia GPL. El lenguaje de programación que utiliza MySQL es Structured Query Language (SQL) que fue desarrollado por IBM en 1981 y desde entonces es utilizado de forma generalizada en las bases de datos relacionales. Características principales. Inicialmente, MySQL carecía de algunos elementos esenciales en las bases de datos relacionales, tales como integridad referencial y transacciones. A pesar de esto, atrajo a los desarrolladores de páginas web con contenido dinámico, debido a su simplicidad, de tal manera que los elementos faltantes fueron complementados por la vía de las aplicaciones que la utilizan. Poco a poco estos elementos faltantes, están siendo incorporados tanto por desarrolladores internos, como por desarrolladores de software libre. En las últimas versiones se pueden destacar las siguientes características principales: 1.- El principal objetivo de MySQL es velocidad y robustez. 2.- Soporta gran cantidad de tipos de datos para las columnas. 3.- Gran portabilidad entre sistemas, puede trabajar en distintas plataformas y sistemas operativos. 4.- Cada base de datos cuenta con 3 archivos: Uno de estructura, uno de datos y uno de índice y soporta hasta 32 índices por tabla. 5.- Aprovecha la potencia de sistemas multiproceso, gracias a su implementación multihilo. 6.- Flexible sistema de contraseñas (passwords) y gestión de usuarios, con un muy buen nivel de seguridad en los datos. 7.- El servidor soporta mensajes de error en distintas lenguas
8.- Uso de transacciones ACID (Atomic, Consistent Isolated, Durable): Para construir aplicaciones más seguras mediante commit, rollback, crash recovery y bloqueo por registro. 9.- Store Procedures: Para mejorar la programación. 10.- Triggers: Para mejorar las reglas del negocio. 11.- Vistas: Para que la información sensible sea más segura. 12.- Information Schema: Para un fácil acceso a los metadatos. 13.- Transacciones Distribuidas(XA): Para soportar transacciones entre múltiples ambientes de bases de datos. VENTAJAS. 1.- Velocidad al realizar las operaciones, lo que le hace uno de los gestores con mejor rendimiento. 2.- Bajo costo en requerimientos para la elaboración de bases de datos, ya que debido a su bajo consumo puede ser ejecutado en una máquina con escasos recursos sin ningún problema. 2.- Facilidad de configuración e instalación. 3.- Soporta gran variedad de Sistemas Operativos 4.- Baja probabilidad de corromper datos, incluso si los errores no se producen en el propio gestor, sino en el sistema en el que está. 5.- Conectividad y seguridad DESVENTAJAS. 1.- Un gran porcentaje de las utilidades de MySQL no están documentadas. 2.- No es intuitivo, como otros programas (ACCESS).
Especificaciones Técnicas Arquitectura Flexible
Open Source
Multi-threaded
Pluggable Storage-Engine Architecture
MyISAM
InnoDB
Merge
Memory
Archive
Cluster
OLTP y Transacciones
ACID Transactions
Commit, Rollback
Foreign Keys, Referential Integrity
Row-level Locking
Customizable Lock Isolation Levels
Distributed Transactions (XA)
Snapshot Repeatable Reads (readers don’t block writers and vice-versa)
Timed Deadlock Detection ANSI SQL Standards
ANSI SQL
SubQueries, Joins, Cursors
Prepared Statements
Views
Triggers
Stored Procedures
User-Defined Functions
Information Schema
Unicode
Referential Integrity
Server-enforced Data Integrity
Strong Data type Support (e.g.Numeric, VARCHAR, BLOB, etc.)
Optimized Datatype Support (e.g. Tinyint, Smallint, Mediumint, Bigint, etc.) Replicación, Cluster & Alta Disponibilidad
Built-in Replication
EngineMaster/Slave
Dual Master
Replication Ring
Replication Tree
Proven Load Balancing
· Distributed AutoIncrement
Main Memory Cluster Engine with instant failover (available separately)
Respaldos
Auto-Restart/Recovery
Backup and Point-in-Time Recovery
Logical Online Hot-Backup
Physical Online Hot-Backup (available separately) Manejo del Almacenamiento
Hassle-Free Storage Administration
Automatic Space Expansion
Built-in Space Reclamation
Auto Undo/Rollback Management
Customizable Storage Assignments
Compressed and Archive Tables
Packed Index Storage
Works with NAS or SAN storage Características optimizadas para aplicaciones Web
Server-side Thread Pool
Connection Thread Caching
Query Results Caching
Load Balancing
Prepared Statements
Full Text Search
Multiple Character Sets
Geospatial Support
Multi-Terabyte Scalability Características optimizadas para Data Warehouse
Fast Data Load Utility
High-Speed Multi-Insert Function
GROUP BY WITH ROLLUP
Aggregate UDF
Analytic SQL Functions
Geospatial Support
Archive Storage Engine for historical data
Multi-Terabyte Scalability Seguridad
SSL Support
Built-in Data Encryption/Decryption
Granular External Security Control Fine Grained Object Privileges
View Support
Triggers for auditing
Query Logs for auditing
Archive Storage Engine for auditing
Fully backed by MySQL Network
Certified Testing
Indemnification
24x7 Production Support
Online Knowledge Base
Customized Advisors
Targeted Alerts Buen Desempeño
Dynamic Memory Caches
Unique Query Cache
Multiple Index Type Support (B-tree, R-tree, Hash, etc.)
Cost-based Optimizer
High-speed Query Optimizer
Diagnostics and SQL Tracing Fácil de usar
Fácil de instalar y configurar (aproximadamente 15 minutos para todas las plataformas)
Cambios dinámicos en la configuración
Información del esquema Herramientas Gráficas
MySQL Workbench
MySQL Query Browser
MySQL Administrator
MySQL Migration Toolkit Drivers
MySQL Native C Library
MySQL Drivers for ODBC, JDBC, .Net
Community Drivers for PHP, Perl, Python, Ruby, etc
MySQL Connector/MXJ for deployment as a JMX MBean Plataformas
32 and 64 bit native binaries
Operating Systems
Linux: RedHat, SuSE, Fedora, Debian
Unix: Solaris, HP-UX, AIX, SCO
BSD: FreeBSD
Apple: Mac OS
Windows: 2000, 2003, XP
Novell: NetWare
CPUs
Intel x86, IA32, IA64
AMD Optaron
IBM PowerPC
Sun SPARC
Additional platforms available
Comandos principales de MYSQL. •Arranque de los servidores. Servidor Linux: safe_mysqld –user=mysqladm & root & Servidor Windows: Mysqld Arranque como usuario: mysql –u usuario –p clave
•Consultas generales sobre las bases de datos Mostrar las bases de datos: show databases; Mostrar las bases de datos seleccionadas: select databases(); Mostrar las tablas que contiene una base de datos: show tables; Seleccionar una base de datos: use nombre_base; Describir la estructura de campos de una tabla: describe nombre_tabla; •Creación de bases de datos, tablas y registros Crear una base de datos: create database nombre_base; Creación de una tabla: create [temporary] table [if no exists] nombre_tabla ( 1
2
3
nombre_campo tipo opciones cláusulas , “““, “““, [último campo] ); [temporary] --> la tabla existirá mientras exista la conexión con el cliente actual o hasta que se emita la instrucción drop table. [if no exist] --> si existe la tabla no se crea una nueva.
(1) Las posibles opciones de tipo de campo son: tinyint --> 1 byte smallint --> 2 byte mediumint --> 3 byte int --> 4 byte bigint --> 8 byte float --> 4 byte double --> 8 byte decimal --> variable char(n) --> cadena de caracteres de longitud fija varchar(n) --> cadena de caracteres de longitud variables tinyblob --> objeto binario largo (muy pequeño) blob --> objeto binario largo (pequeño) mediumblob --> objeto binario largo (medio) longblob --> objeto binario largo (grande) tinytext --> cadena de texto muy pequeña text --> cadena de texto pequeña mediumtext --> cadena de texto media longtext --> cadena de texto larga enum --> una enumeración set --> un conjunto date --> valor fecha (aaaa-mm-dd) time --> valor de hora (hh-mm-ss) datetime --> valor de fecha y hora timestamp --> valor de lapso de tiempo (aaaammddhhmmss) year --> valor de año (2) Las posibilidades del apartado opciones son: Generales: null --> admite valores nulos no null --> rechaza dejar el campo en blanco default --> permite establecer un valor por defecto Columnas numéricas: auto_increment --> para generar identificadores únicos o valores en serie. unisgned --> rechazo de valores negativos Cadena: binary --> trata los valores como cadenas binarias (campos char y varchar) (3) Cláusulas: primary key --> columna indexada para búsqueda rápida. Clave principal, solo puede haber una unique --> crea un índice con valores únicos index, key --> son sinónimos y crean índices que pueden contener valores repetidos.
Lista_de_acción: establece una o varias acciones a realizar, las posibilidades son: a)ADD INDEX [nombre _ índice][columna _ índice]: añade un índice a la tabla basado en la columna especificada. Si se especifican varias columnas deben ir separadas por comas. b) ADD PRIMARY KEY [columna _ índice]: añade una clave principal siguiendo la columna establecida. c) ADD UNIQUE [nombre _ índice][columna _ índice]: añade un índice de valor único a la tabla en función de la columna especificada. d) ALTER [column] nombre _ columna (set default valor | drop default): modifica el valor dedo de una columna o reduce su valor predeterminado actual. e) CHANGE [column] nombre _ columna declaración _ columna: cambia el nombre y la definición de una columna; nombre _ columna -> nombre de la columna a modificar, declaración _ columna -> es el valor de definición por el cual se debe regir la columna, sus opciones son las mismas que las señaladas para la creación de los campos de las tablas. f) DROP [column] nombre _ columna: elimina la columna especificada. g) DROP INDEX nombre_index: elimina el índice de la tabla. h) DROP PRIMARY KEY: elimina la clave principal de la tabla. Si no existe clave principal y si índices con especificación UNIQUE se elimina el primero existente. i) MODIFY [column] declaración _ columna: cambia la declaración de una columna. j) RENAME [AS] nombre_tabla_nueva: cambia el nombre de la tabla.
La empresa CSI viendo las opciones que ofrece MYSQL a decidi贸 a usar su sistema gestor de base de datos lo cual proporciona muchas cosas inter茅senlas y as铆 mismo de que es de licencia gratuita. Esquema l贸gico.
Empresa
Alumno
hace
realiza
Proyecto
Asesor_interno
Estadia
asigna hace Asesor_externo
establece
Calificacion
establece