Sunteți pe pagina 1din 31

Facultad de Ingeniería Industrial, Sistemas e

Informática

Escuela académica profesional de Ingeniería


de Sistemas

TRABAJO INDIVIDUAL

PRESENTADO POR:
Silva Principe, Bruss Juan

Para:
Ing.Rios Herrera, Josue Joel
Huacho-Perú
2018
Ejemplos Propuestos en SQL SERVER
Sub- Consultas(1)
A. CREAMOS LA BASE DE DATOS LIBRERIA

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


create database librería

SE LEE: Crear una base de datos con el nombre librería

2. /*Eliminamos la tabla, si existe y la creamos:*/


if object_id('libros') is not null
drop table libros;

SE LEE: Si cumple que el object_id de la tabla libros existe se eliminara la tabla Libros.

create table libros


(
codigo int identity,
titulo varchar(40),
autor varchar(30),
editorial varchar(20),
precio decimal(5,2)
);

SE LEE: Crear tabla libros con los siguientes campos: código de tipo int identity, titulo de tipo
varchar de tamaño 40, campo autor de tipo varchar de tamaño 30, campo editorial de tipo
varchar de tamaño 20, campo precio de tipo decimal con 5 enteros y 2 decimales.
3. /*Ingresamos los siguientes registros:*/

INSERT INTO libros VALUES


('Alicia en el pais de las maravillas','Lewis
Carroll','Emece',20.00);

SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo Alicia en
el país de las maravillas, cadenas de caracteres autor Lewis Carroll, cadena de caracteres
editorial Emece, cadena de caracteres precio decimal 20.00)
INSERT INTO libros VALUES
('Alicia en el pais de las maravillas','Lewis
Carroll','Plaza',35.00);
SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo Alicia en
el país de las maravillas, cadenas de caracteres autor Lewis Carroll, cadena de caracteres
editorial Plaza, cadena de caracteres precio decimal 35.00)
INSERT INTO libros VALUES
('Aprenda PHP','Mario Molina','Siglo XXI',40.00);

SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo Aprenda
PHP, cadenas de caracteres autor Mario Molina, cadena de caracteres editorial Siglo XXI,
cadena de caracteres precio decimal 40.00)
INSERT INTO libros VALUES
('El aleph','Borges','Emece',10.00);

SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo El Aleph,
cadenas de caracteres autor Borgues, cadena de caracteres editorial Emece, cadena de
caracteres precio decimal 10.00)
INSERT INTO libros VALUES
('Ilusiones','Richard Bach','Planeta',15.00);

SE LEE: Insertar en la tabla libros los siguientes valores(Cadena de caracteres titulo Ilusiones,
cadenas de caracteres autor Richard Bach, cadena de caracteres editorial Planeta, cadena de
caracteres precio decimal 15.00)
INSERT INTO libros VALUES
('Java en 10 minutos','Mario Molina','Siglo zXI',50.00);

SE LEE: Insertar en la tabla libros los siguientes valores(Cadena de caracteres titulo Java en 10
minutos, cadenas de caracteres autor Mario Molina, cadena de caracteres editorial Siglo zXI,
cadena de caracteres precio decimal 50.00)
INSERT INTO libros VALUES
('Martin Fierro','Jose Hernandez','Planeta',20.00);

SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo Martin
Fierro, cadenas de caracteres autor José Hernández, cadena de caracteres editorial Planeta,
cadena de caracteres precio decimal 20.00)
INSERT INTO libros VALUES
('Martin Fierro','Jose Hernandez','Emece',30.00);

SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo Martin
Fierro, cadenas de caracteres autor José Hernández, cadena de caracteres editorial Emece,
cadena de caracteres precio decimal 30.00)
INSERT INTO libros VALUES
('Uno','Richard Bach','Planeta',10.00);

SE LEE: Insertar en la tabla libros los siguientes valores (Cadena de caracteres titulo Uno,
cadenas de caracteres autor Richard Bach, cadena de caracteres editorial Planeta, cadena de
caracteres precio decimal 10.00)

