Archivo

Archive for the ‘Bases de datos’ Category

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

24 junio, 2010 1 comentario

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).

Categorías:MySQL, SQL Etiquetas: , ,

Curso MySQL. Capítulo 1:Introducción

16 junio, 2010 1 comentario

Me decidí escribir algunos artículos sobre MySQL mientras escribía el curso de PHP. En el curso de PHP ha llegado la hora de interactuar con bases de datos, y esta pendiente ver en concreto como interactuar con el sistema gestor de bases de datos MySQL. Pero antes de empezar a utilizar MySQL en PHP, hace falta algunos conocimientos sobre MySQL y sobretodo conocimientos de SQL.

Ya he recomendado un libro muy bueno que trata en profundidad el estándar ANSI/ISO SQL, pero MySQL incluye algunas extensiones al estandar SQL.Podeis encontrarlas las diferencias y las extensiones en el manual de referencia MySQL 5.0 disponible en castellano en el siguiente enlace:

http://dev.mysql.com/doc/refman/5.0/es/differences-from-ansi.html

http://dev.mysql.com/doc/refman/5.0/es/extensions-to-ansi.html

Este curso en un principio va a ser breve, incluirá algunos capítulos en los que trataré el lenguaje de definición de datos (DDL) y el lenguaje de manipulación de datos (DML) utilizados en las sentencias SQL de MySQL. No voy a entrar de momento en detalles de como instalar MySQL o como optimizar las bases de datos, ni es aspectos técnicos como que motor utilizar, MyISAM o InnoDB.  Aunque no decanto la idea de un futuro aumentar el curso para tocar todos estos temas.

Voy a presuponer que el lector tiene conocimientos sobre el uso de base de datos relacionales, y conoce la terminología básica (tabla, registro, columna, indíce, claves primarias, claves foráneas, relaciones, etc).

En definitiva, va a ser un curso relámpago para poder continuar con el curso PHP, una especie de resumen de las principales sentencias. Podeis encontrar más información en los libros que recomiendo, y en el manual de referencia oficial.

Categorías:Bases de datos, MySQL, SQL Etiquetas: ,

Recomendando libros: SQL

16 junio, 2010 1 comentario

Ha llegado el momento de recomendar libros de aprendizaje del lenguaje de consulta estructurado más utilizado por todos los sitemas gestores de bases de datos, SQL.

Aprender a defenderse con SQL no cuesta mucho, pero si quereis ver la potencia que tiene este lenguaje podeis utilizar como referencia este libro que utilizaba en las clases de la asignatura de Bases de datos en la universidad:

-Manual de referencia de SQL de la editorial Mcgraw-Hill.

Es un libro muy extenso que trata ampliamente el estándar ANSI/SQL.  El libro está dividido en cinco partes:

-La parte uno es una visión general de SQL, trata la historia de SQL, la evolución de los estándares, las características más importantes, etc.

-La parte dos descibe las características SQL para realizar consultas a las bases de datos.

-La parte tres describe las características SQL para añadir y modificar datos en las bases de datos.

-La parte cuatro estudia la creación y estructura de las bases de datos.

-La parte cinco describe la programación con SQL, aspectos más avanzados del lenguaje.

-La última parte, la parte seis, examina el uso de SQL en varios sistemas gestores de bases de datos.

En definitiva, es un libro muy extenso que trata detalladamente todos los aspectos de SQL, con multitud de ejemplos.

Si lo que queremos es conocer SQL para utilizar el sistema gestor MySQL podemos acceder al manual de referencia de MySQL 5.0 en el siguiente enlace:

http://dev.mysql.com/doc/refman/5.0/es/index.html

Es una traducción al castellano del manual de referencia MySQL 5.0 y trata el uso de SQL en este sistema en cuestión. Recomiendo la lectura de este manual si lo que queremos es introducirnos en el mundo de SQL para realizar aplicaciones con PHP/MySQL. De todas formas estoy pensando en realizar una serie de artículos resumidos que traten SQL para poder continuar con el curso de PHP.

Como vemos hay cantidad de manuales disponibles en la red que pueden servirnos perfectamente para el aprendizaje autodidacta.

Categorías:Bases de datos, Libros, MySQL, SQL Etiquetas:

Recomendando libros: MySQL

2 junio, 2010 Deja un comentario

No sé que tienen las biblias de Anaya que me encantan como están diseñadas, te sirve tanto para aprender poco a poco, como material de consulta para las dudas que te puedan ir surgiendo.

En este caso les recomiendo la Biblia de MySQL.

Este libro va dirigido a desarrolladores, administradores de bases de datos (DBA) y usuarios de MySQL.

