jueves, 15 de mayo de 2014

Modos de ejecución de comandos en MySQL



Cuando se ejecute un comando SQL desde el cliente MySQL se disponen de dos modos, el modo interactivo y el modo por lotes (o batch):

A continuación se describe el uso de ambos modos:

Como conectarse y desconectarse a MySQL de modo interactivo



Para conectarse al servidor MySQL se debe proporcionar un nombre de usuario y una contraseña.

Si el servidor se está ejecutando en un ordenador distinto a donde se establece la conexión se debe adicionalmente especificar el nombre de host.

El administrador del equipo servidor donde se encuentra instalada el MySQL debe proporcionar los parámetros necesarios para realizar esta conexión (nombre de usuario, contraseña y host). Una vez que se conocen los parámetros necesarios, debe conectarse de esta forma:

Introducción al MySQL


¿Qué es MySQL?

MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. 

Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.

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 qué puede hacer y qué 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.

Como crear claves foráneas en MySQL (FOREIGN KEY)



Foreign Key:
Una llave foránea (Foreign Key) es una limitación referencial entre dos tablas. La clave foránea identifica un campo en una tabla (tabla hija o referendo) que se refiere a un campo de otra tabla (tabla padre o referenciada).
El campo en la tabla padre debe ser clave primaria y un registro en la tabla hija no puede contener valores que no existen en la tabla padre.
Las referencias son creadas para vincular o relacionar información. Esto es una parte esencial de la normalización de base de datos.

miércoles, 7 de mayo de 2014

Motores de Almacenamiento de MySQL


MySQL soporta varios motores de almacenamiento que tratan con distintos tipos de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan con tablas transaccionales y otros que no lo hacen:
  • MyISAM trata tablas no transaccionales, proporciona almacenamiento y recuperación de datos rápida, así como posibilidad de búsquedas fulltext. MyISAM se soporta en todas las configuraciones MySQL y fue el motor de almacenamiento por defecto hasta la versión 5.5 de MySQL.
  • El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor de almacenamiento MEMORY anteriormente se conocía como HEAP.
  • Los motores de almacenamiento InnoDB y BDB proporcionan tablas transaccionales. InnoDB se incluye por defecto en todas las distribuciones binarias de MySQL 5.5

Tipos de columnas permitidas en MySQL


MySQL soporta un número de tipos de columnas divididos en varias categorías: tipos numéricos, tipos de cadenas de caracteres  y tipos de fecha y hora.
En este capítulo se mencionan los tipos de columnas más utilizados proporcionando una breve descripción de cada categoría:

Primeros pasos en MySQL: Comandos básicos


Para comenzar a trabajar con una base de datos o tabla, MySQL ofrece algunos comandos y funciones que proveen información acerca de las bases de datos y el sistema.

A continuación se mencionan los comandos y funciones más utilizados:

lunes, 5 de mayo de 2014

Cómo escribir consultas MySQL utilizando funciones



Funciones
Las funciones en MySQL se reconocen por los paréntesis al final. Entre las consideraciones al trabajar con funciones se pueden nombrar:
1. Los resultados de las funciones se devuelven en tablas, el primer renglón corresponde a los encabezados de las columnas. 
2. Es importante no dejar espacio entre el nombre de la función y los paréntesis, de otro forma MySQL genera un mensaje de error.
3. Cuando se utilizan cadenas de caracteres la primera posición es la uno (1).

A continuación se explican las funciones de cadena de caracteres, numéricas, Fecha y hora más utilizadas:

viernes, 2 de mayo de 2014

Sentencias de Definición de Datos


1. CREATE DATABASE
Crea una base de datos con el nombre dado.
Sintaxis:
CREATE DATABASE [IF NOT EXISTS] BaseDeDatos;
Ejemplo:
CREATE DATABASE IF NOT EXISTS nomina;


2. CREATE TABLE
Crea una tabla con el nombre dado.
Sintaxis:
CREATE TABLE [IF NOT EXISTS] tabla (
Campo1  TIPO(longitud) [NOT NULL o NULL],
Campo2  TIPO(longitud) [NOT NULL o NULL],
CampoN  TIPO(longitud) [NOT NULL o NULL],
PRIMARY KEY (Campo),
UNIQUE (Campo),
FOREIGN KEY (CampoDeEstaTabla) REFERENCES OtraTabla(CampodeOtraTabla)
ON DELETE CASCADE
ON UPDATE CASCADE
) ENGINE = INNODB;

Atributos de columna
Atributo
Significado
NULL
Se permiten valores nulos, atributo por omisión si no se especifica lo contrario.
NOT NULL
No se permiten valores nulos.
DEFAULT valor
Valor por omisión que se asigna a la columna.
AUTO_INCREMENT
El valor se asigna automáticamente incrementando en uno el máximo valor registrado  hasta el momento.
PRIMARY KEY
Señala al campo como clave primaria, implícitamente también lo declara como not null. Solo puede haber una sola clave primaria por tabla.

