Inicio > MySQL, SQL > Curso MySQL. Capítulo 2: Sentencias SQL de definición de datos.

Curso MySQL. Capítulo 2: Sentencias SQL de definición de datos.

Seguimos con el curso relámpago dedicado a MySQL. Vamos a ver la parte del lenguaje SQL conocida como DDL, lenguaje de definición de datos. Para poder llevar a cabo los ejemplos recomiendo instalar EasyPHP o alguno parecido que incluya PHPMyAdmin para poder interactuar directamente con MySQL desde una interfaz web y ahorrarnos trabajar con el monitor de MySQL. De todas  se puede utilizar perfectamente  la línea de comandos y el monitor MySQL.

Nuestro ejemplo va a ser sencillo, vamos a diseñar el esquema básico de una base de datos para un blog. Tendremos una tabla para guardar los artículos, otra tabla para guardar los comentarios de los artículos y una tabla para guardar las categorias de los artículos.

Iniciando el monitor en la línea de comandos

Para iniciar sesión en el monitor MySQL escribe en la línea de comandos lo siguiente:

mysql -h nombredehost -u nombredeusuario -p

El comando mysql invoca al monitor. La opción -h especifica el nombre del host, si se ha iniciado el servidor localmente especificamos localhost. La opción -u especifica el usuario que tiene acceso al sistema gestor de base de datos. Si hemos instalado EasyPHP el usuario lo habremos creado durante la instalación. La opción -p le indica al monitor que el usuario tiene que acceder a través de una contraseña.

En mi caso escribo en la línea de comandos:

mysql -h localhost -u root -p

El monitor te pedirá que escribas la contraseña.

Enter password:

Escribimos el password y apretamos ENTER. Nos mostrará un mensaje de bienvenida y se mostrará el prompt de MySQL.

mysql >

A partir de aquí ya podemos ejecutar sentencias SQL. No voy a explicar como definir nuevos usuarios en el sistema gestor ni los principios de privigelios de momento porque es un tema un poco más avanzado si es la primera vez que te enfrentas a las bases de datos. Pero lo ideal sería crear un usuario y asignarle los privilegios más bajos necesarios para realizar las tareas que se desee.

Creando la base de datos

Para crear una base de datos utilizamos la sentencia CREATE DATABASE nombre_base_de_datos.

mysql > CREATE DATABASE blog;

NOTA: No hay que tipear mysql >. Esto es el prompt del monitor que nos indica que podemos escribir sentencias SQL.

Como acabo de instalar MySQL inicialmente no existe ninguna base de datos, así que no habrá problemas con esta sentencia. Pero si la base de datos blog ya existiera ocurriría un error y no la crearía. Para evitar el error podemos especificar la opción IF NOT EXISTS.

mysql > CREATE DATABASE IF NOT EXISTS blog;

El monitor mysql nos responde con:

Query OK, 1 row affected (0.02 sec)

indicandonos que todo ha ido bien. Ahora la seleccionamos mediante la sentencia USE blog.

El link a la especificación oficial de la sentencia en el manual de referencia por si quereis ver todas las posibles opciones:
http://dev.mysql.com/doc/refman/5.0/es/create-database.html

Creando las tablas de la base de datos

Hemos creado la base de datos, ahora tenemos que crear las tres tablas de nuestro ejemplo. Para crear tablas ejecutamos la sentencia CREATE TABLE nombretabla (columnas).

La sintaxis de CREATE TABLE es inmensa. Podeis acceder a la especificación en el manual de referencia para ver todas las opciones que podeis especificar:
http://dev.mysql.com/doc/refman/5.0/es/create-table.html

Vamos a ver un ejemplo para entenderlo todo mejor. La tabla articulo que almacenará los diferentes articulos de la base de datos tendrá un conjunto de columnas: id_articulo, id_categoria, titulo y contenido.

CREATE TABLE articulo
(  id_articulo BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   id_categoria INT UNSIGNED NOT NULL,
   titulo VARCHAR(250) NOT NULL,
   contenido TEXT NOT NULL
);

Especificamos el nombre de la columna, el tipo de datos de la columna y una serie de opciones que son autodescriptivas por sí mismas si teneis un poco de idea de inglés. No voy a entrar a detallar los diferentes tipos de datos que permite especificar MySQL, podeis verlos en el enlace de antes. La opción NOT NULL signifca que la columna no puede tomar un valor nulo. La opción AUTO_INCREMENT significa que cada vez que insertemos un registro en la tabla el valor de esa columna se autoincrementará en uno o en el valor que especifiquemos. PRIMARY KEY significa que id_articulo es la clave primaria de la tabla articulo.

Las tablas creada por defecto utilizan el motor de almacenamiento MyISAM pero se puede cambiar para soportar transacciones con el motor InnoDB. Puede que lo veamos en posteriores artículos.

Continuando con el ejemplo, creamos las tablas para representar los comentarios y las categorias.

CREATE TABLE comentario
(  id_comentario INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   id_articulo BIGINT UNSIGNED NOT NULL ,
   autor VARCHAR(250) NOT NULL,
   contenido TEXT NOT NULL
);

CREATE TABLE categoria
(  id_categoria INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
   titulo VARCHAR(250) NOT NULL,
   descripcion TEXT NOT NULL
);

Podemos escribir las sentencias directamente en la linea de comandos o almacenarlas en un archivo con extensión .sql y utilizar el comando SOURCE nombrefichero.

Yo he guardado las sentencias en un fichero llamado sentencias.sql. Ahora invocamos ese fichero en el monitor de la siguiente forma:

mysql > SOURCE sentencias.sql;

El monitor nos responde diciendonos que todo ha ido bien:

Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.03 sec)

Podemos utilizar la sentencia SHOW TABLES para ver las tablas que hemos creado.

Borrando tablas y bases de datos

La sentencia DROP DATABASE basededatos borra TODA la base de datos con TODAS las tablas que contiene. Cuidado con esta sentencia.

La sentencia DROP TABLE tabla borra TODA la tabla con TODOS los datos que contiene. Cuidado con esta sentencia.

Alterando tablas y bases de datos

La sentencia ALTER DATABASE permite cambiar las características de la base de datos.

La sentencia ALTER TABLE permite cambiar la estructura de una tabla existente. Imaginar que queremos añadir una nueva columna a la tabla articulo para mostrar la fecha y la hora a la que ha sido creado el artículo.

ALTER TABLE articulo ADD fecha TIMESTAMP(12) NOT NULL;

RESUMEN

No vamos a ver en detalle todas las opciones porque necesitariamos un libro entero para describir todo. Para ello teneis el manual en línea de MySQL 5.0 donde podeis encontrar detalladamente toda la sintaxis de las sentencias de definicion de datos (DDL):
http://dev.mysql.com/doc/refman/5.0/es/data-definition.html

Ya sabemos crear bases de datos y tablas, borrarlas y modifcarlas. En el siguiente capítulo veremos como insertar, seleccionar, modificar y borrar registros utilizando las sentencias de manipulacion de datos (DML).

About these ads
Categorías:MySQL, SQL Etiquetas: , ,

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 127 seguidores

%d personas les gusta esto: