16 enero 2008

MySQL Básico (1)

(Nociones básicas de SQL usando MySQL, bajo Windows.
Un repaso a lo fundamental en 2 lecciones.
Si quieres sabes más, echa un vistazo en nachocabanes.com/sql/curso)

1. Entrar a MySQL

Daremos por sentado que MySQL ya está instalado. Si hemos hecho la instalación típica, MySQL debería haber quedado dentro de "Archivos de programa".

Para llegar hasta allí, entramos al intérprete de comandos de Windows (por ejemplo, desde el menú de Inicio, en la opción "Ejecutar", tecleando la orden "cmd"), entonces usamos la orden "cd" para llegar hasta la carpeta "bin", en la que están los "binarios" (programas ejecutables) de MySQL. Debería ser algo como:

cd "Archivos de programa\MySQL\MySQL Server 5.0\bin"

Para entrar al entorno de MySQL, como no hemos permitido el acceso anónimo, tendremos que indicar un nombre de usuario con la opción "-u". Como por ahora sólo existe el usuario "root", escribiríamos:

mysql -u root

Y entonces deberíamos ver algo parecido a:

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>

2. Crear una base de datos

Para crear una base de datos "create database", seguido del nombre que tendrá la base de datos:

create database ejemplo1;

Podemos tener varias bases de datos en MySQL, así que deberemos indicar cual de ellas queremos usar, con la orden "use":

use ejemplo1;

3. Crear un tabla e introducir datos

Una base de datos, en general, estará formada por varios bloques de información llamados "tablas". En nuestro caso, nuestra tabla almacenará los datos de nuestros amigos. Después decidimos qué datos concretos ("campos") guardaremos de cada amigo, el tipo de datos y su tamaño, por ejemplo:

nombre - texto, hasta 20 letras
dirección - texto, hasta 40 letras
edad - números, de hasta 3 cifras

En MySQL podemos usar "VARCHAR" para referirnos a texto hasta una cierta longitud, y "NUMERIC" para números de una determinada cantidad de cifras:

create table personas (
nombre varchar(20),
direccion varchar(40),
edad decimal(3)
);

Para introducir datos usaremos la orden "insert", e indicaremos tras la palabra "values" los valores para los campos de texto entre comillas, y los valores para campos numéricos sin comillas, así:

insert into personas values ('juan', 'su casa', 25);

Si no queremos introducir todos los datos, o queremos hacerlo en otro orden, podemos detallar los nombres de cada uno de los campos que vamos a introducir, así:

insert into personas
(nombre, direccion)
values (
'pedro', 'su calle'
);

4. Mostrar datos

Para ver los datos almacenados en una tabla usaremos el formato "SELECT campos FROM tabla". Si queremos ver todos los campos, lo indicaremos usando un asterisco:

select * from personas;


Si queremos ver sólo ciertos campos, detallamos sus nombres, separados por comas:

select nombre, direccion from personas;


Normalmente no querremos ver todos los datos que hemos introducido, sino sólo aquellos que cumplan cierta condición. Esta condición se indica añadiendo un apartado WHERE a la orden "select", así:

select nombre, direccion from personas where nombre = 'juan';


A veces no querremos comparar con un texto exacto, sino sólo con parte del contenido del campo (por ejemplo, porque sólo sepamos un apellido o parte de la calle). En ese caso usaríamos la palabra "like", y el comodín "%":

select nombre, direccion from personas where direccion like '%calle%';

que nos diría el nombre y la dirección de nuestros amigos llamados que viven en calles que contengan la palabra "calle", precedida por cualquier texto (%) y con cualquier texto (%) a continuación.


5. Crear dos tablas enlazadas. Las claves primarias

Generalmente será necesario tener algún dato que nos permita distinguir de forma clara los datos que tenemos almacenados. Por ejemplo, el nombre de una persona no es único: pueden aparecer en nuestra base de datos varios usuarios llamados "Juan López". Si son nuestros clientes, debemos saber cual es cual, para no cobrar a uno de ellos un dinero que corresponde a otro. Eso se suele solucionar guardando algún dato adicional que sí sea único para cada cliente, como puede ser el Documento Nacional de Identidad, o el Pasaporte. Si no hay ningún dato claro que nos sirva, en ocasiones añadiremos un "código de cliente", inventado por nosotros, o algo similar.

Estos datos que distinguen claramente unas "fichas" de otras los llamaremos "claves primarias".


