Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Crear tablas con sentencias SQL Realizar consultas con sentencias SQL Realizar triggers con sentencias SQL Utilizacin de un Sistema Gestor de Bases de Datos (MySQL 5.1)
d) Crea las siguientes tablas en la base de datos anterior: -Alumno: DNI como clave primaria y de tipo char (9), nombre char (50), direccin char(200), fechaAltaSistema DATE. -Estudios: Nmero Expediente como clave primaria y de tipo int, nmero crditos finalizados como entero, DNI alumno expediente, como char (9), estudio cursado char(100). e) Realiza los siguientes inserts: Alumnos 1234567F, Manuel Navarro, Madrid, 2008-10-11 7654321F, Roberto Laredo, Toledo, 2008-10-12 Estudios 1, 125, 1234567F, Derecho 2, 220, 1234567F, LADE 3, 60, 7654321F, Derecho f) Borrar el registro 3 de la tabla estudios.
SOLUCIN a) CREATE DATABASE BDAAA; SHOW DATABASES; b) GRANT SELECT, UPDATE ON BDAAA.* TO userXXX IDENTIFIED BY userXXX; C:\mysql -h localhost -u userXXX -p show databases; SHOW GRANTS FOR userXXX; GRANT ALL ON BDAAA.* TO userXXX; SHOW GRANTS FOR userXXX; REVOKE DROP ON BDAAA FROM userXXX; SHOW GRANTS FOR userXXX;
c)
Las siguientes opciones crean las tablas utilizando diferentes sentencias de creacin. Opcin i) CREATE TABLE Alumnos (DNI char(9) NOT NULL PRIMARY KEY, Nombre char(50), direccion char(200), fechaAlta DATE); CREATE TABLE Estudios (NumExpediente INT (10) AUTO_INCREMENT primary key, Creditos INT (10), DNIAlumno char(9), Estudios char(100)); Opcin ii) CREATE TABLE Alumnos (DNI char(9), Nombre char(50), direccion char(200), fechaAlta DATE); ALTER TABLE AlumnosB add PRIMARY KEY (DNI);
Opcin iii) CREATE TABLE Estudios (NumExpediente INT (10) AUTO_INCREMENT primary key, Creditos INT (10) CHECK (Creditos>0), DNIAlumno char(9), Estudios char(100)); Opcin iv) CREATE TABLE Estudios (NumExpediente INT (10) primary key, Creditos INT (10), DNIAlumno char(9) REFERENCES ALUMNOS(DNI), Estudios char(100)); ALTER TABLE Estudios ADD FOREIGN KEY (DNIAlumno) REFERENCES Alumnos (DNI) on update RESTRICT ON DELETE RESTRICT; e) INSERT INTO Alumnos (DNI, Nombre, Direccion, VALUES(1234567F, Manuel Navarro, Madrid, 2008-10-11); FechaAlta)
INSERT INTO Alumnos (DNI, Nombre, Direccion, FechaAlta) VALUES(7654321, Roberto Laredo, Toledo, CURRENT_DATE); INSERT INTO Estudios (Creditos, DNI, Estudios) VALUES (125, 1234567F, Derecho); INSERT INTO Estudios (Creditos, DNI, Estudios) VALUES (220, 1234567F, LADE); INSERT INTO Estudios (Creditos, DNI, Estudios) VALUES (60, 7654321F, Derecho) f) DELETE FROM Estudios where NumExpediente=3;
SOLUCIN c) SELECT * FROM Alumnos where Provincia=Palencia; SELECT Nombre, Apellidos, Telefono FROM ALUMNOS WHERE idAlumno=2; SELECT DISTINCT Nombre FROM ALUMNOS ORDER BY idAlumno; SELECT * FROM ALUMNOS ORDER BY Nombre, idAlumno DESC; SELECT DISTINCT idAlumno from ASIGALUMNO; SELECT idAlumno, Nombre, Apellidos, Telefono from Alumnos ORDER BY 2,3 (=ORDER BY idAlumno, Apellidos); SELECT idAlumno, Nombre, Apellidos from ALUMNOS WHERE idAlumno NOT BETWEEN 3 and 5 ORDER BY idAlumno; SELECT idAlumno, Nombre, Apellidos from ALUMNOS WHERE idAlumno<3 AND idProfesor>5 ORDER BY idAlumno; SELECT idAlumno, Nombre, Apellidos FROM ALUMNOS WHERE Provincia!=Madrid; SELECT * from ALUMNOS where Provincia<>Madrid; SELECT * from ALUMNOS WHERE Nombre NOT IN (Juan, Jorge) ORDER BY idAlumno; SELECT * FROM ALUMNOS WHERE Telefono IS NULL order by idAlumno; SELECT * FROM ALUMNOS WHERE Telefono IS NULL and Provincia IS NOT NULL order by idAlumno; SELECT * FROM ALUMNOS WHERE Nombre LIKE J% order by idAlumno; SELECT * FROM ALUMNOS WHERE Nombre LIKE ____ order by idAlumno; SELECT idAlumno, LENGTH (Nombre) + LENGTH(Apellidos) FROM ALUMNOS WHERE LENGTH (Telefono)>6;
SOLUCIN c) SELECT idProducto, Cantidad, Precio, Precio+5 FROM PRODUCTOS; SELECT idPedido, idCliente, horaPedido, horaPedidoEntregado, horaPedidoEntregado horaPedido FROM PEDIDOS; SELECT idProducto, Precio, Precio*1.10 FROM PRODUCTOS; SELECT idPedido, idCliente, horaPedido, horaPedidoEntregado horaPedido Periodo from PEDIDOS ORDER BY Periodo; SELECT COUNT(*) FROM PEDIDOS; SELECT COUNT (DISTINCT idProducto) FROM PEDIDOS; SELECT AVG (Precio) FROM PRODUCTOS; SELECT AVG (Precio) FROM PRODUCTOS WHERE Precio<10; SELECT MAX(Precio), MIN(Precio) FROM PRODUCTOS; SELECT MAX (horaPedidoEntregado - horaPedido), MIN (horaPedidoEntregado - horaPedido), AVG (horaPedidoEntregado horaPedido) FROM PEDIDOS; UPDATE PRODUCTOS SET Nombre = Cebolla, Precio=3 where idProducto=2; UPDATE PRODUCTOS SET Precio=Precio*1.20; DELETE FROM PRODUCTOS WHERE idProducto=2;
SOLUCIN c) SELECT * FROM EMPLEADOS JOIN DEPARTAMENTOS ON EMPLEADOS.idDepartamento=DEPARTAMENTOS.idDepartamento SELECT * FROM EMPLEADOS RIGHT JOIN DEPARTAMENTOS ON EMPLEADOS.idDepartamento=DEPARTAMENTOS.idDepartamento INSERT INTO EMPLEADOS SELECT * FROM EMPLEADOS2; SELECT * FROM EMPLEADOS WHERE idDepartamento=(SELECT MAX(idDepartamento) FROM DEPARTAMENTOS); SELECT COUNT (idDepartamento) as contador, idDepartamento from EMPLEADOS group by idDepartamento; SELECT COUNT (idDepartamento) as contador, idDepartamento from EMPLEADOS group by idDepartamento order by contador desc limit 3 SELECT * FROM EMPLEADOS WHERE idDepartamento IN (SELECT pt.idDepartamento from (select count(idDepartamento) as contador, idDepartamento from EMPLEADOS group by idDepartamento order by contador desc limit 3) as pt); SELECT @min_id:=MIN(idDepartamento), @max_id:=MAX(idDepartamento) FROM DEPARTAMENTOS; SELECT * from EMPLEADOS where idDepartamento=@min_id or idDepartamento=@max_id;
SOLUCIN c) CREATE TRIGGER insSumDos BEFORE INSERT ON CUENTAS FOR EACH ROW SET new.Cantidad = new.Cantidad + 2; SHOW TRIGGERS; DROP TRIGGER insSumDos; CREATE TRIGGER insSum BEFORE INSERT ON CUENTAS FOR EACH ROW SET @sum=@sum + NEW.cantidad; SET @sum=0; INSERT INTO CUENTAS VALUES ((1,2), (2,10), (3, 15)); SELECT @sum AS total cantidad; CREATE TRIGGER updCantDos BEFORE UPDATE ON CUENTAS FOR EACH ROW SET new.Cantidad = new.Cantidad 2; DELIMITER // CREATE TRIGGER updCant BEFORE UPDATE ON CUENTAS -> FOR EACH ROW -> BEGIN -> -> -> -> -> IF NEW.cantidad < 0 THEN SET NEW.cantidad = 0; ELSEIF NEW.cantidad > 100 THEN SET NEW.cantidad = 100; END IF; DELIMITER;
-> END;//