-- Creando una base de datos
Create database Escuela
-- Utilizando o abriendo una base de datos
use escuela
-- Creando una tabla sin ningun tipo de control
Create table alumnos5(AEscolar varchar(9), Curso varchar(7),Numero int, Nombre varchar(25),
Apellido varchar(25),Telefono varchar(12) , FechaNac date, Sexo char(1), direccion varchar(100) , Fechainscripcion date)
-- Creando tabla obligando al usuario a llenar algunos campos
Create table alumnos4(AEscolar varchar(9) not null, Curso varchar(7) not null,Numero int, Nombre varchar(25),
Apellido varchar(25),Telefono varchar(12) , FechaNac date, Sexo char(1), direccion varchar(100), Fechainscripcion date)
-- Creando tabla con un campo autonumerico, el primer numero significa el inicio y el segundo el
incremento
-- si solo se escribe identity asume 1 de inicio y 1 de incremento
Create table alumnos3(AEscolar varchar(9), Curso varchar(7),Numero int identity(5,1), Nombre varchar(25),
Apellido varchar(25),Telefono varchar(12) , FechaNac date, Sexo char(1), direccion varchar(100), Fechainscripcion date)
-- Creando una tabla con un campo clave
Create table alumnos2(AEscolar varchar(9) primary key, Curso varchar(7),Numero int, Nombre varchar(25),
Apellido varchar(25),Telefono varchar(12) , FechaNac date, Sexo char(1), direccion varchar(100), Fechainscripcion date)
-- Creando una tabla con varios campos clave
Create table alumnos1(AEscolar varchar(9), Curso varchar(7),Numero int, Nombre varchar(25),
Apellido varchar(25),Telefono varchar(12) , FechaNac date, Sexo char(1), direccion varchar(100),
Fechainscripcion date,primary key(AEscolar, Curso, numero))
-- Creando relacion
-- Creamos la tabla maestra
Create table alumnos(Numero int primary key, Nombre varchar(25), Apellido varchar(25),
Telefono varchar(12), FechaNac date, Sexo char(1), direccion varchar(100), Fechainscripcion date)
-- Creamos la tabla de transacciones con la relacion
Create table Curso( Asignatura varchar(40), Calificacion int,
NumeroAlumno int Foreign key references alumnos(Numero))
-- Agregando uno o varios campos a una tabla existente
alter table alumnos add edad int, tutor varchar(50)
-- Eliminando uno o varios campos de una tabla existente
alter table alumnos drop column edad
-- Modificar uno o varios campos de una tabla existente
alter table alumnos alter column tutor varchar(40)
-- Insertando datos a una tabla
-- Cuando vamos a insertar datos en todos los campos
insert into alumnos values(1,'Roberto','Burgos M.','829-805-3663','1973/05/30','M','C. Agustin C. Lopez #9', '2015/08/06',
'Annybelkis Pea')
-- Cuando vamos a insertar datos en algunos campos
insert into alumnos(Numero,Nombre,Apellido,FechaNac,tutor) values(2,'Independencia','Nacional','1844/02/27','Juan Pablo
Duarte')
-- Insertar datos a la tabla curso
insert
insert
insert
insert
into
into
into
into
Curso
Curso
Curso
Curso
values('Matematicas',95,1)
values('Lengua Espaola',75,1)
values('Ciencias Sociales',85,1)
values('Ciencias Naturales',84,1)
-- Modificar el contenido de uno mas campos
-- Modifica el campo telefono poniendo el mismo telefono a todos los registros
update alumnos set Telefono='555-555-5555'
-- Modifica el campo telefono y direccion poniendo el mismo telefono y direccion a todos los registros
update alumnos set Telefono='555-555-5555',direccion='C. Agustin C. Lopez #9'
-- Modifica el campo telefono poniendo el dato a los registros que cumplan la condicion
update alumnos set Telefono='888-888-8888' where Numero =1
-- Modifica el campo telefono y direccion poniendo los datos a todos los registros que cumplan la
condicion
update alumnos set Telefono='999-999-9999',direccion='C. Rosa Duarte #9' where Numero=2
-- Visualizacion de datos
-- Visualiza todos los registros en la tabla
select * from alumnos
-- Cuenta la cantidad de registros en una tabla
select COUNT(*) as [Cantidad de alumnos] from alumnos
-- visualiza los registros organizandolo por uno o varios campos
select
select
select
select
select
*
*
*
*
*
from
from
from
from
from
alumnos
alumnos
alumnos
alumnos
alumnos
order
order
order
order
order
by
by
by
by
by
Nombre
Nombre desc
Nombre, Apellido
Nombre, Apellido desc
telefono
-- Visualizando algunos campos
select Numero,Nombre,apellido,tutor from alumnos
-- Visualizacion agrupando registros
select
select
select
select
select
select
select
COUNT(*) from alumnos group by tutor
tutor,COUNT(*) from alumnos group by tutor
tutor,COUNT(*) from alumnos group by tutor,telefono
telefono,tutor,COUNT(*) from alumnos group by tutor,telefono
COUNT(*) as [Cantidad de alumnos] from alumnos group by sexo
sexo,COUNT(*) as [Cantidad de alumnos] from alumnos group by sexo
tutor,sexo,COUNT(*) as [Cantidad de alumnos] from alumnos group by sexo,tutor
-- Visualizando registros que sean distintos
select
select
select
select
distinct
distinct
distinct
distinct
SEXO from alumnos
tutor from alumnos
tutor,sexo from alumnos
sexo,tutor from alumnos
--Visualizando de datos agrupados que tengan algo comun
SELECT sexo, count(*)FROM alumnos GROUP BY sexo HAVING count(*) >= 1
SELECT sexo, count(*)FROM alumnos GROUP BY sexo HAVING sexo='M'
SELECT sexo, count(*)FROM alumnos GROUP BY sexo,tutor HAVING tutor='Juan Pablo Duarte'
-- visualizando datos de dos tablas relacionadas
-- Usando JOIN
select * from alumnos join Curso on Numero=NumeroAlumno
select numero,nombre,apellido,asignatura, calificacion from alumnos join Curso on Numero=NumeroAlumno
-- Creando Alias (A para alumnos y C para curso)
select * FROM alumnos A, Curso C
select * FROM alumnos A, Curso C where [Link]=[Link]
select [Link], [Link], [Link], [Link], [Link] FROM alumnos A, Curso C where [Link]=[Link]
-- Sin Alias
select * FROM alumnos, Curso
select * FROM alumnos, Curso where Numero=NumeroAlumno
select numero, Nombre, Apellido, Asignatura, Calificacion FROM alumnos, Curso where Numero=NumeroAlumno
-- Visualizacion combinando algunas clausulas
select Numero,Nombre,apellido,tutor from alumnos where numero<5 order by tutor
-- Consulta con predicados
select top 15 * from curso
select top 15 percent * from curso
select distinct numeroalumno from curso
-- el mismo efecto, all es asumido por default en SQL
select all Asignatura from Curso
select Asignatura from Curso
-- uso de funciones agregadas
select numero,nombre,apellido,
MIN(calificacion) over(partition by numeroalumno) as [Cal. Min],
Max(calificacion) over(partition by numeroalumno) as [Cal Max],
avg(calificacion) over(partition by numeroalumno) as [Prom],
COUNT(calificacion) over (partition by numeroalumno) as [Cant. notas],
tutor,
stdev(calificacion) over (partition by numeroalumno) as [Desv. Est. 1],
stdev(calificacion) over (partition by numeroalumno) as [Desv. Est. 2],
var(calificacion) over (partition by numeroalumno) as [Varianza 1],
varp(calificacion) over (partition by numeroalumno) as [Varianza 2],
sum(calificacion) over(partition by numeroalumno) as [Sumatoria]
from alumnos join Curso on Numero=NumeroAlumno
select distinct numero,nombre,apellido,
MIN(calificacion) over(partition by numeroalumno) as [Cal. Min],
Max(calificacion) over(partition by numeroalumno) as [Cal Max],
avg(calificacion) over(partition by numeroalumno)as [Prom],
COUNT(calificacion) over (partition by numeroalumno) as [Cant. notas],
tutor,
stdev(calificacion) over (partition by numeroalumno) as [Desv. Est. 1],
stdev(calificacion) over (partition by numeroalumno) as [Desv. Est. 2],
var(calificacion) over (partition by numeroalumno) as [Varianza 1],
varp(calificacion) over (partition by numeroalumno) as [Varianza 2],
sum(calificacion) over(partition by numeroalumno) as [Sumatoria]
from alumnos join Curso on Numero=NumeroAlumno
-- Creando vistas
create view Reporte as
select distinct numero,nombre,apellido,
MIN(calificacion) over(partition by numeroalumno) as [Cal. Min],
Max(calificacion) over(partition by numeroalumno) as [Cal Max],
avg(calificacion) over(partition by numeroalumno)as [Prom],
COUNT(calificacion) over (partition by numeroalumno) as [Cant. notas],
tutor,
stdev(calificacion) over (partition by numeroalumno) as [Desv. Est. 1],
stdev(calificacion) over (partition by numeroalumno) as [Desv. Est. 2],
var(calificacion) over (partition by numeroalumno) as [Varianza 1],
varp(calificacion) over (partition by numeroalumno) as [Varianza 2],
sum(calificacion) over(partition by numeroalumno) as [Sumatoria]
from alumnos join Curso on Numero=NumeroAlumno
create view Reporte1 as
select [Link], [Link], [Link], [Link], [Link] FROM alumnos A, Curso C where [Link]=[Link]
-- Ejecutando las vistas
select
select
select
select
* from Reporte
* from Reporte1
numero,nombre from reporte
numero,asignatura, calificacion from reporte1
-- Elimina todos los registros de la tabla
delete from curso
truncate curso
-- Elimina unicamente los registros que cumplan la condicion NumeroAlumno mayor que dos
delete from curso where NumeroAlumno>2
-- Elimina la tabla seleccionada
drop table curso
-- Elimina la base de datos seleccionada (No se puede borrar una base de datos si se esta dentro de
ella)
drop
database Escuela
Prctica
La compaa RBM Software and Technology necesita crear un sistema para el pago de sus empleados (la compaa tiene
diferentes departamentos), construya la estructura de la base de datos que soportara el sistema y que le de mantenimiento a la
base de datos.
1. Crear la base de datos, las tablas y las relaciones de lugar (Solo crear dos tablas: Departamento y Empleados).
2. Insertar algunos registros a las tablas.
3. Crear archivos en Excel con los datos necesarios de las tablas e importarlo a las tablas correspondientes.
4. Modificar algunos registros.
5. Visualizar los registros usando diferentes criterios de visualizacin.
6. Visualizar ms de una tabla al mismo tiempo.
7. Crear y ejecutar vistas.
8. Eliminar algunos registros por un criterio determinado.
9. Eliminar las tablas.
[Link] la base de datos.
Nota 1: El facilitador har algunas preguntas para que sean ejecutadas en el query.
Nota 2 : Los que no tienen laptop, pero si tienen PC en su casa, pueden traer solo la codificacin (Query) y ejecutarlas en cualquier
PC.