Está en la página 1de 6

create table libros( where codigo=11;

codigo serial primary key,


titulo varchar(50), delete from libros
autor varchar(15) not null default 'desconocido', where codigo=13;
editorial varchar(10),
precio float, /*MODIFICAR el tipo de dato PRECIO de float a decimal*/
cantidad integer default 0
); ALTER TABLE LIBROS ALTER COLUMN PRECIO TYPE DECIMAL(8,2);
/*insert
datos de la tabla libros*/ /*RENOMBRAR LA TABLA LIBROS*/
INSERT into libros (titulo,autor,editorial,precio,cantidad) values ('El alter table libros rename to LIBROS2;
aleph','Borges','Emece',25.50,100);
/*CONSULTAS
INSERT into libros (titulo,autor,editorial,precio,cantidad) values ('Matematica estas 1.LISTAR LOS LIBROS CUYO PRECIO ES 25.5 */
ahi','Paenza','Siglo XXI',10.8,200); SELECT *from libros2 where precio=25.5;
INSERT into libros (titulo,autor,editorial,precio) values ('Martin fierro','Jose /*
Perez','Emece',25.00); 2.SELECCIONAR REGISTROS CUYO AUTOR SEA DIFERENTE DE 'BORGES'*/
INSERT into libros (titulo,autor,editorial,precio) values ('Aprenda PHP','Mario SELECT *from LIBROS2 where autor<>'Borges';
Molina','Paidos',50.90);
INSERT into libros (titulo,autor,precio,cantidad) values ('El gato con botas',default, /*
default,100); 3. listar monto total en dinero de cada libro*/
INSERT into libros (titulo,editorial) values ('Aprenda PHP','Siglo XXI'); select titulo,precio,cantidad,precio*cantidad as total
INSERT into libros (titulo,autor,cantidad) values ('Alicia en el pais de las maravilas','Lewis from libros2;
Carroll',null); /*
listar el precio de cada libro con un 10% de descuento*/
select * from libros; select titulo,precio,precio-(precio*0.1) as descuento
from libros2;
update libros set titulo='Matematicas' /*concatenar cadenas
where cantidad=200; 5. en una sola columna unir titulo, autor y editorial del libro*/
select * from libros; select titulo||'-'||autor||'-'||editorial as "Libro Autor y Editorial"
from libros2;
delete from libros
where titulo='Martin fierro'; /*ADICIONAR CAMPO alter table xxx add column yyy tipo_dato*/

select * from libros order by codigo; alter table libros2 add column descuentos decimal(8,2);
select * from libros2 order by codigo;
delete from libros
where codigo=8; alter table libros2 add column OBSERVACIONES varchar(50);

delete from libros /*ACTUALIZAR update


where codigo=12; actualizar los datos empleando operadores aritméticos con
un 10% de descuento*/
delete from libros update libros2 set precio=precio-(precio*0.1);
where codigo=10;
/*modificar y eliminar columnas*/
delete from libros alter table libros2 rename column observaciones to obs;
alter table libros2 drop column obs; select * from libros2 order by codigo;
/*PRACTICA*/
--1.LISTAR LOS LIBROS CUYO AUTOR SEA PAENZA O BORGES --liatar libros cuyo precio se encuentre entre 20.00 y 29.99
select titulo,autor,editorial select titulo,precio
from libros2 from libros2
where autor='Paenza' OR autor='Borges'; where cast(precio as varchar) like '2_.%';
--OTRA FORMA utilizando el operador relacional IN-- --listar los libros que no incluyen centavos en el precio
select *from libros2 where autor in ('Borges','Paenza'); select * from libros2
where cast(precio as varchar)like '%.00;
--2.LISTAR LOS LIBROS CUYO AUTOR NO SEA PAENZA--
NI BORGES select count(precio) as "libros con precios"
select titulo,autor,editorial from libros2;
from libros2
where autor<>'Paenza'and autor<>'Borges'; select count(*) as "libros registrados"
--OTRA FORMA from libros2;
select *from libros2 where autor in ('Borges','Paenza'); --distinct--
select autor from libros2;
--3.LISTAR LIBROS CON PRECIO MAYOR O IGUAL A 20 Y MENOR O IGUAL A 40 select distinct autor from libros2;
select *from libros2 /*limit y offset*/
where PRECIO>=20 and precio<=40; select * from libros2 limit 4;

--4.LISTAR LIBROS QUE NO TIENEN su EDITORIAL select * from libros2 limit 4 offset 5
SELECT * from libros2 where editorial is null; select * from docentes
select * from inscritos
--5.LISTAR TODOS LOS LIBROS QUE COMIENCEN CON 'M'; select * from materias
select * from libros2 where titulo like 'M%';
--cross join-producto cartesiano
INSERT into libros2 (titulo,autor,editorial,precio,cantidad) values select m.nombre,d.nombre,ap_paterno,ap_materno
('Algebra','Baldor','Atenea',105.50,20); from materias as m cross join docentes as d

INSERT into libros2 (titulo,autor,editorial,precio,cantidad) values ('Lenguaje --1.listar a docentes y su especialidad


I','Rojas','Siglo XXI',45.8,35); select d.nombre,d.ap_paterno,d.ap_materno,m.nombre
INSERT into libros2 (titulo,editorial,precio,cantidad) values from docentes as d inner join materias as m on d.codigo_doc=m.codigo_doc
('Matematicas','Trilla',25.00,5);
INSERT into libros2 (titulo,autor,editorial,precio) values ('Logica','Ibarra','Paidos',25.00); --2.listar las materias con su duracion, aula y fecha de inicio
INSERT into libros2 (titulo,autor,precio,cantidad) values ('Estadistica','Murray', 62.20,10); select nombre,duracion,aula,fecha_ini
INSERT into libros2 (titulo,editorial) values ('Economia','Siglo XXI'); from materias
INSERT into libros2 (titulo,autor,cantidad) values ('Programacion','Zambrana',15);
--3.listar a todos los alumnos incritos
select * from libros2 order by codigo; select nombre ap_paterno,ap_materno, fecha_ins
--distinct-- from alumnos as a inner join inscritos as i on a.ci=i.ci
select autor from libros2;
select distinct autor from libros2; --4. listar a todos los alumnoscon notas mayores a 60
/*limit y offset*/ select nombre ap_paterno,ap_materno, fecha_ins,nota
select * from libros2 limit 4; from alumnos as a inner join inscritos as i on a.ci=i.ci
select * from libros2 limit 4 offset 5;
where nota>80 from docentes;

--order by ordenar por orden alfabetico por apellidos --ciudades de los alumnos y las direcciones de los docentes difernciando con estado
select nombre, ap_paterno,ciudad,'alumnos' as estado
select * from docentes from alumnos
order by ap_paterno union
select nombre, ap_paterno,direccion,'docentes'
--listar los docentes ordenados por salario from docentes
select nombre,ap_paterno,salario order by estado;
from docentes order by 3; --indice
create index i_docentes_especial on docentes (especialidad);
--cuanto se desembolsa en salarios
select sum(salario) as "total salarios" --indice unique
from docentes alter table materias
--mostrar cual es el salario maxino, salario minimo y el prmedio add constraint UQ_materias_nombre
select max(salario) as sal_maximo,min(salario) as sal_minimo, avg(salario) as unique (nombre);
sal_promedio
from docentes ---funciones con cadenas
--CUENTA LOS CARACTERES
-- mostrar la edad maxima, edad minima y el promedio de edades de los alumnos select char_length('hola')as tamaño;
select max(edad) as edad_maximo,min(edad) as edad_minimo, avg(edad) as --CONVIERTE A MAYUSCULAS
edad_promedio select upper('hola');
from alumnos; ---CONVIERTE A MINUSCULAS
select lower('HOLA');
-- cuantos docentes tiene salario comun --muestra la posicion de la palabra Mundo--
select salario, count(*) as cantidad select position('Mundo'in 'Hola Mundo');
from docentes --Muestra la posicion de la palabra MUNDO, pero como no esxite con mayuscula
group by salario; muestra como resltado cero
select position('MUNDO' in 'Hola Mundo');
--Cuantos alumnos hombres y cuantas mujeres existe --muestra las 5 letras a partir del carater o posicion 3
select sexo, count(*) as cantidad select substring('Hola Mundo' from 3 for 5);
from alumnos --elimina espacios en blanco al principio y final de la cadena
group by sexo; select (trim(' Hola Mundo '));
--elimina espacios solo al inicio de la cadena
--mostrar los docentes que tiene salarios en comun mayor a 1 select (trim(leading' 'from' Hola Mundo '));
--having -- elimina los guiones solo al final de la cadena
select salario, count(*) as cantidad select trim(trailing'-'from'--Hola Mundo----');
from docentes
group by salario --funcion CONCAT()---
having count(*)>1; select concat ('Buenas',' ','noches',':');}
--ciudades de los alumnos y las direcciones de los docentes
--union --muestar en unsa sola columna los nombres y apeliidos (concate)---
select nombre, ap_paterno,ciudad select concat(nombre,' ',ap_paterno,' ',ap_materno) as "Nombre completo de los
from alumnos alumnos"
union from alumnos;
select nombre, ap_paterno, direccion select * from docentes;
--convierte las primeras letras en mayusculas el nombre y apellido del codigo112 select sqrt(9);
select nombre,ap_paterno, initcap(concat(nombre,' ',ap_paterno)) as "Nombre --devuelve el resto de dividir x con respecto a y
completo" select mod(11,2);
from docentes --muestra los salarios de los docentes redondeando el valor hacia abajo y arriba
where codigo_doc=112; select nombre,ap_paterno,salario, floor(salario) as abajo, ceiling(salario) as arriba
from docentes;
--convierte las primeras letras de la frase en mayusculas --funciones con fechas
select current_date;
select initcap('la paz - bolivia') as "Ciudad Pais" --hora actual
select current_time;
--muestra solo los 6 primeros caracteres de los nombres de las materias --fecha hora
select substring(nombre,1,6) as titulo select current_timestamp;
from materias; --funciones con fechas
--muestra los nombres de los docentes y en mayusculas el apellido paterno --retorna año 2009
select nombre, upper(ap_paterno) as "Apellido Paterno" select extract(year from timestamp'2009-12-31 12:25:50');
from docentes; --retorna mes
---muestra todos los nombres de las materias rellenando con el caracter * a la derecha select extract(month from timestamp'2009-12-31 12:25:50');
select rpad(nombre,30,'*') as "relleno*" --retorna dia
from materias; select extract(day from timestamp'2009-12-31 12:25:50');
--retorna hora
--imprime todas las direcciones que contienen la cadena 'El' en alguna parte de las select extract(hour from timestamp'2009-12-31 12:25:50');
direcciones --retorna minuto
select * select extract(minute from timestamp'2009-12-31 12:25:50');
from docentes select extract(second from timestamp'2009-12-31 12:25:50');
where position('El' in direccion)>0;
--imprime todas las especialidades que tienen 10 o mas carateres select extract(century from timestamp'2009-12-31 12:25:50');
select *
from docentes --funciones con la BD
where char_length(especialidad)>=10; --lista materias que iniciaron el año 2021
select nombre,duracion,aula,fecha_ini as "fecha de inicio"
---funciones matematicas from materias
--valor absoluto where extract (year from fecha_ini)=2021
select abs(-20); --listar nombres de docentes que iniciaron en mayo del 2021
--raiz cubica select d.nombre,ap_paterno,ap_materno,fecha_ini as "fecha de inicio"
select cbrt(27); from docentes as d inner join materias as m on d.codigo_doc=m.codigo_doc
--redondeo hacia arriba where extract(year from m.fecha_ini)=2021 and extract(month from m.fecha_ini)=5
select ceiling(12.34);
--redondea hacia abajo ---funciones sql
select floor(12.34); create or replace function sumar(integer,integer) returns integer
--retorna el valor de x elevado a la y--potencia---- as
select power(2,3); 'select $1+$2;'
---rdondeo a valor cercano o proximo language sql;
select round(10.4);
--retorna valores positivos en caso de postivo y -1 si es negativo --luego llamamos la funcion
select sign(-23.4); select sumar(3,7);
--raiza cuadrada
--ejemplo con la BD ( nro_cuenta bigint primary key,
create or replace function dia(date) returns varchar(16) estado varchar(10),
as tipocliente char(1)
'select )inherits(personas)--herencia--
case when to_char($1,''dy'')=''mon'' then ''lunes''
when to_char($1,''dy'')=''tue'' then ''martes'' create table funcionarios
when to_char($1,''dy'')=''wed'' then ''miercoles'' (cargo varchar(25)primary key,
when to_char($1,''dy'')=''thu'' then ''jueves'' departamento varchar(25),
when to_char($1,''dy'')=''fri'' then ''viernes'' fecha_ing date
when to_char($1,''dy'')=''sat'' then ''sabado'' )inherits(personas);
else ''domingo''
end;' ---ingresso de datos de clientes--
language sql; insert into clientes
--llamando a la funcion (numero,nombres,apellidos,direccion,telefono,fecha_nacim,nro_cuenta,estado,tipoclien
select dia(fecha_ini) as "dia de inicio", * from materias; te)
values
---funciones sql (3006001,'gladys','Villa','AV.Peru 5040','+569123123',null,900100,'A','V'),
--funcion resta (3006002,'Raul','Lopez','AV.Camacho 4500','+56955555',null,900200,'A','V');
create or replace function resta(integer,integer) returns integer
as --- ingreso de datos de personas
'select $1-$2;' insert into personas
language sql; (numero,nombres, apellidos, direccion, telefono, fecha_nacim)
values
--luego llamamos a la funcion resta (3006011,'Ely','Nina','San Pedro','454545','2000-01-01');
select resta(3,7); ---
select * from clientes;
---funciones producto select * from personas;
create or replace function producto(integer,integer) returns integer select * from funcionarios;
as
'select $1*$2;' --ingerso de datos de funcionarios
language sql; insert into funcionarios
(numero,nombres, apellidos, direccion, telefono, fecha_nacim,cargo,
--luego llamamos la funcion producto departamento,fecha_ing)
select producto(3,7); values
('contador','La Paz','2020-01-01');
----*****--------
create table personas --- tamaño de BD que ocupa en disco--
(numero serial not null primary key, select pg_size_pretty(pg_database_size('ejemplo3'));
nombres varchar(50),
apellidos varchar(50), ---tamaño de la tabla personas --
direccion varchar(200), select pg_size_pretty(pg_relation_size('personas'));
telefono varchar(20),
fecha_nacim date ---tamano mediante indices
); select pg_size_pretty(pg_total_relation_size('docente

create table clientes ***************

También podría gustarte