4. /*Obtenemos el título, precio de un libro específico y la diferencia entre su precio y


el máximo valor:*/
SELECT titulo, precio,
precio-(SELECT MAX(precio) FROM libros) as diferencia
FROM libros
WHERE titulo='Uno';

SE LEE: Seleccionar el campo titulo y campo precio de la tabla libros y al campo precio
restarle la subconsulta de el máximo valor del campo precio de la tabla libros al resultado
etiquetarlo con el nombre diferencia mientras cumpla que su titulo del libro sea igual ”Uno”
5. /*Mostramos el título y precio del libro más costoso:*/
SELECT titulo, autor, precio
FROM libros
WHERE precio=
(SELECT MAX(precio) FROM libros);

SE LEE: seleccionamos del campo título del campo, autor, precio de la tabla
libro, mientras cumpla que el campo precio es igual a la subconsulta el máximo valor del
campo precio de la tabla libros)

6. /*Actualizamos el precio del libro con máximo valor:*/


UPDATE libros SET precio=45

WHERE precio=
(SELECT MAX(precio) FROM libros);

SE LEE: Actualizar el campo precio de la tabla libros con le valor de 45


Mientras que cumpla que el precio es igual a la subconsulta máximo valor del campo precio de
la tabla libros
7. /*Eliminamos los libros con precio menor:*/
DELETE FROM libros
WHERE precio=(SELECT MIN(precio) FROM libros);

SE LEE: Borrar la tabla libros mientras cumpla que el precio sea igual a la subconsulta el
mínimo valor del campo precio de la tabla libros

B. CREAMOS LA BASE DE DATOS COLEGIO


Un profesor almacena el documento, nombre y la nota final de cada alumno de su clase en
una tabla llamada "alumnos".

CREATE DATABASE COLEGIO

SE LEE: Crear una base de datos con el nombre colegio


1. /*Elimine la tabla, si existe:*/
IF object_id('alumnos') IS Not null
DROP TABLE alumnos;

SE LEE: Si cumple que el object_id de la tabla alumnos existe se eliminara la tabla alumnos

2. /*Créela con los campos necesarios. Agregue una restricción "primary key" para el
campo "documento" y una "check" para validar que el campo "nota" se encuentre
entre los valores 0 y 20:*/
create table alumnos
(
DNI char(8),
nombre varchar(30),
nota decimal(4,2),
PRIMARY KEY(DNI),
CONSTRAINT CK_ALUMNOS_NOTA_VALORES CHECK (nota>=0 and nota <=20),
);

SE LEE: Creamos la tabla alumno con los siguientes campos: DNI de tipo char tamaño 8,
nombre de tipo varchar tamaño 30, nota de tipo decimal con 4 enteros y 2 decimales, el
campo DNI va ser mi llave primaria, crear restricción con el nombre
CK_ALUMNOS_NOTA_VALORES que cumpla que la nota sea mayor o igual a 0 y menor o igual
a 20.
3. /*Ingrese algunos registros:*/
INSERT INTO alumnos VALUES ('30111111','Ana Algarbe',15.1);

SE LEE: Insertamos dentro de la tabla alumnos los siguientes valores (cadena de caracteres DNI
30111111, cadena de caracteres nombre Ana Algarbe, cadena de caracteres nota 15.1)
INSERT INTO alumnos VALUES ('30222222','Bernardo Bustamante',13.2);

SE LEE: Insertamos dentro de la tabla alumnos los siguientes valores (cadena de caracteres DNI
30222222, cadena de caracteres nombre Bernardo Bustamante, cadena de caracteres nota
13.2)
INSERT INTO alumnos VALUES ('30333333','Carolina Conte',15.3);

SE LEE: Insertamos dentro de la tabla alumnos los siguientes valores (cadena de caracteres DNI
30333333, cadena de caracteres nombre Carolina Conte, cadena de caracteres nota 15.3)
INSERT INTO alumnos VALUES ('30444444','Diana Dominguez',19.2);

SE LEE: Insertamos dentro de la tabla alumnos los siguientes valores (cadena de caracteres DNI
30444444, cadena de caracteres nombre Diana Dominguez,cadena de caracteres nota 19.2)

