Ejemplos¶
Crear tabla:
# CREATE TABLE Empleado
(
id serial NOT NULL PRIMARY KEY,
Nombre VARCHAR(50),
Apellido VARCHAR(50),
Direccion VARCHAR(255),
Ciudad VARCHAR(60),
Telefono VARCHAR(15),
Peso VARCHAR (5),
Edad integer,
"Actividad" VARCHAR(100),
idCargo integer
);
Añadir columna:
alter table empleado add column numero_sanitario varchar(9);
Modificar columna a no nulo:
alter table empleado alter column numero_sanitario set not null;
Eliminar columna:
alter table empleado drop column actividad;
Eliminar base de datos:
drop database pruebas;
Eliminar tabla:
drop table empleado;
Insertar empleado:
insert into empleado ('id', 'nombre' ) values (1,'Pedro');
insert into empleado ("nombre" ) values ("Pedro");
insert into empleado ("nombre" ) values ('Pedro');
insert into empleado ("nombre" ) values ('Martin');
insert into empleado ("nombre" ) values ('Miguel');
insert into empleado ("nombre" ) values ('Maria');
insert into empleado ("nombre" ) values ('Luis');
Modificar empleado:
update empleado set "nombre" = 'Luis' where nombre = 'Pedro';
¿ update empleado set "nombre" = 'Luis'; ?
Eliminar empleado:
delete from empleado where "nombre" = 'Luis';
¿ delete from empleado; ?
Cargamos datos de ejemplo:
psql -U alumno -d curso < datos_ejemplo.sql
Mostrar todos los departamentos:
select * from curso.departamento;
¿ select id from curso.departamento; ?
¿ select d.id from curso.departamento; ?
Mostrar el departamento de los municipios:
select distinct departamento from municipio;
¿ select departamento from municipio; ?
Mostrar los municipios del departamento 1188 o 1201:
select * from municipio where departamento = 1188 OR departamento = 1201;
Municipios que no sean el 1200:
select * from municipio where departamento <> 1200;
Municipios con departamento entre 1196 y 1202:
select * from municipio where departamento between 1188 and 1200;
¿ select * from municipio where departamento between 1188 and 1200 order by departamento; ?
Trabajador que se llame Miguel:
select * from trabajador where nombre like 'Miguel'
¿ select * from trabajador where nombre like 'Miguel' and apellidos like '%Gar%' ?;
Media de la población de los municipios:
select avg(m.poblacion) from municipio as m;
Municipio de mayor superficie y de menor perímetro:
select max(m.superficie) from municipio as m;
select min(m.perimetro) from municipio as m;
Suma total de la población de los municipios del departamento 1200:
select sum(m.poblacion) from municipio as m where m.departamento = 1200;
Número de municipios agrupados por departamento:
select departamento, count(*) from municipio group by departamento;
¿ select departamento, municipio from municipio group by departamento; ?
¿ select departamento, municipio from municipio group by departamento, municipio; ?
Seleccionar municipios con sus departamentos:
select * from municipio join departamento on municipio.departamento = departamento.id;
select * from municipio as m, departamento as d where m.departamento = d.id;
¿ select count(*) from municipio as m, departamento as d where m.departamento = d.id; ?
¿ select count(*) from municipio; ?
Seleccionar todos los municipios con sus departamentos:
select * from municipio left join departamento on municipio.departamento = departamento.id;
select count(*) from municipio left join departamento on municipio.departamento = departamento.id;
Seleccionar todos los municipios con departamento 1200 junto con los del departamento 1201
select * from municipio where departamento = 1200 union select * from municipio where departamento = 1201
Crear una vista con los municipios del departamento de Choluteca
create view municipos_choluteca as select m.id as id_mun, d.id as id_dep, m.municipio, m.poblacion, d.name from municipio as m, departamento as d where m.departamento = d.id and d.name = ‘Choluteca’;
Ejercicios:
* Mostrar los barrios que no tienen zonas asignadas
* Mostrar que equipo tiene más zonas asignadas
* ¿Cuantos barrios no tienen equipos designados?
* ¿Existe algún equipo sin responsable?
* ¿Qué población atiende la zona 3?