martes, 6 de noviembre de 2012

54 - Agregar índices(alter table - add index)



Aprendimos a crear índices al momento de crear una tabla. También a crearlos luego de haber creado la tabla, con "create index". También podemos agregarlos a una tabla usando "alter table".

Creamos la tabla "libros":

 create table libros(
  codigo int unsigned,
  titulo varchar(40),
  autor varchar(30),
  editorial varchar (20),
  precio decimal(5,2) unsigned,
  cantidad smallint unsigned
 );

Para agregar un índice común por el campo "editorial" usamos la siguiente 
sentencia:

 alter table libros
  add index i_editorial (editorial);

Usamos "alter table" junto con "add index" seguido del nombre que le daremos 
al índice y entre paréntesis el nombre de el o los campos por los cuales se 
indexará.

Para agregar un índice único multicampo, por los campos "titulo" y "editorial", usamos la siguiente sentencia:

 alter table libros
  add unique index i_tituloeditorial (titulo,editorial);

Usamos "alter table" junto con "add unique index" seguido del nombre que le 
daremos al índice y entre paréntesis el nombre de el o los campos por los cuales 
se indexará.

En ambos casos, para índices comunes o únicos, si no colocamos nombre de índice, se coloca uno por defecto, como cuando los creamos junto con la tabla.


PROBLEMA RESUELTO


Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla si existe.

Creamos la tabla "libros" con la siguiente estructura:

 create table libros(
  codigo int unsigned,
  titulo varchar(40),
  autor varchar(30),
  editorial varchar (20),
  precio decimal(5,2) unsigned,
  cantidad smallint unsigned
 );

Para agregar un índice común por el campo "editorial" tipeamos:

 alter table libros
  add index i_editorial (editorial);

Para agregar un índice único multicolumna por los campos "titulo" y 
"editorial", tipeamos:

 alter table libros
  add unique index i_tituloeditorial (titulo,editorial);

Visualicemos los índices con:

 show index from libros;

Aparecen nuestros 2 índices agregados.


PROBLEMA PROPUESTO


Trabaje con la tabla "alumnos" en el cual un instituto de enseñanza guarda los 
datos de sus alumnos.

1- Elimine la tabla "alumnos" si existe.

2- Cree la tabla:
 create table alumnos(
  legajo int unsigned auto_increment,
  nombre varchar(30),
  documento char(8) not null,
  domicilio varchar(30),
  ciudad varchar(20),
  provincia varchar(20),
  primary key(legajo)
 );

3- Vea los índices de la tabla.

4- Agregue un índice común por los campos "ciudad" y "provincia" (que pueden repetirse):
 
5- Agregue un índice único (no pueden repetirse los valores) por el campo 
"documento":
  
6- Visualice los índices:
 

Otros problemas: 

Una clínica registra las consultas de los pacientes en una tabla llamada 
"consultas".

1- Elimine la tabla si existe.

2- Cree la tabla con una clave primaria compuesta (fecha y número de consulta):
 create table consultas(
  fecha date,
  numero int unsigned,
  documento char(8) not null,
  obrasocial varchar(30),
  medico varchar(30),
  primary key(fecha,numero)
 );

3- Agregue un índice único llamado "i_consulta" compuesto por los campos "documento", "fecha" y "medico":
 
4- Hay 2 campos por los cuales podemos realizar consultas frecuentemente: "medico" y "obrasocial", cree índices comunes para esos campos:
 
5- Vea los índices.


No hay comentarios:

Publicar un comentario