INSERT INTO alumnos VALUES ('30555555','Fabian Fuentes',17.5);

SE LEE: Insertamos dentro de la tabla alumnos los siguientes valores (cadena de caracteres DNI
30555555, cadena de caracteres nombre Fabian Fuentes, cadena de caracteres nota 17.5)

INSERT INTO alumnos VALUES ('30666666','Gaston Gonzalez',16.70);

SE LEE: Insertamos dentro de la tabla alumnos los siguientes valores (cadena de caracteres DNI
30666666, cadena de caracteres nombre Gaston Gonzalez, cadena de caracteres nota 16.70)
4. /*Obtenga todos los datos de los alumnos con la nota más alta, empleando
subconsulta.*/
SELECT alumnos.*
FROM alumnos
WHERE nota=(SELECT MAX(nota) FROM alumnos);

SE LEE: Seleccionar todos los campos de la tabla de alumno mientras que la nota sea igual a la
subconsulta el máximo valor del campo nota de la tabla alumnos

5. /*Muestre los alumnos que tienen una nota menor al promedio, su nota, y la
diferencia con el promedio.*/
SELECT alumnos.*,
(SELECT AVG(nota) FROM alumnos)-nota as diferencia
FROM alumnos
WHERE nota<(SELECT avg(nota) FROM alumnos);

SE LEE: seleccione todo los campo de la tabla alumnos y la sub consulta promedio del campo
nota de la tabla alumnos menos el campo nota a este campo etiquetarlo como “diferencia”
mientras que cumpla que la nota sea menor que lo subconsulta promedio del campo nota de
la tabla alumnos
6. /*Cambie la nota del alumno que tiene la menor nota por 14.*/
UPDATE alumnos SET nota=14
WHERE nota=(SELECT MIN(nota) FROM alumnos);

SE LEE: Actualizar el campo nota de la tabla alumnos con el valor 14 mientras cumpla que la
nota sea igual a la subconsulta mínimo valor del campo nota de la tabla alumnos

7. /*Elimine los alumnos cuya nota es menor al promedio.*/


DELETE FROM alumnos
WHERE nota<(SELECT avg(nota) FROM alumnos);

SE LEE: Eliminar la tabla alumnos mientra que la nota sea menor que la subconsulta promedio
del campo nota de la tabla alumnos
Ejemplos Propuestos en SQL SERVER
Sub- Consultas (2)
Creamos una base de datos BODEGA
Un comercio que vende artículos de librería y papelería almacena la información de
sus ventas en una tabla llamada "facturas", otra "detalles" y otra "clientes".

Eliminamos las tablas si existen:


if object_id('detalles') is not null
drop table detalles;
if object_id('facturas') is not null
drop table facturas;
if object_id('clientes') is not null
drop table clientes;

SE LEE: si el object_id de la tabla detalles existe eliminar la tabla detalles, si el object_id de la


tabla facturas existe eliminar la tabla facturas, si el object_id de la tabla clientes existe eliminar
la tabla clientes
Las creamos con las siguientes estructuras:
CREATE TABLE clientes
(
codigo int identity,
nombre varchar(30),
domicilio varchar(30),
primary key(codigo)
);
CREATE TABLE facturas
(
numero int NOT NULL,
fecha datetime,
codigocliente int NOT NULL,

PRIMARY KEY(numero),
CONSTRAINT FK_facturas_cliente
FOREIGN KEY (codigocliente)
REFERENCES clientes(codigo)
ON UPDATE CASCADE
);
CREATE TABLE detalles
(
numerofactura int not null,
numeroitem int not null,
articulo varchar(30),
precio decimal(5,2),
cantidad int,
primary key(numerofactura,numeroitem),
CONSTRAINT FK_detalles_numerofactura
FOREIGN KEY (numerofactura)
REFERENCES facturas(numero)
ON UPDATE CASCADE
ON DELETE CASCADE,
);
SE LEE: Crear una tabla con el nombre clientes con los siguientes campos: código int identity,
nombre varchar(30), domicilio varchar(30), la llave primaria es el campo código; Crear una
tabla con el nombre facturas con los siguientes campos: numero int NOT NULL, fecha
datetime, codigocliente int NOT NULL, la llave primaria es el campo numero, crear restricción
con el nombre FK_facturas_cliente donde la llave forania es el campo códigocliente que se
obtiene de la tabla clientes del campo código esto se actualiza en cascada; Crear una tabla con
el nombre detalles con los siguientes campos: numerofactura int not null, numeroitem int not
null, articulo varchar(30), precio decimal(5,2), cantidad int, las llaves primarias son
numerofactura y numeroitem,creamos una restricción con el nombre
FK_detalles_numerofactura donde la llave foránea sea numerofactura que se obtiene de la
tabla facturas del campo número se actualiza en cascada ambos FOREIGN KEY
(numerofactura)
Ingresamos algunos registros:

