Está en la página 1de 6

REPASO

// Se crea datos para Empresa, se excluye emp_cod porque es de tipo SERIAL, el programa ya se
encarga de enumerar 1,2,3,4...
insert into empresa(emp_nombre, emp_fechacreacion) values('MICROSOFT COLOMBIA','1999-12-
30');
insert into empresa(emp_nombre, emp_fechacreacion) values('ORACLE CO','2010-06-03');
//Se crea datos para Trabajador, como aquí no hay tipo SERIAL, no hay que especificar las
columnas o atributos como arriba
insert into trabajador values(3001,'CC','PEDRO',3,'1995-03-01',2000000,7);
insert into trabajador values(3002,'CE','JUAN',5,'1970-03-20',1300000,4);

select * from empresa;--> el asterisco es tomar todos los datos


select emp_nombre,emp_cod from empresa;--> de esta forma llama solo lo que quiere que le
aparezca en la tabla
Delete from empresa; --> elimina los datos que ingresó con algún error pero la próxima secuencia
ya no es 1,2,3 ahora será 4,5,6

insert into trabajador values(2000,'CE','MARIA LOPEZ',3,'2000-03-24',900000,1)-->PARA ESTA


TABLA YA NO ES NECESARIO ESPECIFICAR LOS CAMPOS, PORQUE EN LA TABLA TRABAJADOR NO
HAY NINGÚN SERIAL; Si volviera a introducir los datos anteriores no se puede, sería una llave
duplicada, no es posible dado que el primer dato(1000) tiene una llave primaria

FILTROS
select * from trabajador where tra_doc=3000;
select * from trabajador where tra_estrato between 2 and 3;
select * from trabajador where tra_estrato=2 or tra_estrato=3;
select * from productos where prod_pro_id=1 and prod_nombre like 'C%';
select * from productos where prod_precio between 500 and 2000 and prod_existencias<=30;
select * from empleados where emp_sexo='F' and emp_sueldo between 500000 and 650000;
delete from empleados where emp_sexo='F' and emp_sueldo between 500000 and 650000; -->
eliminar según filtro

MÁS EJERCICIOS DE FILTROS

1- Mostrar todos los trabajadores que laboran en alpina o colanta


select * from trabajador where tra_emp_cod=4 or tra_emp_cod=7;
2- Mostrar los trabajadores que ganan entre 1 y 3 millones de pesos
select * from trabajador where tra_salario between 1000000 and 3000000;
3- Listar las empresas que hayan sido creadas en los años 90 hasta 99.
select * from empresa where emp_fechacreacion between '1990-01-01' and '1999-12-31';
4- Mostrar las empresas que empiezan por la letra C
select * from empresa where emp_nombre like 'C%';
5- Listar las empresas que terminan con la letra A
select * from empresa where emp_nombre like '%A';

6- Listar las empresas que contienen las letras A,N


select * from empresa where emp_nombre like '%AN%';--> aqui que contenga la letra A y
N
7- Listar los trabajadores con estrato entre 2 y 3 y que el documento no sea CC
7)select * from trabajador where tra_estrato=2 or tra_estrato=3 and tra_tipodoc='CE' or
tra_tipodoc='TI';
7)select * from trabajador where tra_estrato in(2,3) and tra_tipodoc not in ('CC');
7)select * from trabajador where tra_estrato between 2 and 3 and tra_tipodoc <> 'CC';

8- Listar los trabajadores de trabajadores de la empresa Alpina que sean estrato 3 y que hayan
nacido en los años 90.
select * from trabajador where tra_emp_cod=4 and tra_fechanac between '1990-01-01' and
'1999-12-31' and tra_estrato=3;

9- Selecionar todos los trabajadores cuyo nombre empiece con la letra M, termine con la letra
A y que el salario sea mayor al salarío mínimo actual
select * from trabajador where tra_nombres like 'M%' and tra_nombres like '%A' and
tra_salario>812000;

10- Listar los trabajadores que hayan nacido en el mes de Marzo de cualquier año.
select * from trabajador where to_char(tra_fechanac,'mm')='03';

11- Listar los trabajadores que hayan nacido en los primeros 15 días en el primer semestre de
cualquier año.
11)select * from trabajador where to_char(tra_fechanac,'dd')between '01' and '15' and
to_char(tra_fechanac,'mm')between '01' and '06';
11)select * from trabajador where to_char(tra_fechanac,'dd') in ('01','02','03','04','05','06');