Aborda los siguientes temas:

  • Exploracion del lenguaje de consulta estructurado (SQL) en funcion de la implementacion de MySQL.
  • Comprension y uso de tipos de datos y de tablas. optimizacion de sus consultas e indices.
  • Volcados de bases de datos.
  • Administracion de usuarios y seguridad.
  • Administracion y configuracion de MySQL (y optimizacion de la configuration para potenciar el rendimiento).
  • Duplicacion de MySQL en varios servidores.
  • Comprension del diseiño y la normalizacion de bases de datos y analisis de un completo ejemplo practico.
  • Programacion con MySQL.
  • Desarrollo de extensiones propias en MySQL.
  • Instalacion de MySQL.
Categorías:Libros, MySQL Etiquetas: ,

Recomendando libros: Programación WEB

28 abril, 2010 3 comentarios

En el anterior artículo recomendé varios libros para aprender a diseñar páginas web, ahora viene la parte que más me gusta. La parte donde dotamos a las páginas de dinamismo para que interactúen con el usuario. Hasta ahora nuestra curva de aprendizaje ha sido en un primer nivel, HTML, o mejor dicho xHTML. En un segundo nivel, dotamos a los documentos de una presentación mediante las hojas de estilo en cascada, CSS. Ahora teneis tres opciones. Decantaros por empezar con JavaScript, o empezar con algún lenguaje del lado del cliente, como PHP, o aprender PHP y JavaScript a la vez. Así, en un futuro podréis empezar a desarrollar aplicaciones con AJAX y ver el uso de diferentes librerías como Prototype o JQuery, mi favorita.

Empezando con JavaScript. Podeis descargaros, o estudiar el libro online de Javier Eguíluz Pérez en su página www.librosweb.es. El curso que estoy publicando en este blog es un resumen de ese libro y otros manuales que podeis encontrar perfectamente en Internet.

Con JavaScript se pueden hacer miles de cosas, desde dotar de efectos visuales a las aplicaciones, hasta desarrollar aplicaciones que no tengan que recargarse completamente, mediante AJAX. Una vez leído el texto, recomiendo buscar scripts desarrollados en JavaScript y estudiarlos un poco, para ver hasta donde llega el potencial de este lenguaje del lado del cliente. Para los iniciados, Microsoft utiliza en su navegador Internet Explorer, JScript, que no es más que la adaptación que hizo del lenguaje ECMA-Script. En realidad, practicamente son iguales, con pequeñas diferencias que os volverán locos cuando empezeis a practicar.

Antes de adentraros a estudiar los demás libros que podeis encontrar ahí, el libro dedicado a AJAX, o los libros dedicados al framework symfony de PHP, recomiendo la lectura de libros dedicados a este lenguaje del lado del servidor.

Con PHP podemos realizar páginas web dinámicas que interactúen con el usuario, desde sistemas de noticias, blogs y redes sociales. Hay muchos libros dedicados a PHP, pero lo mejor es empezar con uno muy básico e ir avanzado poco a poco de dificultad.

Yo empezé con el libro PHP y MySQL para Dummies. Uno de esos libros para tontos tan famosos hoy en día.

Es un libro muy básico que te introduce en el mundo de PHP y el uso del gestor de base de datos MySQL para almacenar toda la información. Tiene un capítulo dedicado a crear una aplicación desde cero, en concreto, un catálogo de mascotas online con registro de usuarios. Cabe destacar la parte dedicada al uso de cookies y sesiones.

Lo único que no me gusta de este libro y de la mayoría de libros que enseñan PHP es que suelen utilizar tablas HTML para organizar la estructura del documento web. Supongo que esta hecho así para no liar tanto la perdiz, pero puede liar más al lector si se acostumbra a utilizar tablas en vez de hojas de estilo para estructurar el layout de una página web. Otra parte importante que no toca este libro es la seguridad de las aplicaciones, para eso estoy creando ciertos artículos donde explico los principales tipos de ataques a aplicaciones web, desde RFI, pasando por XSS hasta llegar a SQLI.

Despúes de estudiaros ese, podeis pasar a uno un poco más técnico, Desarrollo Web con PHP y MySQL de la editorial Anaya.

En mi opinión es uno de los libros perfectos para aprender PHP. Tiene una sección dedicada a PHP orientado a objetos y muchas practicas de programación, como el desarrollo de un foro y de un carrito de la compra. Por último tiene un tema dedicado a los servicios web con XML y SOAP bastante interesante. Es un libro más denso, no recomiendo empezar estudiando esté. Empezar con el de PHP para tontos y cuando os veais con suficiente fuerza echarle el guante a esta maravilla. Tampoco toca muchos temas de seguridad, parece que es un tema tabú en muchos libros, pero…¿Cómo vamos a proteger nuestras aplicaciones si ni siquiera sabemos como se atacan?

Categorías:JavaScript, Libros, MySQL, PHP
Seguir

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

Únete a otros 127 seguidores