INSERT INTO clientes VALUES('Juan Lopez','Colon 123');

SE LEE: insertar en la tabla clientes los siguientes valores: cadena de caracteres Juan Lopez,
codena de caracteres Colon 123.

INSERT INTO clientes VALUES('Luis Torres','Sucre 987');

SE LEE: insertar en la tabla clientes los siguientes valores: cadena de caracteres Luis Torres,
cadena de caracteres Sucre 987;

INSERT INTO clientes VALUES('Ana Garcia','Sarmiento 576');

SE LEE: insertar en la tabla clientes los siguientes valores: cadena de caracteres Ana Gacrcia,
cadena de caracteres Sarmiento 576;

INSERT INTO facturas VALUES(1200,'2007-01-15',1);

SE LEE: insertar en la tabla facturas los siguientes valores: cadena de caracteres 1200, codena
de caracteres 2007-01-15, cadena de caracteres 1;

INSERT INTO facturas VALUES(1201,'2007-01-15',2);

SE LEE: insertar en la tabla facturas los siguientes valores: cadena de caracteres 1201, cadena
de caracteres 2007-01-15, cadena de caracteres 2;

INSERT INTO facturas VALUES(1202,'2007-01-15',3);

SE LEE: insertar en la tabla facturas los siguientes valores: cadena de caracteres 1300, cadena
de caracteres 2007-01-15, cadena de caracteres 3;

INSERT INTO facturas VALUES(1300,'2007-01-20',1);

SE LEE: insertar en la tabla facturas los siguientes valores: cadena de caracteres 1300, cadena
de caracteres 2007-01-20, cadena de caracteres 1;

INSERT INTO detalles VALUES(1200,1,'lapiz',1,100);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1200, cadena
de caracteres 1, cadena de caracteres lápiz, cadena de caracteres 1, cadena de caracteres 100;

INSERT INTO detalles VALUES(1200,2,'goma',0.5,150);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1200, cadena
de caracteres 1, cadena de caracteres goma; cadena de caracteres 0.5, cadena de caracteres
150;

INSERT INTO detalles VALUES(1201,1,'regla',1.5,80);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1201, cadena
de caracteres 1, cadena de caracteres regla; cadena de caracteres 1.5, cadena de caracteres
80;

INSERT INTO detalles VALUES(1201,2,'goma',0.5,200);


SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1201, cadena
de caracteres 2, cadena de caracteres goma; cadena de caracteres 0.5, cadena de caracteres
200;

INSERT INTO detalles VALUES(1201,3,'cuaderno',4,90);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1201, cadena
de caracteres 3, cadena de caracteres cuaderno; cadena de caracteres 4, cadena de caracteres
90;

INSERT INTO detalles VALUES(1202,1,'lapiz',1,200);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1202, cadena
de caracteres 1, cadena de caracteres lapiz; cadena de caracteres 1, cadena de caracteres 200;

INSERT INTO detalles VALUES(1202,2,'escuadra',2,100);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1202, cadena
de caracteres 2, cadena de caracteres escuadra; cadena de caracteres 2, cadena de caracteres
100;

INSERT INTO detalles VALUES(1300,1,'lapiz',1,300);

SE LEE: insertar en la tabla detalles los siguientes valores: cadena de caracteres 1300, cadena
de caracteres 1, cadena de caracteres lapiz; cadena de caracteres 1, cadena de caracteres 300;
Vamos a realizar un "select" para recuperar el número de factura, el código de
cliente, la fecha y la suma total de todas las facturas:

SELECT f.*,(SELECT SUM(d.precio*cantidad)


FROM detalles AS d
WHERE f.numero=d.numerofactura) as total
FROM facturas AS f;

SE LEE: seleccionar todos los campos de la tabla f, subconsulta sumar


el campo precio por el campo cantidad ambos de la tabla d la tabla
detalle tiene como alias d mientras cumpla que campo numero de la
tabla f sea igual que campo numerofactura de la tabla d a todo esto
etiquetarlo como total la tabla facturas con el alias f
Esta consulta contiene una subconsulta correlacionada.
Ahora utilizaremos el resultado de la consulta anterior como una tabla derivada que
emplearemos en lugar de una tabla para realizar un "join" y recuperar el número de
factura, el nombre del cliente y el monto total por factura:

SELECT td.numero,c.nombre,td.total
FROM clientes as c
JOIN (select f.*,(SELECT sum(d.precio*cantidad)
FROM detalles as d
WHERE f.numero=d.numerofactura) AS total
From facturas as f) AS td
ON td.codigocliente=c.codigo;

SE LEE: seleccionar el campo numero de la tabla td , el campo nombre


de la tabla c ,el campo total de la tabla td, la tabla clientes tiene
como alias c, todo eso se une con la selección de todos los campos de
la tabla f y la subconsulta suma de los campos precio y cantidad
multiplicados, la tabla detalles tiene como alias d, mientras que el
campo numero de la tabla f es igual a el campo numerofactura de la
tabla d a este campo lo nombramos total,la tabla facturas como alias f
a todo esto lo nombramos td se unen por medio del campo códigocliente
de la tabla td como llave foránea y el campo código de la tabla c como
llave primaria
Vamos a realizar un "select" para recuperar el número de factura, el código de
cliente, la fecha y la suma total de todas las facturas:

SELECT f.*,(SELECT SUM(d.precio*cantidad)


FROM detalles AS d
WHERE f.numero=d.numerofactura) as total
FROM facturas AS f;

SE LEE: seleccionar todos los campos de la tabla f y la subconsulta


suma de los campos precio y cantidad de la tabla d ambos
multiplicados, la tabla detalles tiene como alias d mientras cumpla
que el campo numero de la tabla f es igual a el campo numerofactura
del campo d a todo esto etiquetarlo como total de la tabla facturas
como alias f

Esta consulta contiene una subconsulta correlacionada.


Ahora utilizaremos el resultado de la consulta anterior como una tabla derivada que
emplearemos en lugar de una tabla para realizar un "join" y recuperar el número de
factura, el nombre del cliente y el monto total por factura:

SELECT td.numero,c.nombre,td.total
FROM clientes as c
JOIN (select f.*,(SELECT sum(d.precio*cantidad)
FROM detalles as d
WHERE f.numero=d.numerofactura) AS total
From facturas as f) AS td
ON td.codigocliente=c.codigo;

SE LEE: seleccionar el campo numero de la tabla td, el campo nombre de la tabla c, el campo
total de la tabla td la tabla clientes alias c a esta consulta la unimos con la selección de todos
los campos de la tabla f y la subconsulta sumar la multiplicación de los campos precio y
cantidad de la tabla d, la tabla detalles alias d mientras cumpla que campo numero de la tabla f
sea igual que el campo numerofactura de la tabla d a todo este resultado lo nombramos como
total, la tabla facturas alias f a esto lo llamamos td unidos por la lleve foránea códigocliente de
la tabla td y código como llave primaria de la tabla c
CREAR UNA BASE DE DATOS: LIBRERIA
Trabajamos con las tablas "libros" y "editoriales" de una librería.
Eliminamos las tablas si existen y las creamos:

if object_id('libros') is not null


drop table libros;

if object_id('editoriales') is not null


drop table editoriales;

SE LEE: si el object_id de la tabla libros existe eliminar la tabla libros; si el object_id de la tabla
editoriales existe eliminar la tabla editoriales
CREATE TABLE editoriales
(
codigo tinyint identity,
nombre varchar(30),
PRIMARY KEY (codigo)
);