12- Listar los trabajadores que hayan nacido en el año 1994 o en el año 1970
select * from trabajador where to_char(tra_fechanac,'yyyy') in('1970','1994');

FUNCIONES DE AGRUPACIÓN (colocar los comandos en mini o mayus)

COUNT--> contar registros de una consulta, aplicando filtros


MIN--> muestra el mínimo valor(letra,números,fecha) = Letra A el valor más cerca a la Z es el
mayor valor.
MAX--> muestra máximo valor(letra,números,fecha) = Letra M el valor más cerca a la Z es el
mayor valor.
AVG(exclusivo para número)--> saca promedio
SUM(exclusivo para número)--> sumatoria de valor

Para estas funciones se usan:


not between
not in
not like
EJERCICIOS FUNCION AGRUPACIÓN

select count(*) from empleados;


select count(*) from empleados where emp_sexo='M' and emp_sueldo not between 500000
and 1000000;
select min(emp_fecha_nac) from empleados where emp_nombre1 not like '%A%';

select max(emp_sueldo) from empleados where emp_sexo='F' and emp_estado='SOLTERO';

select avg(emp_sueldo) from empleados where emp_nombre1 like '%A%' and emp_nombre1
Like '%E%' and emp_nombre1 like '%R%';

//Sumar los sueldos de los empleados que no sean casados ni solteros y que hayan nacido en
la década de los años 70.
select sum(emp_sueldo) from empleados where emp_estado not in('SOLTERO','CASADO') and
to_char(emp_fecha_nac,'yyyy') between '1980' and '1989';

-- El comando group by sirve para aplicar la función de agrupación a un campo que


contiene varios datos.
select emp_sexo,count(*)from empleados group by emp_sexo;

--Para mostrar un apodo en la columna de la tabla es decir en lugar de count, agregarle


as(para sobrenombre) y por consiguiente el nombre que desea en este caso fue total.
-- Al final si quiere ordenar como quiere ver la consulta se coloca: order by (el sobrenombre) y
luego desc(desciende mayor a menor) o asc(ascendente menor a mayor).
select emp_nombre1, count(*) as total from empleados where emp_nombre1 like 'M%' group
by emp_nombre1 order by total desc;

select emp_sexo,emp_estado,sum(emp_sueldo) as sumatoria from empleados where


to_char(emp_fecha_nac,'mm')='02' group by emp_sexo,emp_estado order by sumatoria desc;

FUNCIÓN UPDATE ___ SET


update empleados set emp_estado='casado' where emp_identi='39703475';--> para modificar
y actualizar un campo en especifico
select * from empleados where emp_identi='39703475';--> muestra todos los datos de alguien
en especifico
EJERCICIOS DE UPDATE Y SELECT

--Aumentar el sueldo a 900.000 a todas las mujeres que hayan nacido en 1965
update empleados set emp_sueldo=900000 where emp_sexo='F' and
to_char(emp_fecha_nac,'yyyy')='1965';

--Seleccionar empleados cuyo emp_descuento sea igual a 0


select * from empleados where emp_descuentos=0;

--Actualizar todos los empleados que cuyo descuento sea igual a 0 colocando en el descuento
el 24% de lo que gana actualmente, además la bonificación debe ser el 10% de lo que gana
actualmente
update empleados set emp_descuentos=emp_sueldo * 0.24,emp_bonificacion=emp_sueldo *
0.1 where emp_descuentos=0;

FUNCIONES TRIM
Ltrim(campo)-->quita el espacio a la izq
Rtrim(campo)-->quita el espacio a la der
Trim(campo)-->quita espacio de ambas partes
EJEMPLO
select * from empleados where emp_nombre1='NATIVIDAD ';
update empleados set emp_nombre1=trim(emp_nombre1);
update empleados set emp_nombre2=trim(emp_nombre2);

FUNCIONES MAYUS,MINUS,CANTIDAD CARACTERES


upper(campo)--> colocar en mayúscula los campos
lower(campo)--> colocar minúscula los campos
length(campo)--> cantidad de caracteres que permite

EJERCICIOS DE LO ANTERIOR
update empleados set emp_estado=upper(emp_estado);
--mostrar la informacion de todos los empleados cuyo nombre1 o nombre2 sea menor a 5
caracteres.
select * from empleados where length(emp_nombre1)<5 or length(emp_nombre2)<5;

EJERCICIO HARDCORE DE UPDATE