Para jugar con ellas, vamos a crear una nueva base de datos:

create database ejemplo2;
use ejemplo2;

En ella guardaremos datos de personas y de ciudades. Para cada ciudad, guardaremos su nombre y su código. Este código será el que actúe como "clave primaria", para distinguir otra ciudad.

create table ciudades (
codigo varchar(3),
nombre varchar(30),
primary key (codigo)
);

Mientras que la tabla de personas sería casi igual al ejemplo anterior (si no queremos usar clave primaria para ellas), pero añadiendo un nuevo dato: el código de la ciudad en la que vive

create table personas (
nombre varchar(20),
direccion varchar(40),
edad decimal(3),
codciudad varchar(3)
);

Los datos se introducen igual que si no hubiera claves primarias:

insert into ciudades values ('a', 'alicante');
insert into ciudades values ('b', 'barcelona');
insert into ciudades values ('m', 'madrid');

insert into personas values ('juan', 'su casa', 25, 'a');
insert into personas values ('pedro', 'su calle', 23, 'm');
insert into personas values ('alberto', 'calle uno', 22, 'b');

Para mostrar datos tomados de las dos tablas, deberemos incluir ambas en el "from", añadir la condición que enlace ambas tablas (que el código de ciudad que aparece en "personas" sea el mismo que el que aparece en "ciudad"), y quizá también añadir el nombre de alguna tabla delante el nombre del campo, si es que tenemos algún campo repetido (como el "nombre", que existe en ambas tablas):

select personas.nombre, direccion, ciudades.nombre
from personas, ciudades
where personas.codciudad = ciudades.codigo;

Cualquier otra consulta que implique las dos tablas deberá terminar comprobando que los dos códigos coinciden. Por ejemplo, para ver qué personas viven en la ciudad llamada "madrid", haríamos:

select personas.nombre, direccion, edad
from personas, ciudades
where ciudades.nombre='madrid'
and
personas.codciudad = ciudades.codigo;

Y para saber las personas de ciudades que comiencen con la letra "b", haríamos:

select personas.nombre, direccion, ciudades.nombre
from
personas, ciudades
where ciudades.nombre like 'b%'
and
personas.codciudad = ciudades.codigo;


6. Saber qué información hay

Podemos saber las bases de datos que hay creadas en nuestro sistema con:

show databases;

Una vez que estamos trabajando con una base de datos concreta (con la orden "use"), podemos saber las tablas que contiene con:

show tables;

Y para una tabla concreta, podemos saber los campos (columnas) que la forman con "show columns from":

show columns from personas;


7. Borrar datos

Podemos borrar toda una base de datos:

drop database ejemplo2;

O borrar una tabla:

drop table personas;

O bien borrar los datos que cumplen una cierta condición, con "delete from", a la que le indicamos las condiciones que se deben cumplir:

delete from personas where nombre = 'juan';

Esto borraría todas las personas llamadas "juan" que estén almacenadas en la tabla "personas".

Cuidado: si no se indica la parte de "where", no se borrarían los datos que cumplen una condición, sino TODOS los datos. Si es eso lo que se pretende, una forma más rápida de conseguirlo es usar:

truncate table personas;

8. Modificar de datos

Por supuesto, podemos modificar datos. Usaremos "update tabla set campo=nuevoValor where condicion". Por ejemplo, si hemos escrito "Alberto" en minúsculas ("alberto"), lo podríamos corregir con:

update personas
set
nombre = 'Alberto'
where
nombre = 'alberto';

Y si queremos corregir todas las edades para sumarles un año se haría con

update personas
set edad = edad+1;

(al igual que habíamos visto para "select" y para "delete", si no indicamos la parte del "where", los cambios se aplicarán a todos los registros de la tabla).


También podemos modificar la estructura de una tabla: añadir campos, eliminarlos, cambiar su nombre o el tipo de datos. En general, para todo ello se usará la orden "alter table".

Por ejemplo, para añadir un campo usaríamos "add":

alter table ciudades
add habitantes decimal(7);

Y si queremos borrar algún campo, usaremos "drop column":

alter table ciudades
drop
column numhabitantes;


9. Salir de MySQL

Para terminar nuestra sesión de MySQL, tecleamos la orden quit o exit y volvemos al sistema operativo.

1 comentario:

Anónimo dijo...

Excelente ! muchas gracias por compartir !