CREATE TABLE libros


(
codigo int identity,
titulo varchar(40),
autor varchar(30),
codigoeditorial tinyint,
precio decimal(5,2),
PRIMARY KEY(codigo)
);

SE LEE: creamos la tabla editoriales con los campos: código tinyint identity, nombre varchar
tamaño 30, ponemos como llave primaria a código; creamos la tabla libro libros con los
campos: código int identity, titulo varchar tamño 40, autor carchar tamaño 30, código editorial
tinyint, precio decimal con 5 enteros y dos decimales, ponemos como llave primaria a código

Ingresamos algunos registros:


INSERT INTO editoriales VALUES('Planeta');
INSERT INTO editoriales VALUES('Emece');
INSERT INTO editoriales VALUES('Paidos');
INSERT INTO editoriales VALUES('Siglo XXI');

INSERT INTO libros VALUES('Uno','Richard Bach',1,15);


INSERT INTO libros VALUES('Ilusiones','Richard Bach',2,20);
INSERT INTO libros VALUES('El aleph','Borges',3,10);
INSERT INTO libros VALUES('Aprenda PHP','Mario Molina',4,40);
INSERT INTO libros VALUES('Poemas','Juan Perez',1,20);
INSERT INTO libros VALUES('Cuentos','Juan Perez',3,25);
INSERT INTO libros VALUES('Java en 10 minutos','Marcelo Perez',2,30);

SE LEE: insertar en la tabla libros los valores: cadena de caracteres Aprenda PHP, cadena de
caracteres Mario Molina, candena de caracteres 4, cadena de caracteres 40; insertar en la
tabla libros los valores: cadena de caracteres Poemas, cadena de caracteres Juan Perezzç,
candena de caracteres 1, cadena de caracteres 20; insertar en la tabla libros los valores:
cadena de caracteres Cuentos, cadena de caracteres Juan Perez, candena de caracteres 3,
cadena de caracteres 25; insertar en la tabla libros los valores: cadena de caracteres Java en 10
minutos, cadena de caracteres Marcelo Perez, candena de caracteres 2, cadena de caracteres
30;

Actualizamos el precio de todos los libros de editorial "Emece"


incrementándolos en un 10%:

UPDATE libros set precio=precio+(precio*0.1)


WHERE codigoeditorial=
(
SELECT codigo
FROM editoriales
WHERE nombre='Emece'
);

SE LEE: Actualizar el campo precio de la tabla libros con un 10 por ciento más de su valor
mientras se cumpla que el códigoeditorial sea igual a la suconsulta seleccionar el campo código
de la tabla editoriales mientras que el nombre sea igual a Emece

Eliminamos todos los libros de las editoriales que tienen publicados libros de
"Juan Perez":

DELETE FROM libros


WHERE codigoeditorial IN
(
SELECT e.codigo
FROM editoriales as e
JOIN libros
ON codigoeditorial=e.codigo
WHERE autor='Juan Perez'
);

SE LEE: Eliminar la tabla libros si cumple que códigoeditorial coincide con la selección del
campo código de la tabla e de la tabla editorial alias e se une con la tabla libros mediante
códigoeditorial como llave foránea y código como llave primaria mientra el campo autor sea
igual a Juan Perez

CREAR UNA BASE DE DATOS CLUB


Un club dicta clases de distintos deportes a sus socios. El club tiene una
tabla llamada "inscriptos" en la cual almacena el número de "socio", el
código del deporte en el cual se inscribe y si la matricula está o no paga, y
una tabla denominada "socios" en la que guarda los datos personales de
cada socio.
1. Elimine las tablas si existen:
if object_id('inscriptos') is not null
drop table inscriptos;

if object_id('socios') is not null


drop table socios;

SE LEE: si el object_id de la tabla inscripctos existe eliminar la tabla inscriptos; si el object_id de


la tabla socios existe eliminar la tabla socios
2. Cree las tablas:
CREATE TABLE socios
(
numero int identity,
documento char(8),
nombre varchar(30),
domicilio varchar(30),
primary key (numero)
);

