Sei sulla pagina 1di 6

Administración de Base de Datos Computación e Informática

Practica N° 05

Apellidos y Nombres: _____________________________________ Código: ___________

1. Campo entero serial (autoincremento)


Los valores de un campo serial, se inician en 1 y se incrementan en 1 automáticamente.
Se utiliza generalmente en campos correspondientes a códigos de identificación para
generar valores únicos para cada nuevo registro que se inserta.

Normalmente se define luego este campo como clave primaria. Para establecer que
un campo autoincremente sus valores automáticamente, éste debe ser de tipo serial:

create table libros(


codigo serial,
titulo varchar(20),
autor varchar(30),
editorial varchar(15),
primary key (codigo)
);

Para definir un campo autoincrementable lo hacemos con la palabra clave serial.

Hasta ahora, al ingresar registros, colocamos el nombre de todos los campos antes de
los valores; es posible ingresar valores para algunos de los campos de la tabla, pero
recuerde que al ingresar los valores debemos tener en cuenta los campos que
detallamos y el orden en que lo hacemos. Cuando un campo es de tipo serial no es
necesario ingresar valor para él, porque se inserta automáticamente tomando el
último valor como referencia, o 1 si es el primero.

Para ingresar registros omitimos el campo definido como serial, por ejemplo:

insert into libros (titulo,autor,editorial) values('El aleph','Borges','Planeta');

Este primer registro ingresado guardará el valor 1 en el campo correspondiente al


código. Si continuamos ingresando registros, el código (dato que no ingresamos) se
cargará automáticamente siguiendo la secuencia de autoincremento.

Un campo serial podemos indicar el valor en el insert, pero en la siguiente inserción


que hagamos la secuencia continúa en el último valor generado automáticamente.
Puede tener sentido utilizar esta característica para reutilizar un código de un campo
borrado, por ejemplo, si en la tabla libros borramos el libro con el código 1, luego
podemos insertar otro libro con dicho código:

delete from libros where codigo=1;

insert into libros (codigo,titulo,autor,editorial)


values(1,'Aprender Python', 'Rodriguez Luis', 'Paidos');

reneluque.milaulas.com 1
Administración de Base de Datos Computación e Informática

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

1. Creamos la tabla estableciendo como clave primaria y serial el campo "codigo":

CREATE TABLE libros (codigo SERIAL, titulo VARCHAR(30), autor VARCHAR(30),


editorial VARCHAR(15), PRIMARY KEY (codigo) );

2. Al visualizar la estructura de la tabla:

SELECT table_name, column_name, udt_name, character_maximum_length,


is_nullable FROM information_schema.columns WHERE table_name = 'libros';

3. Ingresamos algunos registros:

INSERT INTO libros (titulo,autor,editorial) VALUES ('El aleph','Borges','Planeta');

Note que al detallar los campos para los cuales ingresaremos valores hemos omitido
"codigo"; cuando un campo es serial no es necesario ingresar valor para él, porque
se genera automáticamente. Recuerde que si es obligatorio ingresar los datos de
todos los campos que se detallan y en el mismo orden.

4. Si mostramos los registros:

SELECT * FROM libros;

El primer registro ingresado guardó el valor 1 en el campo correspondiente al código,


comenzó la secuencia en 1.

5. Ingresamos más registros:

INSERT INTO libros (titulo,autor,editorial)


VALUES('Martin Fierro','Jose Hernandez','Emece');
INSERT INTO libros (titulo,autor,editorial)
VALUES('Aprenda PHP','Mario Molina','Emece');
INSERT INTO libros (titulo,autor,editorial)
VALUES('Cervantes y el quijote','Borges','Paidos');
INSERT INTO libros (titulo,autor,editorial)
VALUES('Matematica estas ahi', 'Paenza', 'Paidos');

6. Seleccionamos todos los registros:

SELECT codigo,titulo,autor,editorial FROM libros;

Vemos que el código, dato que no ingresamos, se cargó automáticamente siguiendo


la secuencia de autoincremento.

reneluque.milaulas.com 2
Administración de Base de Datos Computación e Informática

7. Ahora borramos el libro con código 1:

DELETE FROM libros WHERE codigo=1;

8. Mostramos todos los registros:

SELECT * FROM libros;

9. Insertamos un nuevo libro e indicamos el valor que debe tomar el campo serial:

insert into libros (codigo,titulo,autor,editorial) values(1,'Aprender Python',


'Rodriguez Luis', 'Paidos'); select * from libros;

Luego si insertamos otro registro sin indicar el valor del campo serial el valor
generado es el siguiente del último generado:

insert into libros (titulo,autor,editorial)


values('Java Ya', 'Nelson', 'Paidos');

select * from libros;

Ejercicio 2:

Una tienda de venta de películas en DVD almacena información sobre sus películas
en una tabla llamada "peliculas".

1- Créela con la siguiente estructura:


-codigo (serial),
-titulo (cadena de 40),
-actor (cadena de 20),
-duracion (entero),
-clave primaria: codigo.

2- Visualice la estructura de la tabla "peliculas".

3- Ingrese los siguientes registros:


