jueves, 6 de octubre de 2011

Ejemplo de Script en SQL

Este script fue utilizado para crear la base de datos que se muestra a continuación:

CREATE SCHEMA "ADMINISTRATOR";


CREATE TABLE "ADMINISTRATOR"."BARES" (
"CODB" VARCHAR(3) NOT NULL,
"NOMBRE" VARCHAR(15) NOT NULL,
"CIF" VARCHAR(10),
"LOCALIDAD" VARCHAR(20) NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

CREATE TABLE "ADMINISTRATOR"."CERVEZAS" (
"CODC" VARCHAR(3) NOT NULL,
"ENVASE" VARCHAR(10) NOT NULL,
"CAPACIDAD" DECIMAL(6 , 3) NOT NULL,
"STOCK" INTEGER NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

CREATE TABLE "ADMINISTRATOR"."EMPLEADOS" (
"CODE" VARCHAR(3) NOT NULL,
"NOMBRE" VARCHAR(30) NOT NULL,
"SUELDO" INTEGER NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

CREATE TABLE "ADMINISTRATOR"."REPARTO" (
"CODE" VARCHAR(3) NOT NULL,
"CODB" VARCHAR(3) NOT NULL,
"CODC" VARCHAR(3) NOT NULL,
"FECHA" DATE NOT NULL,
"CANTIDAD" INTEGER NOT NULL
)

DATA CAPTURE NONE IN "USERSPACE1";

ALTER TABLE "ADMINISTRATOR"."BARES" ADD CONSTRAINT "SQL110915083013030" PRIMARY KEY
("CODB");

ALTER TABLE "ADMINISTRATOR"."CERVEZAS" ADD CONSTRAINT "SQL110915090449660" PRIMARY KEY
("CODC");

ALTER TABLE "ADMINISTRATOR"."EMPLEADOS" ADD CONSTRAINT "SQL110915083625520" PRIMARY KEY
("CODE");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915083904570" PRIMARY KEY
("CODE",
"CODB",
"CODC");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915084519020" FOREIGN KEY
("CODE")
REFERENCES "ADMINISTRATOR"."EMPLEADOS"
("CODE");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915084537220" FOREIGN KEY
("CODB")
REFERENCES "ADMINISTRATOR"."BARES"
("CODB");

ALTER TABLE "ADMINISTRATOR"."REPARTO" ADD CONSTRAINT "SQL110915090459180" FOREIGN KEY
("CODC")
REFERENCES "ADMINISTRATOR"."CERVEZAS"
("CODC");

GRANT CREATEIN ON SCHEMA "ADMINISTRATOR" TO PUBLIC;

*Nota: el script crea la base de datos vacía.

2 comentarios:

  1. Algunos ejemplos de querys en SQL, usando unas tablas diferentes pero se puder dar una idea.

    1. Obtener el nombre de los conductores con categoría 15.

    SELECT DISTINCT conductores.nombre
    From conductores
    where conductores.categ = '15'

    2. Obtener la descripción de los proyectos en los que se haya realizado trabajos durante los días 11 al 15 de septiembre de 2002.

    select distinct proyecto.descrip
    from proyecto, trabajos
    where trabajos.fecha between '2002-09-11' AND '2002-09-15'
    and trabajos.codp = proyecto.codp

    3. Obtener el nombre de los conductores que hayan trabajado con una Hormigonera, ordenados descendentemente.

    select distinct conductores.nombre
    from conductores, maquina, trabajos
    Where trabajos.codc = conductores.codc
    and trabajos.codm = maquina.codm
    and maquina.nombre = 'Hormigonera'
    order by nombre desc

    4. Obtener el nombre de los conductores que hayan trabajado con una Hormigonera en proyectos de Arganda.

    select distinct conductores.nombre
    from conductores, maquina, trabajos, proyecto
    Where trabajos.codc = conductores.codc
    and trabajos.codm = maquina.codm
    and trabajos.codp = proyecto.codp
    and maquina.nombre = 'Hormigonera'
    and proyecto.localidad = 'Arganda’

    5. Obtener el nombre de los conductores y descripción del proyecto, para aquellos conductores que hayan trabajado con una Hormigonera en proyectos de Arganda durante los días 12 al 17 de Septiembre

    select conductores.nombre, proyecto.descrip
    from conductores, maquina, trabajos, proyecto
    where trabajos.fecha between '2002-09-12' AND '2002-09-17'
    and trabajos.codc = conductores.codc
    and trabajos.codm = maquina.codm
    and trabajos.codp = proyecto.codp
    and maquina.nombre = 'Hormigonera'
    and proyecto.localidad = 'Arganda'

    6. Obtener los conductores que trabajan en los proyectos de José Pérez

    select distinct conductores.nombre
    from conductores, proyecto, trabajos
    where trabajos.codp = proyecto.codp
    and trabajos.codc = conductores.codc
    and proyecto.cliente = 'Jose Perez'

    7. Obtener el nombre y localidad de los conductores que no trabajan en los proyectos de José Pérez

    select distinct conductores.nombre, conductores.localidad, trabajos.fecha
    from conductores, proyecto, trabajos
    where trabajos.codp = proyecto.codp
    and trabajos.codc = conductores.codc
    and proyecto.cliente != 'Jose Perez'

    8. Obtener todos los datos de los proyectos realizados en Rivas o que sean de un cliente llamado José

    select *
    from proyecto
    where proyecto.localidad = 'Rivas'
    or proyecto.cliente = 'Jose Perez'

    9. Obtener los conductores que habiendo trabajado en algún proyecto, figuren sin horas trabajadas.

    select distinct conductores.nombre, trabajos.tiempo
    from conductores, trabajos
    where trabajos.codc = conductores.codc
    and trabajos.tiempo is null

    10. Obtener los empleados que tengan como apellido Pérez y hayan trabajado en proyectos de localidades diferentes a las suya

    select distinct conductores.nombre, trabajos.tiempo
    from conductores, proyecto, trabajos
    where trabajos.codc = conductores.codc
    and trabajos.codp = proyecto.codp
    and proyecto.localidad != 'Rivas'
    and conductores.nombre like '%Perez%'

    ResponderEliminar
    Respuestas
    1. oiga pana , le faltan 4 consultas mas
      11.- Obtener el nombre de los conductores y la localidad del proyecto, para aquellos conductores que hayan trabajado con máquinas con precio hora comprendido entre 10000 y 15000 ptas.

      12.- Obtener el nombre de los conductores y el nombre y localidad de los clientes, en los que se haya utilizado la máquina con precio hora más elevado.

      13.- Obtener por cada uno de los clientes el tiempo total empleado en sus proyectos.

      14.- Obtener los conductores que hayan trabajado en todos los proyectos de la localidad de Arganda

      Eliminar