Documentos de Académico
Documentos de Profesional
Documentos de Cultura
/*==========================
============================*/
ALTER DATABASE Simulacro COLLATE = 'utf8mb4_bin';
USE Simulacro;
/*==========================
============================*/
CREATE TABLE Usuario (
Id_Usuario INT(10),
Nombre_Usuario VARCHAR(100) NOT NULL,
Clave VARCHAR(40),
Mail_Usuario VARCHAR(100),
CONSTRAINT consPK_Usuario PRIMARY KEY (Id_Usuario),
CONSTRAINT consUK1_Usuario UNIQUE(Mail_Usuario)
);
CREATE TABLE Rol (
Id_Rol INT(10),
Nombre_Rol VARCHAR(100),
Descripcion VARCHAR(200),
CONSTRAINT consPK_Rol PRIMARY KEY (Id_Rol)
);
CREATE TABLE UsuarioRol (
Id_Rol INT(10),
Id_Usuario INT(10),
CONSTRAINT consFK_UsuarioRol_Rol FOREIGN KEY (Id_Rol) REFERENCES Rol(Id_Rol),
CONSTRAINT consFK_UsuarioRol_Usuario FOREIGN KEY(Id_Usuario) REFERENCES
Usuario(Id_Usuario)
);
/*==========================
============================*/
CREATE TABLE Aud_Rol (
Id_Rol INT(10),
Nombre_Rol VARCHAR(100),
Descripcion VARCHAR(200),
event VARCHAR(30),
event_date DATETIME
);
/*==========================
============================*/
CREATE TABLE UsuarioBackup (
Id_Usuario INT(10),
Nombre_Usuario VARCHAR(100) NOT NULL,
Clave VARCHAR(40),
Mail_Usuario VARCHAR(100)
);
DELIMITER $$
CREATE PROCEDURE Copia_Usuarios()
BEGIN
TRUNCATE TABLE UsuarioBackup;
INSERT INTO UsuarioBackup SELECT * FROM Usuario;
END$$
select * from Usuario;
select * from UsuarioBackup;
CALL Copia_Usuarios();
/*==========================
============================*/
/*==========================
============================*/
SELECT Usuario.Id_Usuario,Usuario.Nombre_Usuario,Nombre_Rol
FROM Usuario,Rol,UsuarioRol
WHERE Usuario.Id_usuario=UsuarioRol.Id_Usuario
AND UsuarioRol.Id_Rol=Rol.Id_Rol
ORDER BY Rol.Nombre_Rol;
/*==========================
============================*/
SELECT
Usuario.Id_Usuario,Usuario.Nombre_Usuario,Usuario.Clave,Usuario.Mail_Usuario,
COUNT(Rol.Nombre_Rol) cant_Roles
FROM Usuario,Rol,UsuarioRol
WHERE Usuario.Id_usuario=UsuarioRol.Id_Usuario
AND UsuarioRol.Id_Rol=Rol.Id_Rol
GROUP BY
Usuario.Id_Usuario,Usuario.Nombre_Usuario,Usuario.Clave,Usuario.Mail_Usuario
HAVING COUNT(Rol.Nombre_Rol) > 1;