CREATE TABLE inscriptos


(
numerosocio int not null,
deporte varchar(20) not null,
matricula char(1),-- 'n' o 's'
PRIMARY KEY(numerosocio,deporte),
CONSTRAINT FK_inscriptos_socio
FOREIGN KEY (numerosocio)
REFERENCES socios(numero)
);
SE LEE: creatçr la tabla socios con los siguientes campos: numero int identity, documento char
de tamaño 8, nombre varchar de tamaño 30, domicilio varchar tamño 30, como llave primaria
el campo numero; crear la tabla inscriptos con los siguientes campos: numerosocio int not null,
deporte varchar de tamaño 20 not null, matricula char de tamño 1, como llave primaria son los
campos numerosocio y deporte, hacemos una restriccion con el nombre FK_inscriptos_socio
denominando como llave foránea a numero de la tabla socios

3. Ingrese algunos registros:


INSERT INTO socios VALUES('23333333','Alberto Paredes','Colon 111');

SE LEE: insertar en la tabla socios los siguientes valores: cadena de caracteres 23333333,
cadena de caractres Alberto paredes, cadena de caractres Colon 111;

INSERT INTO socios VALUES('24444444','Carlos Conte','Sarmiento 755');

SE LEE: insertar en la tabla socios los siguientes valores: cadena de caracteres 24444444,
cadena de caractres Carlos Conte, cadena de caractres Sarmiento 755;

INSERT INTO socios VALUES('25555555','Fabian Fuentes','Caseros 987');

SE LEE: insertar en la tabla socios los siguientes valores: cadena de caracteres 25555555,
cadena de caractres Fabian Fuentes, cadena de caractres Caseros 987;

INSERT INTO socios VALUES('26666666','Hector Lopez','Sucre 344');


SE LEE: insertar en la tabla socios los siguientes valores: cadena de caracteres 26666666,
cadena de caractres Hector Lopez, cadena de caractres Sucre 344;

