Posgress Flashcards
Cuales son algunas de las caracteristicas de posgress
Es un ORDBMS crossplataform
Soporta ACID(Atomocitym Consistency, Isolation, Durability)
Soporta indices, vistas, triggers, procedures, functions
Cuales son los limites que tiene postgres
Es gratis y opensouce pero tiene mucha capacidad:
- Tamaño maximo de DB: ilimitado
- Tamaño maximo de tabla: 32TB
- Tamaño maximo de fila: 1.6TB
- Tamaño maximo de campo: 1GB
- Maximo de filas por tabla: Ilimitado
- Maximo de columnas por tabla: 250-1600(dependiendo del tipo)
- Maximo de indices por tabla: Ilimitado
Como se pone una condicion sobre una operacion de agupacion en SQL
Si se tiene una operacion de agregacion y queremos tener una condicion sobre esta, no podemos usar WHERE, debemos usar la clausula HAVING, lo que se quiere decir es que se puede tener where en la parte general de la sentencia, pero en el groupby por ejemplo la condicion es por medio de HAVING, ejemplo:
select first_name, count(first_name)
from actor
where actor_id between 100 and 200
group by first_name
having count(first_name)>1;
Cual es la estructura semanticamente correcta de un query
- SELECT
- FROM
- WHERE
- GROUPBY
- HAVING
- ORDER BY
Los que son necesarios son select y from, de ahi puede haber varias combinaciones ejemplo
select * from x where ..
select * from x where … orderBy x
select * from x where … groupBy x
select * from x where … groupBy x having x
select * from x where … groupBy x having x order by x
Describe un inner join
Un inner join es el resultado de una condicion dada entre dos tablas, excluyendo todos aquellos que no cumplan la condicion
Por ejemplo si quisieramos saber los estudiantes que estan enrolados en que clase(s)
select firstName, className from Student_class sc
inner join student st on st.idStudent=sc.student
inner join class cl on cl.idClass=sc.idClass
Describe left outer join
Depende de una condicion y el resultado va a ser esa condicion mas lo que esta en la tabla del lado izquiero, si la condicion no se cumple mandara un null
Ejemplo, todos los estudiantes que no se inscribieron a ninguna clase, queremos los nombres de los estudiantes que no tengan ninguna clase asignada
select st.firstName from Student st
LEFT JOIN student_class sc on sc.id=st.id
where sc.idclass is null
En este caso queremos que nos de los resultado en donde el id de clase es null es decir omitimos el join y solo nos quedamos con lo que esta del lado izquierdo
Describe right outer join
regresa todo el resultado de la tabla derecha mas lo que matchea dada una condicion,
Ejemplo quiero todas las clases que no tienen alumnos
Select st,firstName, cl.className
from Strudent st
RIGHT JOIN student_class sc on st.idstudent= sc.idstudent
RIGHT JOIN class cl on cl.idclass=sc.idclass
where idstudent is null
Describe el cross join
Cross join es la union cartesiana entre dos tablas y no requere cumplir ninguna condicion, es decir que el resultado va a ser la multiplicacion de los records en tabla1 por el numero de records en tabla2, asi si en tabla1 tenemos 3 y en tabla2 tenemos 4, el resultado sera 4x3=12
Ejemplo
select st.firstName,cl.className from class cl CROSS JOIN student st;
Describe el full outer join
Es la combinacion entre el left y right join, es decir tomaremos lo de la derecha y lo de la izquierda a igual que lo que los une dada una condicion
Por ejemplo si queremos saber todos los estudiantes con curso, los estudiantes sin cursos y las materias sin alumnos asignados en un solo resultado
select firstName, cl.className from Student st FULL JOIN StudentClass sc on st.id=sc.id FULL JOIN class cl on ci.idstudent=cl.idstudent;