--Crear tabla Libro (idLibro,idAutor,nombre) con PK
CREATE TABLE Autor(
idAutor INT NOT NULL AUTO_INCREMENTAL PRIMARY KEY,
nombre VARCHAR2(255)
);
--Crear tabla autor (idAutor,nombre)
CREATE TABLE Libro(
idLibro INT NOT NULL AUTO_INCREMENTAL PRIMARY KEY,
idAutor INT NOT NULL,
nombre VARCHAR2(255)
);
--Crear la llave foreana idAutor en Libro
ALTER TABLE Libro
add constraint FK_Libro_autor foreign key (idAutor) references Autor (idAutor);
--Insertar 2 autores
INSERT INTO Autor(idAutor,nombre) VALUES(1,'Luis Angel Meza Perez');
INSERT INTO Autor(idAutor,nombre) VALUES(1,'Luis Angel Meza Castillo');
--Insertar 5 libreos
INSERT INTO Libro(idLibro,idAutor,nombre) VALUES(1,1,'Jquery Ninja');
INSERT INTO Libro(idLibro,idAutor,nombre) VALUES(2,1,'Cualquier Cosa');
INSERT INTO Libro(idLibro,idAutor,nombre) VALUES(3,1,'Holi');
INSERT INTO Libro(idLibro,idAutor,nombre) VALUES(4,2,'Chao');
INSERT INTO Libro(idLibro,idAutor,nombre) VALUES(5,2,'Haaa');
-- completar la fecha de nacimiento de los autores
UPDATE Autor SET fecNac = '12-07-1904' WHERE nombre = 'Luis Angel Meza Perez';
UPDATE Autor SET fecNac = '08-02-1962' WHERE nombre = 'Luis Angel Meza Castillo';
--Calcular la edad de "Gariela Marquez"
SELECT nombre,(SYSDATE - fecNac)/365 FROM Autor WHERE nombre = 'Luis Angel Meza Perez';
--Cambiar el tamaño del atributo nombre en tabla libro a 50
ALTER TABLE Libro
MODIFY nombre VARCHAR2(50);
--Agregar el atributo fecha nacimiento
ALTER TABLE Autor
ADD fecNac DATE;
--seleccionar todos los libros 'Pablo Neruda'
SELECT * FROM Libro l INNER JOIN Autor a ON l.idAutor = a.idAutor
WHERE a.nombre = 'Jquery Ninja';
SELECT * FROM Libro l, Autor a
WHERE l.idAutor = a.idAutor
AND a.nombre = 'Jquery Ninja';
SELECT * FROM
FROM Libro
WHERE idAutor = (SELECT idAutor FROM Autor WHERE nombre = 'Jquery Ninja');
--Tabla duoal para hacer pruebas
-- de esta forma pasamos todo a MAYUSCULA FUNCTION UPPER();
SELECT UPPER('AbCdEf') FROM dual
-- multiplicacion con la tabla dual
SELECT 128*4 FROM dual
-- comando para ver las tablas de la base
SELECT * FROM tab
-- para ver la descripcion de la tabla
DESC Autor
-- funcion ROUND para redondear
SELECT nombre,ROUND((SYSDATE - fecNac)/365) FROM Autor WHERE nombre = 'Luis Angel Meza Perez';
-- consulta en la base de datos con inner join igualando PK y FK
SELECT * FROM Libro l INNER JOIN Autor a ON l.idAutor = a.idAutor
WHERE a.idAutor = '1';
-- para traer todas las columnas de todas las tablas de la base
SELECT * FROM col
-- para traer las columnas de una tabla especifica
SELECT * FROM col WHERE tname = UPPER('libro')
-- En la base de datos se guardan los datos en mayusculas ejemplo la tabla col
-- En los select tambien se puede usar las columnas de forma corta ejeplo: SELECT * A1,A2 FROM T1 WHERE A1='C'
-- Averiguar mejores practicas en pl/sql
-- Listar los nombres de los autores que han escrito algun libro relacionado con amor
SELECT a.nombre FROM Libro l INNER JOIN Autor a ON l.idAutor = a.idAutor WHERE UPPER(l.nombre) LIKE UPPER('%JQUERY%');
o
SELECT a.nombre FROM Libro l INNER JOIN Autor a ON l.idAutor = a.idAutor WHERE LOWER(l.nombre) LIKE LOWER('%JQUERY%');
--hecho por el profesor
SELECT nombre From Autor WHERE idAutor IN(SELECT idAutor FROM Libro WHERE LOWER(nombre) LIKE '%jquery%');
No hay comentarios:
Publicar un comentario