CREATE TABLE prueba( codigo number (5),constraint prueba_pk primary (codigo) );
CREATE TABLE prueba2 (codigo number (5), nombre varchar (40), fk_prueba number (5),constraint prueba2_pk primary (codigo),
constraint prueba2_prueba_fk foreign key (fk_prueba) references prueba on delete restrict );
CREATE TABLE prueba3 (codigo number (5),edad number (5), nombre varchar (40), fk_prueba number (5),constraint prueba2_pk primary (codigo));
alter table prueba3 add descripcion varchar (50) not null;
alter table prueba3 add constraint prueba3_foreign foreign key (fk_prueba) references prueba2 ;
alter table prueba3 add unicidad constraint unique (codigo, nombre);
alter table prueba3 add comprobacion check (length (descripcion)>5 and edad>17);
alter table prueba3 drop column edad;
alter table prueba3 modify descripcion number (100);
insert into prueba3 values (346,34,'Jorge', 'hm')
insert into prueba3 (codigo, nombre) values (342,34,'Jorge);
insert into prueba3 (codigo, nombre) values (341,34,(NULL));
insert into prueba3 (codigo, nombre) select campos form tabla;
-- LISTAR TODOS LOS EMPLEADOS
SELECT * FROM employees e ;
--PERSONAS CUYO PRIMER NOMBRE ES:
SELECT * FROM employees e where e.first_name Like 'Ellen';
SELECT * FROM employees e where e.first_name = 'Bruce';
--PERSONAS CUYO NOMBRE EMPIEZA EN "E"
SELECT * FROM employees e where e.first_name like'E%';
--PERSONAS NOMBRE COMPUESTO
SELECT * FROM employees e where e.first_name like'% %';
--NOMBRES QUE EMPIEZAN O TERMINAN POR A
SELECT * FROM employees e where e.first_name like'A%' OR e.first_name like'%a' ;
SELECT * FROM employees e where upper( e.first_name) like'A%' OR upper(e.first_name) like'%A';
--Palabras que tienen E S E en el orden
SELECT * FROM employees e where upper( e.first_name) like '%E%S%E%';
--Correos validos
SELECT * FROM employees e where upper( e.mail) like '__%@__%.__%';
--Empieza por S (comodin para un caracter ) y despues van 5 caracteres
SELECT * FROM employees e where upper( e.first_name) like 'S_____';
--EMPLEADOS QUE SE LLAMAN STEVEN
SELECT * FROM employees e where upper( e.first_name) like 'STEVEN%';
--Empleados que ganen mas de 2000 contratados en el 98 que tengan en su nombre minimo 6 caracteres
--y que su nombre y apellido tenga la misma cantidad de caracteres ordenanar el resultado por nombre y apellido
SELECT * FROM employees e where e.Hire_Date like '%98' and e.Salary >2000 and e.first_Name like '______%'
--ODENAR POR NOMBRE Y APELLIDO
and LENGTH (e.first_Name) = LENGTH (e.last_name) order by e.first_name, e.last_name;
--Listar nombre de empleados y año en el que fueron contratados
SELECT first_name, to_char( Hire_Date , 'YYYY') FROM employees e;
SELECT first_name, to_char( Hire_Date , 'MM') FROM employees e;
--Nombre del Mes
SELECT first_name, to_char( Hire_Date , ' MONTH') FROM employees e;
--OPERADORES PRINCIPALES DE ALGEBRA RELACIONAL
--LISTAR LOS NOMBRES DE LOS EMPLEADOS DEL DEPARTAMENTO 50 QUE NO TIENEN TOCAYOS EN EL DEPARTAMENTO 70
--RESTA
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=60 minus
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=50;
--UNION
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=10 union
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=50;
--UNION CON REPETIDOS
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=10 union ALL
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=50;
--INTERSECCION
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=10 intersect
SELECT first_name FROM employees e Where e.DEPARTMENT_ID=50;
--Listar codigo de empleados que no han cambiado de trabajo
--- quienes esten en jobHistory
SELECT EMPLOYEE_ID FROM employees MINUS SELECT EMPLOYEE_ID FROM Job_History;
---empleados que ganan mas de 4000 y han cambiado de trabajo
SELECT EMPLOYEE_ID FROM employees where salary>4000 intersect SELECT EMPLOYEE_ID FROM Job_History ;
--JOIN
SELECT r.region_name, r.region_id,c.region_id, c.country_name FROM regions r, countries c;
--JOIN CON CONDICION
SELECT r.region_name, r.region_id,c.region_id, c.country_name FROM regions r, countries c WHERE c.region_id=r.region_id;
--INNER JOIN
SELECT r.region_name, r.region_id,c.region_id, c.country_name FROM regions r Join countries c on r.region_id=c.region_id;
--JOIN ENTRE VARIAS TABLAS
SELECT r.region_name, r.region_id,c.region_id, c.country_name , l.city FROM regions r Join countries c on r.region_id=c.region_id
Join Locations l on l.country_id =c.country_id;
JOIN
select empleados e join departamento d on e.depto=d.id where (upper(nombre) like 'A%' or u) and upper(e.nombre )like '%A' or ...c
and lower(d.nombre)='ventas'
esta completando los datos a la foranea
empleado e join dpto d on e.dpto_id=id.dpto_id
select from empleado e1 join empleado e2 on e1.manager_id=e2.id
en e2 están todos los datos de la foránea
id, nombre, jefe id, nombre, jefe
10, jorge , 1 1, juan, 2
producto p1 join producto p2 on pi.cod=p2.sprod
-- listar nombre del empleado y del jefe del jefe
select emp.first_name, jefe.first_name from employees emp join employees jefe on jefe.employee_id=emp.manager_id
join employees jefeP on jefep.employee_id=jefe.manager_id;
--natural Join
select * from countries natural join regions;
select * from employees natural join departments ;
select * from departments d left join employees e on d.department_id=e.department_id;
---a traves emplados del departamento hay departamentos sin empleados
select d.*, e.first_name from departments d left join employees e on d.department_id=e.department_id;
--empleados hay uno que no pertenece a ningun departamento
select d.*, e.first_name from employees e left join departments d on d.department_id=e.department_id;
select d.*, e.first_name from departments d join employees e on d.department_id=e.department_id;
no tenes comentarios porque no explicas nimierda bueno si sabias pero bueno
ResponderEliminar