--Buscar todos los empleados que sean casados, que hayan nacido en el mes de febrero de
cualquier año y cuya bonificacion sea menor o igual al 20% de su sueldo, a esos empleados se les
debe actualizar el sueldo aumentandole un 10% al sueldo actual,ademas la bonificacion se le debe
aumentar en un 5% a lo que tiene actualmente

Forma Andrés:
UPDATE empleados SET emp_sueldo = emp_sueldo + (emp_sueldo * 0.1),emp_bonificacion =
emp_bonificacion + (emp_bonificacion * 0.05)
WHERE emp_estado = 'CASADO'AND TO_CHAR(emp_fecha_nac,'mm')='02' AND emp_bonificacion
<= (emp_sueldo * 0.2);
FUNCIÓN CONCATENAR
concat--> concatenar (unir)

select emp_apellido1 || ' ' || emp_nombre1 from empleados;--> forma para mostrar datos, en
medio de la comilla sencilla va un espacio para que no muestre los datos pegados.
select concat(emp_apellido1,' ',emp_nombre1) from empleados;--> 2 forma """""""""""

CONSULTAS CON JOIN


select * from categorias
join productos
on cat_id=prod_cat_id
where cat_nombre='LACTEOS';

select prod_nombre,pro_nombre,pro_representante from proveedores


join productos
on pro_id=prod_pro_id
--Nombre del representante no contenga ni la A ni la I
where pro_representante not like '%A%' and pro_representante not like '%I%';

select prod_nombre,prod_existencias,pro_nombre,cat_nombre from categorias


join productos
on cat_id=prod_cat_id
join proveedores
on pro_id=prod_pro_id
--Que no sean de la categoria ni lácteos ni carnes ni pescados y que el nombre del producto no
empiece ni termine con la letra A
where cat_nombre not in('LACTEOS','CARNES','PESCADOS') and pro_nombre not like '%A' and
pro_nombre not like 'A%';

--abril 11, como aparece a continuación 2 clases se coloca una después de from, no importa el
orden, para que se coloque un join deben tener una relación entre sí, con su llave primaria y la
foranea.
select ped_id,ped_fechapedido,cli_nombre,cli_ciudad from pedidos
join clientes
on cli_cedula=ped_cli_cedula
where cli_ciudad in('GIRON','LEBRIJA')and to_char(ped_fechapedido,'mm')='06';

--Mostrar el número de pedido, la fecha de pedido, el nombre del cliente, la ciudad del cliente, el
nombre y apellido concatenado del empleado y colocar un alias, la fecha de nacimiento del
empleado, (join 3 tablas) donde la fecha del pedido haya sido en el año 96 o 98 que no sean de la
ciudad de lebrija, que el nombre del empleado contenga la letra M y que no empiece con la letra
A, que la fecha de nacimiento del empleado esté entre el 1 de junio de 1980 y el 31 diciembre de
1999 pero que el pedido no haya sido comprado en el mes de julio de cualquier año

select ped_id,ped_fechapedido,cli_nombre,cli_ciudad, concat(emp_nombres,' ',emp_apellidos)as


nombre, emp_fecha_nac from pedidos
join clientes
on cli_cedula=ped_cli_cedula
join empleados
on emp_cedula=ped_emp_cedula
where to_char(ped_fechapedido,'yyyy')in('1996','1998')and cli_ciudad<>'LEBRIJA' and
emp_nombres like '%M%' and emp_nombres not like 'A%' and emp_fecha_nac between '1980-06-
01' and '1999-12-31' and to_char(ped_fechapedido,'mm')<>'07';

--IMPORTANTE OPERACIÓN MATEMÁTICA FIJA PA PARCIAL


Mostrar el número de pedido, el nombre del producto, el precio, la cantidad vendida, el descuento
del pedido 10248
Select ped_id,prod_nombre,prod_precio,det_cantidad,det_descuento ,(prod_precio*det_cantidad)as
subtotal,((prod_precio*det_cantidad)-(prod_precio*det_cantidad)*(det_descuento/100))as total
from pedidos
join detalle_pedidos
on ped_id=det_ped_id
join productos
on prod_id=det_prod_id
where ped_id=10248;

buscar clientes que hayan comprado maíz


select * from clientes
join pedidos
on cli_cedula=ped_di_cedula
join detalle_pedidos
on ped_id=det_ped_id
join productos
on prod_id=det_prod_id
where prod_nombre='MAIZ';

También podría gustarte