Aunque la creación de una clave primaria puede declararse como atributo de columna, es conveniente definirla como restricción de tabla, como se verá enseguida.

Restricciones de Tabla    
Restricción
Significado
PRIMARY KEY
Define el campo que servirá como clave primaria.
UNIQUE
Define los campos en las que no pueden duplicar valores.
FOREIGN KEY(Campo)
REFERENCES tabla2 (campo2)
Define un campo que es clave foránea en la tabla actual y es clave principal en otra tabla. Esto asegura que no se realicen referencias a registros que no existen.

Ejemplo:
CREATE TABLE IF NOT EXISTS empleado(
codigo INT(5) NOT NULL,
nombre VARCHAR(50) NOT NULL,
ingreso DATE NOT NULL,
num_hijos INT(2) UNSIGNED NOT NULL,
tipo ENUM("Fijo","Temporal") NOT NULL,
tiempo_contrato TINYINT(2) UNSIGNED DEFAULT 1 NOT NULL,
PRIMARY KEY(codigo)
) ENGINE=innodb;

  
3. ALTER TABLE
Cambia la estructura de una tabla existente.
Sintaxis:
(Para agregar campos)
ALTER TABLE tabla ADD nuevocampo definicióndecampo [FIRST o AFTER campo]
(Para modificar campos)
ALTER TABLE tabla CHANGE actualnombredecampo nuevonombredecampo definicióndecampo [FIRST o AFTER campo]
(Para eliminar campos)
ALTER TABLE tabla DROP campo;
(Para agregar llave primaria)
ALTER TABLE tabla ADD PRIMARY KEY(campoprimario)
(Para eliminar llave primaria)
ALTER TABLE tabla DROP PRIMARY KEY;
(Para renombrar tabla)
ALTER TABLE actualnombredetabla RENAME nuevonombredetabla

Ejemplos:
Agrega a la tabla 'empleado' el campo 'sueldo' (con 5 enteros y dos decimales) luego del campo ingreso.
ALTER TABLE empleado ADD sueldo FLOAT(7,2) AFTER ingreso;
Modifica a la tabla 'empleado' el campo sueldo agregando NOT NULL.
ALTER TABLE empleado CHANGE sueldo sueldo FLOAT(7,2) NOT NULL;
Elimina de la tabla 'empleado' el campo 'ciudad'
ALTER TABLE empleado DROP ciudad;
Renombra la tabla 'empleado' como 'obrero' 
ALTER TABLE empleado RENAME obrero;
Elimina de la tabla 'empleado' la llave primaria.
ALTER TABLE empleado DROP PRIMARY KEY;
Asignar al campo 'codigo' de la tabla 'empleado' como llave primaria.
ALTER TABLE empleado ADD PRIMARY KEY(codigo);


4. DROP TABLE
Borra una o más tablas.
Sintaxis:
DROP TABLE tabla
Ejemplo:
Borra la tabla 'empleados'.
DROP TABLE empleados


5. DROP DATABASE
Borra todas las tablas en la base de datos y borra la base de datos
Sintaxis:
DROP DATABASE basededatos
Ejemplo:
Borra la base de datos 'nomina'
DROP DATABASE nomina





Sentencias de manipulación de datos



INSERT
Inserta nuevos registros en una tabla existente basados en los valores especificados en VALUE. Si no se especifican los campos, se deben insertar todos los valores para cada campo en el orden en el cual están definidos en la tabla.
Sintaxis:
INSERT INTO tabla (campo1, campo2, campoN) VALUES (valor1,valor2,valorN);

DELETE
Borra los registros de tabla que satisfacen la condición dada por WHERE y retorna el número de registros borrados. Si se ejecuta un comando DELETE sin la cláusula WHERE se eliminarán todos los registros de la tabla.
Sintaxis:
DELETE FROM tabla WHERE criterio;

UPDATE
Actualiza los campos de los registros de tabla que satisfacen la condición dada por WHERE existentes con nuevos valores. En la cláusula SET se define las columnas que serán modificadas y el valor que recibirán. Si se ejecuta un comando UPDATE sin la cláusula WHERE se actualizan todos los registros de la tabla.
Si el valor contenido en el campo es el mismo valor que se desea actualizar MySQL no ejecuta ninguna actualización.
Si actualiza una columna declarada como NOT NULL con un valor NULL, la columna recibe el valor por defecto apropiado para el tipo de la columna. Para campos numéricos “0”, para caracteres, la cadena vacía (''), para fechas el valor “0000-00-00” y para horas “00:00:00”.
UPDATE retorna el número de registros que se cambian.
Sintaxis:

UPDATE tabla SET campo1=valor1, campo2=valor2, campoN=valorN WHERE criterio;