INSERT INTO inscriptos VALUES(1,'tenis','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 1, cadena de
caractres tenis, cadena de caractres s;

INSERT INTO inscriptos VALUES(1,'basquet','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 1, cadena de
caractres basquet, cadena de caractres s;

INSERT INTO inscriptos VALUES(1,'natacion','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 1, cadena de
caractres natacion, cadena de caractres s;

INSERT INTO inscriptos VALUES(2,'tenis','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 2, cadena de
caractres tenis, cadena de caractres s;

INSERT INTO inscriptos VALUES(2,'natacion','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 2, cadena de
caractres natacion, cadena de caractres s;

INSERT INTO inscriptos VALUES(2,'basquet','n');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 2, cadena de
caractres basquet, cadena de caractres n;

INSERT INTO inscriptos VALUES(2,'futbol','n');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 2, cadena de
caractres futbol, cadena de caractres n;

INSERT INTO inscriptos VALUES(3,'tenis','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 3, cadena de
caractres tenis, cadena de caractres s;

INSERT INTO inscriptos VALUES(3,'basquet','s');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 1, cadena de
caractres tenis, cadena de caractres s;

INSERT INTO inscriptos VALUES(3,'natacion','n');

SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 3, cadena de
caractres natacion, cadena de caractres n;

INSERT INTO inscriptos VALUES(4,'basquet','n');


SE LEE: insertar en la tabla inscriptos los siguientes valores: cadena de caracteres 4, cadena de
caractres basquet, cadena de caractres n;

4. Actualizamos la cuota ('s') de todas las inscripciones de un socio


determinado (por documento) empleando subconsulta.

UPDATE inscriptos set matricula='s'


WHERE numerosocio=
(
SELECT numero
FROM socios
WHERE documento='25555555'
);

SE LEE: Actualizar el campo matricula de la tabla inscriptos con el valor s mientras cumpla que
numerosocio es igual a la subconsulta de seleccionar el campo numero de la tabla socios
mientras sea el documento igual a 25555555
5. Elimine todas las inscripciones de los socios que deben alguna
matrícula.

DELETE FROM inscriptos


WHERE numerosocio in
(
SELECT numero
FROM socios as s
JOIN inscriptos

ON numerosocio=numero
WHERE matricula='n'
);

SE LEE: eliminar la tabla inscriptos mientra que el numerosocio coincide con la selección de el
campo numero de la tabla socios alias s uniendo la tabla inscriptos mediante numero de socio
y numero, mientras cumpla que la matricula sea igual a n
CREAR UNA BASE DE DATOS COLEGIO
Un profesor almacena las notas de sus alumnos en una tabla llamada alumnos"
(documento, nombre, nota). Tiene otra tabla llamada "aprobados" (documento,nota) en
la que guarda los alumnos que han aprobado el ciclo.

Eliminamos las tablas si existen:


if object_id('alumnos') is not null
drop table alumnos;

if object_id('aprobados') is not null


drop table aprobados;

SE LEE: si el object_id de la tabla alumnos existe eliminar la tabla alumnos; si el object_id de la


tabla aprobados existe eliminar la tabla aprobados

Creamos las tablas:


CREATE TABLE alumnos
(
documento char(8) not null,
nombre varchar(30),
nota decimal(4,2)
constraint CK_alumnos_nota_valores check (nota>=0 and nota <=10),
primary key(documento),
);
CREATE TABLE aprobados
(
documento char(8) not null,
nota decimal(4,2)
constraint CK_aprobados_nota_valores check (nota>=0 and nota <=10),
primary key(documento),
);
SE LEE: crear la tabla alumnos con los siguientes campos: documento char tamaño 8 not null,
nombre varchar tamaño 30, nota decimal con 4 enteros y 2 decimales, nombrando una
restriccion CK_alumnos_nota_valores que cumpla que la nota sea mayor e igual que cero y
menos e igual que 10, a campo documentos lo nombramos como llave primaria; cramos la
tabla aprobados con los siguientes campos: documento char tamaño 8 not null, nota decimal
con 4 enteros y 2 decimales, nombrando una restriccion CK_aprobados_nota_valores que
cumpla que la nota sea mayor e igual que cero y menos e igual que 10, como llave primaria
documento

Ingresamos registros en "alumnos":


INSERT INTO alumnos VALUES('30000000','Ana Acosta',8);
SE LEE: Insertar en la tabla alumnos los siguientes valores: cadena de caracteres 300000000,
cadena de caracteres Ana Acosta, cadena de caractres 8

INSERT INTO alumnos VALUES('30111111','Betina Bustos',9);

SE LEE: Insertar en la tabla alumnos los siguientes valores: cadena de caracteres 30111111,
cadena de caracteres Betina Bustos, cadena de caractres 9

INSERT INTO alumnos VALUES('30222222','Carlos Caseros',2.5);

SE LEE: Insertar en la tabla alumnos los siguientes valores: cadena de caracteres 302222222,
cadena de caracteres Carlos Caseros, cadena de caractres 2.5

INSERT INTO alumnos VALUES('30333333','Daniel Duarte',7.7);

SE LEE: Insertar en la tabla alumnos los siguientes valores: cadena de caracteres 30333333,
cadena de caracteres Daniel Duarte, cadena de caractres 7.7

INSERT INTO alumnos VALUES('30444444','Estela Esper',3.4);

SE LEE: Insertar en la tabla alumnos los siguientes valores: cadena de caracteres 304444444,
cadena de caracteres Estela Esper, cadena de caractres 3.4
Ingresamos registros en la tabla "aprobados" seleccionando registros de la tabla
"alumnos":
INSERT INTO aprobados
SELECT documento,nota
FROM alumnos
WHERE nota>=4;

SE LEE: insertar en la tabla aprobados seleccionar el campo documento y nota de la tabla


alumnos mientras cumpla que nota sea mayor e igual que 4
Note que no se listan los campos en los cuales se cargan los datos porque
tienen el mismo nombre que los de la tabla de la cual extraemos la información.
Veamos si los registros se han cargado:
SELECT * FROM aprobados;

SE LEE: seleccionar todos los campos de la tabla aprobados

S-ar putea să vă placă și