practica ii alex

Upload: alex-g-cortes-g

Post on 07-Jan-2016

215 views

Category:

Documents


0 download

DESCRIPTION

Consultas sql avanzadas

TRANSCRIPT

  • TOPICOS DE

    BASE DE DATOS

    Prctica II

    Ingeniera en informtica

    Alex Gadiel Cortes Garca

    N Control:12920296

    VII Semestre

    martes, 06 de octubre de 2015

  • Iniciamos creando la base de datos con el comando:

    CREATE DATABASE municipi;

    Despus procedemos a crear la tabla de comunitat y municipi:

    CREATE TABLE comunitat

    (

    ca_id INTEGER,

    nom VARCHAR(50)

    );

    CREATE TABLE municipi

    (

    m_id INTEGER,

    nom VARCHAR(70),

    poblacio2003 INTEGER,

    poblacio2001 INTEGER,

    poblacio1996 INTEGER,

    poblacio1991 INTEGER,

    superficie FLOAT,

    ca_id INTEGER

    );

    Cargamos los datos y verificamos si se realiz correctamente:

    SHOW COLUMNS FROM comunitat;

    SHOW COLUMNS FROM municipi;

  • Visualizamos los datos contenidos en las tablas:

    SELECT * FROM comunitat;

    SELECT * FROM municipi;

  • Actividad 3

    Escribir una consulta para cada uno de estos requerimientos:

    Municipios que tengan solamente una X en su nombre (una y solo una) y

    que su nombre sea ms largo que 20 caracteres.

    SELECT nom FROM municipi WHERE

    nom LIKE '%x%'

    AND LENGTH(nom) >20;

    Municipios que tengan solo un tipo de vocal en su nombre. Esto incluye:

    todos los que se escribieron solo con A, todos los que llevan solo E, ... en

    una sola consulta.

    SELECT municipi.nom FROM municipi WHERE (nom LIKE '%a%' AND nom NOT

    LIKE '%e%' AND nom NOT LIKE '%i%' AND nom NOT LIKE '%o%' AND nom NOT

    LIKE '%u%') OR (nom LIKE '%e%' AND nom NOT LIKE '%a%' AND nom NOT LIKE

    '%i%' AND nom NOT LIKE '%o%' AND nom NOT LIKE '%u%') OR (nom LIKE

    '%i%' AND nom NOT LIKE '%e%' AND nom NOT LIKE '%a%' AND nom NOT LIKE

    '%o%' AND nom NOT LIKE '%u%') OR (nom LIKE '%o%' AND nom NOT LIKE

    '%e%' AND nom NOT LIKE '%i%' AND nom NOT LIKE '%a%' AND nom NOT LIKE

    '%u%') OR (nom LIKE '%u%' AND nom NOT LIKE '%e%' AND nom NOT LIKE

    '%i%' AND nom NOT LIKE '%o%' AND nom NOT LIKE '%a%');

  • Actividad 4

    Nombre de los 5 municipios ms densamente poblados en el 2003.

    Densidad = Poblacin / Superficie

    SELECT municipi.nom, (municipi.poblacio2003/superficie) AS densidad

    FROM municipi, comunitat

    WHERE municipi.ca_id=comunitat.ca_id

    GROUP BY municipi.nom

    Order by densidad DESC LIMIT 5;

  • Nombre de los municipios que tienen una superficie menor a 1/10 del

    promedio.

    SELECT municipi.nom, municipi.superficie FROM municipi, comunitat WHERE

    municipi.ca_id=comunitat.ca_id AND municipi.superficie < (SELECT

    AVG(municipi.superficie)/10 from municipi) GROUP BY municipi.nom ORDER

    BY municipi.superficie DESC;

    Nombre y poblacin en el 1991 y en el 2001 de los municipios que tienen

    una poblacin 10 veces mayor en el 2001 que en 1991, pero que tenan

    habitantes el 1991 (hay solo uno);

    SELECT municipi.nom, municipi.poblacio1991,municipi.poblacio2001 FROM

    municipi, comunitat

    WHERE municipi.ca_id=comunitat.ca_id

    AND municipi.poblacio2001 > (municipi.poblacio1991*10)

    AND municipi.poblacio1991 > 0;

  • Actividad 5

    Escribir una consulta para cada uno de estos requerimientos:

    Superficie total de cada comunidad

    SELECT sum(municipi.superficie) as "total " , comunitat.nom

    FROM municipi, comunitat

    WHERE municipi.ca_id=comunitat.ca_id

    GROUP BY comunitat.nom;

    Superficie total de la comunidad de Galicia.

    SELECT sum(municipi.superficie) as "superficie total " , comunitat.nom FROM

    municipi, comunitat

    WHERE municipi.ca_id=comunitat.ca_id

    AND comunitat.nom LIKE 'Galicia';