insert into peliculas (titulo,actor,duracion)
values('Mision imposible','Tom Cruise',120);
insert into peliculas (titulo,actor,duracion)
values('Harry Potter y la piedra filosofal','xxx',180);
insert into peliculas (titulo,actor,duracion)
values('Harry Potter y la camara secreta','xxx',190);
insert into peliculas (titulo,actor,duracion)
values('Mision imposible 2','Tom Cruise',120);
insert into peliculas (titulo,actor,duracion)
values('La vida es bella','zzz',220);

reneluque.milaulas.com 3
Administración de Base de Datos Computación e Informática

4- Seleccione todos los registros y verifique la carga automática de los códigos.

5- Actualice las películas cuyo código es 3 colocando en "actor" 'Daniel R.'

6- Elimine la película 'La vida es bella'.

7- Elimine todas las películas cuya duración sea igual a 120 minutos.

8- Visualice los registros.

9- Ingrese el siguiente registro, sin valor para la clave primaria:


insert into peliculas (titulo,actor,duracion)
values('Mujer bonita','Richard Gere',120);
Note que sigue la secuencia tomando el último valor generado, aunque ya no esté.

2. Comando truncate table

Para borrar todos los registros de una tabla se usa "delete" sin condición "where".
También podemos eliminar todos los registros de una tabla con "truncate table". Por
ejemplo, queremos vaciar la tabla "libros", usamos:

TRUNCATE TABLE libros;

La sentencia "truncate table" vacía la tabla (elimina todos los registros) y vuelve a crear
la tabla con la misma estructura.

La diferencia con "drop table" es que esta sentencia borra la tabla, "truncate table" la
vacía. La diferencia con "delete" es la velocidad, es más rápido "truncate table" que
"delete" (se nota cuando la cantidad de registros es muy grande) ya que éste borra los
registros uno a uno.

3. Ordenar registros (order by)

Podemos ordenar el resultado de un "select" para que los registros se muestren


ordenados por algún campo, para ello usamos la cláusula "order by". La sintaxis básica
es la siguiente:

select * from NOMBRETABLA


order by CAMPO;

Por ejemplo, recuperamos los registros de la tabla "libros" ordenados por el título:

select * from libros


order by titulo;

Aparecen los registros ordenados alfabéticamente por el campo especificado.

reneluque.milaulas.com 4
Administración de Base de Datos Computación e Informática

También podemos colocar el número de orden del campo por el que queremos que se
ordene en lugar de su nombre, es decir, referenciar a los campos por su posición en la
lista de selección. Por ejemplo, queremos el resultado del "select" ordenado por
"precio":

select titulo,autor,precio
from libros order by 3;

Por defecto, si no aclaramos en la sentencia, los ordena de manera ascendente (de


menor a mayor). Podemos ordenarlos de mayor a menor, para ello agregamos la
palabra clave "desc":

select * libros
order by editorial desc;

También podemos ordenar por varios campos, por ejemplo, por "titulo" y "editorial":

select * from libros


order by titulo,editorial;

Incluso, podemos ordenar en distintos sentidos, por ejemplo, por "titulo" en sentido
ascendente y "editorial" en sentido descendente:

select * from libros


order by titulo asc, editorial desc;

Debe aclararse al lado de cada campo, pues estas palabras claves afectan al campo
inmediatamente anterior.

Es posible ordenar por un campo que no se lista en la selección. Se permite ordenar


por valores calculados o expresiones.

Ejercicio 3:
En una página web se guardan los siguientes datos de las visitas: número de visita,
nombre, mail, pais, fecha.

1- Créela con la siguiente estructura:


create table visitas (
numero serial,
nombre varchar(30) default 'Anonimo',
mail varchar(50),
pais varchar (20),
fecha timestamp,
primary key(numero)
);

reneluque.milaulas.com 5
Administración de Base de Datos Computación e Informática

2- Ingrese algunos registros:


insert into visitas (nombre,mail,pais,fecha)
values ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10');
insert into visitas (nombre,mail,pais,fecha)
values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30');
insert into visitas (nombre,mail,pais,fecha)
values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-10-11 15:45');
insert into visitas (nombre,mail,pais,fecha)
values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-10-12 08:15');
insert into visitas (nombre,mail,pais,fecha)
values ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-09-12 20:45');
insert into visitas (nombre,mail,pais,fecha)
values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-12 16:20');
insert into visitas (nombre,mail,pais,fecha)
values ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-15 16:25');

3- Ordene los registros por fecha, en orden descendente.

select * from visitas


order by fecha desc;

4- Muestre el nombre del usuario, pais y el número de mes, ordenado por pais
(ascendente) y número de mes (descendente)

select nombre,pais,extract(month from fecha)


from visitas
order by pais,extract(month from fecha) desc;

5- Muestre el pais, el mes, el día y la hora y ordene las visitas por nombre del mes,
del día y la hora.

select nombre,mail,
extract(month from fecha) as mes,
extract(day from fecha) as dia,
extract(hour from fecha) as hora
from visitas
order by 3,4,5;

6- Muestre los mail, país, ordenado por país, de todos los que visitaron la página en
octubre (4 registros)
select mail, pais
from visitas
where extract(month from fecha)=10
order by 2;

reneluque.milaulas.com 6

Potrebbero piacerti anche