SQL SERVER IMPLEMENTACIÓN, Oracle, SQL, SQLServer
REQUERIMIENTO
Descripción
La institución
Perú Training necesita un modelo de datos para desarrollar un prototipo para llevar el control de:
- Los alumnos que se matriculan en cada uno de sus cursos.
- Los pagos que realizan los alumnos.
- La nota que el alumno obtiene en el curso.
Modelo de Datos
El modelo de datos es básico, y se muestra en la siguiente imagen:
CREACIÓN DE LA BASE DE DATOS
Sintaxis
La sintaxis básica para crear una base de datos es la siguiente:
CREATE DATABASE < nombre de la base de datos >;
GO
Creación de la base de datos EDUCA
CREATE DATABASE EDUCA;
GO
USE EDUCA;
GO
CÓDIGO FUENTE - EUREKA-CS-ORACLE-JDBC
En esta sección te presento un video que una aplicación CLIENTE-SERVIDOR.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.
CREACIÓN DE UNA TABLA
Sintaxis
CREATE TABLE [ esquema . ] < nombre de tabla > (
< definición de columna >,
. . .
. . .
);
GO
Tabla: ALUMNO
CREATE TABLE dbo.ALUMNO
(
alu_id INT NOT NULL ,
alu_nombre varchar(100) NOT NULL ,
alu_direccion varchar(100) NOT NULL ,
alu_telefono varchar(20) NULL ,
alu_email varchar(50) NULL
);
GO
Tabla: CURSO
CREATE TABLE dbo.CURSO
(
cur_id INT IDENTITY ( 1,1 ) NOT NULL ,
cur_nombre varchar(100) NOT NULL ,
cur_vacantes int NOT NULL ,
cur_matriculados int NOT NULL ,
cur_profesor varchar(100) NULL ,
cur_precio money NOT NULL
);
GO
Tabla: MATRICULA
CREATE TABLE dbo.MATRICULA
(
cur_id INT NOT NULL ,
alu_id INT NOT NULL ,
mat_fecha datetime NOT NULL ,
mat_precio money NOT NULL ,
mat_cuotas int NOT NULL ,
mat_nota int NULL
);
GO
Tabla: PAGO
CREATE TABLE dbo.PAGO
(
cur_id INT NOT NULL ,
alu_id INT NOT NULL ,
pag_cuota int NOT NULL ,
pag_fecha datetime NOT NULL ,
pag_importe money NOT NULL
);
GO
CLAVES PRIMARIAS
Sintaxis
ALTER TABLE [ esquema . ] < nombre de tabla >
ADD CONSTRAINT < nombre >
PRIMARY KEY CLUSTERED ( < lista de columnas > );
GO
Creación de Claves Primarias
Crear las claves primarias según el siguiente cuadro:
TABLA |
NOMBRE |
COLUMNAS |
CURSO |
PK_CURSO |
cur_id |
ALUMNO |
PK_ALUMNO |
alu_id |
MATRICULA |
PK_MATRICULA |
cur_id, alu_id |
PAGO |
PK_PAGO |
cur_id, alu_id, pag_cuota |
CLAVES FORANEAS
Sintaxis
ALTER TABLE [ esquema . ] < nombre de tabla >
ADD CONSTRAINT < nombre >
FOREIGN KEY ( < lista de columnas > )
REFERENCES [ esquema . ] < nombre de tabla referenciada > [ ( columnas referenciadas ) ]
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] ;
GO
Creación de Claves Foráneas
Crear las claves foráneas según el siguiente cuadro:
TABLA |
NOMBRE |
COLUMNAS |
REFERENCIA |
MATRICULA |
FK_MATRICULA_CURSO |
cur_id |
CURSO |
MATRICULA |
FK_MATRICULA_ALUMNO |
alu_id |
ALUMNO |
PAGO |
FK_PAGO_MATRICULA |
cur_id, alu_id |
MATRICULA |
CÓDIGO FUENTE - EUREKA-WEB-ORACLE-JDBC
En esta oportunidad te presento un video donde te explico cómo ejecutar el código fuente
de una aplicación Java Web, utilizando HTML, CSS, JavaScript, AJAX y JSON,
en la capa de persistencia se utiliza JDBC y base de datos Oracle XE 11g.
Tú tienes acceso al código fuente de esta aplicación, después del video esta el enlace.
RESTRICCIONES TIPO UNIQUE
Sintaxis
ALTER TABLE [ esquema . ] < nombre de tabla >
ADD CONSTRAINT < nombre >
UNIQUE ( < lista de columnas > ) ;
GO
Creación de Restricciones tipo UNIQUE
Crear las siguientes restricciones de tipo UNIQUE:
TABLA |
NOMBRE |
COLUMNAS |
CURSO |
U_CURSO_NOMBRE |
cur_nombre |
ALUMNO |
U_ALUMNO_NOMBRE |
alu_nombre |
ALUMNO |
U_ALUMNO_EMAIL |
alu_email |
RESTRICCIONES TIPO CHECK
Sintaxis
ALTER TABLE [ esquema . ] < nombre de tabla >
ADD CONSTRAINT < nombre >
CHECK ( < condición > ) ;
GO
Creación de Restricciones tipo CHECK
TABLA |
NOMBRE |
DESCRIPCIÓN |
CURSO |
CHK_CURSO_VACANTES |
Las vacantes debe ser mayor que cero. |
CURSO |
CHK_CURSO_MATRICULADOS |
Los matriculados debe ser mayor o igual a cero y menor o igual que las vacantes. |
CURSO |
CHK_CURSO_PRECIO |
El precio debe ser mayor que cero. |
MATRICULA |
CHK_MATRICULA_PRECIO |
El precio debe ser mayor que cero. |
MATRICULA |
CHK_MATRICULA_CUOTAS |
Las cuotas debe ser mayor o igual que uno. |
MATRICULA |
CHK_MATRICULA_NOTA |
La nota de ser NULL o un valor entre 0 y 20. |
PAGO |
CHK_PAGO_IMPORTE |
El importe debe ser mayor que cero. |
Creación de Restricciones tipo DEFAULT
Sintaxis
ALTER TABLE [ esquema . ] < nombre de tabla >
ADD CONSTRAINT < nombre >
DEFAULT ( < valor > ) FOR < nombre de columna > ;
GO
Ejemplo
Crear una restricción de tipo DEFAULT de nombre D_CURSO_MATRICULADOS que asigne un valor cero a la columna CUR_MATRICULADOS de la tabla CURSO.
INSERTAR DATOS
Tabla Curso
SET IDENTITY_INSERT dbo.Curso ON;
GO
INSERT INTO CURSO(CUR_ID,CUR_NOMBRE,CUR_VACANTES,CUR_PRECIO,CUR_PROFESOR)
VALUES(1,'SQL Server Implementación',24,1000.0,'Gustavo coronel');
INSERT INTO CURSO(cur_id,cur_nombre,cur_vacantes,cur_precio,cur_profesor)
VALUES(2,'SQL Server Administración',24,1000.0,'Gustavo coronel');
INSERT INTO CURSO(cur_id,cur_nombre,cur_vacantes,cur_precio,cur_profesor)
VALUES(3,'Inteligencia de Negocios',24,1500.0,'Sergio Matsukawa');
INSERT INTO CURSO(cur_id,cur_nombre,cur_vacantes,cur_precio,cur_profesor)
VALUES(4,'Programación Transact-SQL',24,1200.0,NULL);
INSERT INTO CURSO(cur_id,cur_nombre,cur_vacantes,cur_precio,cur_profesor)
VALUES(5,'Java Fundamentos',24,1600.0,'Gustavo Coronel');
INSERT INTO CURSO(cur_id,cur_nombre,cur_vacantes,cur_precio,cur_profesor)
VALUES(6,'Java Cliente-Servidor',24,1600.0,'Gustavo Coronel');
INSERT INTO CURSO(CUR_ID,CUR_NOMBRE,CUR_VACANTES,CUR_PRECIO,CUR_PROFESOR)
VALUES(7,'GESTION DE PROYECTOS',24,2200.0,'RICARDO MARCELO');
GO
SET IDENTITY_INSERT dbo.Curso OFF;
GO
Tabla Alumno
INSERT INTO ALUMNO (alu_id, alu_nombre, alu_direccion, alu_telefono, alu_email )
VALUES
( 1,'YESENIA VIRHUEZ','LOS OLIVOS','986412345','yesenia@hotmail.com'),
( 2,'OSCAR ALVARADO FERNANDEZ','MIRAFLORES',NULL,'oscar@gmail.com'),
( 3,'GLADYS REYES CORTIJO','SAN BORJA','875643562','gladys@hotmail.com'),
( 4,'SARA RIEGA FRIAS','SAN ISIDRO',NULL,'sara@yahoo.com'),
( 5,'JHON VELASQUEZ DEL CASTILLO','LOS OLIVOS','78645345','jhon@movistar.com'),
( 6,'RODRIGUEZ ROJAS, RENZO ROBERT','SURCO','673465235','rrodrigiez@gmail.com'),
( 7,'CALERO MORALES, EMELYN DALILA','LA MOLINA','896754652','ecalero@peru.com'),
( 8,'KAREN FUENTES','San Isidro','555-5555','KAFUENTES@HOTMAIL.COM'),
( 9,'Yamina Ruiz','San Isidro','965-4521','yami_ruiz@gmail.com'),
(10,'MARIA EULALIA VELASQUEZ TORVISCO','SURCO','6573456','mvelasques@gmail.com'),
(11,'FIORELLA LIZET VITELLA REYES','SAN BORJA','5468790','fvitela@outlook.com');
GO
Tabla Matricula
SET DATEFORMAT DMY
GO
DECLARE @ANIO VARCHAR(10);
SET @ANIO = cast(year(getdate()) as varchar);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(1, 5,'15-04-' + @ANIO +' 10:30',800.0,1,15);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(1, 3,'16-04-' + @ANIO +' 11:45',1000.0,2,18);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(1, 4,'18-04-' +@ANIO +' 08:33',1200.0,3,12);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(2, 1,'15-04-' + @ANIO +' 12:33',800.0,1,16);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(2, 2,'01-05-' + @ANIO +' 15:34',1000.0,2,10);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(2, 3,'03-05-' + @ANIO +' 16:55',1300.0,3,14);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(2, 4,'04-05-' + @ANIO +' 17:00',400.0,1,18);
INSERT INTO dbo.MATRICULA ( cur_id, alu_id, mat_fecha, mat_precio, mat_cuotas, mat_nota )
VALUES(2, 5,'06-05-' + @ANIO +' 13:12',750.0,1,17);
GO
Actualizar Tabla Curso
Se debe actualizar la columna cur_matriculados en la tabla Curso.
UPDATE dbo.CURSO
SET cur_matriculados = (
SELECT COUNT(*) FROM dbo.MATRICULA
WHERE dbo.MATRICULA.cur_id = dbo.CURSO.cur_id );
GO
Tabla Pago
SET DATEFORMAT DMY
GO
DECLARE @ANIO VARCHAR(10)
SET @ANIO = CAST(YEAR(GETDATE()) AS VARCHAR)
INSERT INTO DBO.PAGO VALUES(1,3,1,'16-04-' + @ANIO,500)
INSERT INTO DBO.PAGO VALUES(1,3,2,'16-05-' + @ANIO,500)
INSERT INTO DBO.PAGO VALUES(1,4,1,'18-04-' + @ANIO,400)
INSERT INTO DBO.PAGO VALUES(1,4,2,'18-05-' + @ANIO,400)
INSERT INTO DBO.PAGO VALUES(2,1,1,'15-04-' + @ANIO,800)
INSERT INTO DBO.PAGO VALUES(2,2,1,'01-05-' + @ANIO,500)
INSERT INTO DBO.PAGO VALUES(2,3,1,'03-05-' + @ANIO,430)
INSERT INTO DBO.PAGO VALUES(2,3,2,'03-06-' + @ANIO,430)
INSERT INTO DBO.PAGO VALUES(2,4,1,'04-05-' + @ANIO,400)
INSERT INTO DBO.PAGO VALUES(2,5,1,'06-05-' + @ANIO,750)
GO
SEQUENCIAS
Sintaxis
CREATE SEQUENCE [ esquema . ] < nombre de secuencia >
START WITH < valor de inicio >
INCREMENT BY < valor de incremento > ;
GO
Ejemplo
CREATE SEQUENCE dbo . sq_alumno
START WITH 20
INCREMENT BY 1;
GO
INSERT INTO ALUMNO (alu_id, alu_nombre, alu_direccion, alu_telefono, alu_email )
VALUES
( next value for dbo.sq_alumno ,'SHARON TINEO','SURCO','956389564','karla@gmail.com');
go
INSERT INTO ALUMNO (alu_id, alu_nombre, alu_direccion, alu_telefono, alu_email )
VALUES
( next value for dbo.sq_alumno ,'KARLA MORALES','LOS OLIVOS','93564356','claudia@gmail.com');
GO
SELECT * FROM ALUMNO;
GO
CÓDIGO FUENTE - EUREKA-WEB-MYSQL-SPRING
En esta sección te presento un video de una aplicación web desarrollada SPRING FRAMEWORK y MYSQL.
Tú tienes acceso al código fuente de esta aplicación, después del video tienes el enlace.