Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

Curso Pr谩ctico de SQL

Curso Pr谩ctico de SQL

Israel V谩zquez Morales

Israel V谩zquez Morales

Origen (FROM)

5/29
Recursos

Aportes 56

Preguntas 11

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Con SELECT se especifica que columnas queremos obtener de una tabla determinada y con FROM se indica de donde se va a obtener la informaci贸n que se va proyectar con SELECT. FROM va despu茅s de SELECT

SELECT *
FROM base_de_datos.tabla

En la sentencia anterior el manejador de base de datos (DBMS) va al esquema y proyecta lo solicitado.


Las sentencias SQL no son sensibles a min煤sculas o may煤sculas pero se recomienda escribir las palabras claves en MA脻USCULAS y el resto en min煤sculas

JOIN es un complemento de FROM.

Tambi茅n se puede obtener la informaci贸n de una base de datos remota, es decir que el esquema de donde que queremos obtener informaci贸n se encuentra en otro DBMS.


Para obtener informaci贸n de una tabla que se encuentra remotamente se utiliza la funci贸n dblink, dicha funci贸n recibe dos par谩metros:

  1. configuraci贸n de conexi贸n al DBMS remoto
  2. consulta SQL


Ejemplo de dblink

SELECT *
FROM dblink('
	dbname=somedb
	port=5432 host=someserver
	user=someuser
	password=somepwd',
	'SELECT gid, area, parimeter,
			state, country,
			tract, blockgroup,
			block, the_geom
	FROM massgis.cens2000blocks')
	AS blockgroups

Aqu铆 el uso de JOIN de las tablas que se nos proporcion贸, por medio del ID de la carrera

C煤ales son las TOP 10 carreras con mayor cantidad de alumnos que aun siguen vigentes?

SELECT carrera, count(alumnos.id) as "Total de alumnos", vigente
FROM platzi.alumnos 
	JOIN platzi.carreras as carr
		ON platzi.alumnos.carrera_id = carr.id
WHERE vigente = true
GROUP BY carrera, vigente
ORDER BY "Total de alumnos" DESC
LIMIT 10

Mis notas personales sobre FROM:

Para que se haga m谩s f谩cil el entendimiento de esta clase y curso, recomiendo mil empezar con el curso de Fundamentos de Base de Datos, que lo dicta este mismo profesor y lo explica super incre铆ble 馃槉

El curso se viene con todo!

FROM (va despu茅s del select)

Le indicas el nombre de la tabla que va a ser tu fuente de datos y de ah铆 recoger谩 los datos para el resto de la sentencia.

Se le puede poner un alias, como en SELECT, te ahorra mucho tiempo.

Con JOIN podemos indicar relaciones entre diferentes tablas, es un complemento al from, nos ayuda a generar una tabla m谩s completa en la que poder hacer consultas. 驴?No s茅 como explicarlo

Tambien podemos hacer un FROM a una base de datos externa, ejecutar comandos y que te devuelva el resultado en tu base de datos. (Super potente)

Las cl谩usulas SELECT, que especifica las columnas o expresiones que vamos a recuperar, y FROM , que indica la tabla de la que se recuperan, son obligatorias.

Las sentencias SQL no son sensibles a may煤sculas o min煤sculas pero se recomienda escribir las palabras clave en may煤sculas y el resto en min煤sculas.
Fuente: https://cambrico.net/sql-y-plsql-de-oracle-con-ejemplos-practicos/consultas-sql-sentencia-select

Buen d铆a a todos,

En SQL Server tambi茅n podemos consultar en diferentes BD cuando est谩n en el mismo servidor as铆:

SELECT b1.columna ,b2.columa FROM base1..table AS bd1 INNER JOIN base2..table AS b2 ON bd1.campo = b2.campo

Con eso podemos hacer el JOIN entre dos BD que est茅n en el mismo servidor, aclarando que lo expuesto anteriormente es diferente de dblink.

todos los profesores deber铆an de aprender de 茅l, me gusta que antes de irse al c贸digo muestra con diapositivas y gr谩ficamente las bases, para que estando en el c贸digo se digiera m谩s f谩cil las pr谩cticas

Para los que desean alguna a puntes buenasos aquie les comparto los apuntes de majo

5. Origen (FROM)

  • Desde
  • De donde voy a obtener la informaci贸n
SELECT * -- Select m谩s b谩sico
FROM tabla_diaria; -- Indicarle la tabla

SELECT * -- Select m谩s b谩sico
FROM tabla_diaria AS td -- Indicarle la tabla
		JOIN tabla_mensual AS tm -- Forma en la cual se hacen las uniones
		ON td.pk = tm.fk;

SELECT *
FROM dblink('
	dbname=somedb
	port=5432 host=someserver
	user=someuser
	password=somepwd',
	'SELECT gid, area, perimeter,
					state, county,
					tract, blockgroup,
					block, the_geom
	FROM massgis.cens200blocks')
	AS blockgroups

Esto no parece curso pr谩ctico. No hay interactividad. Estoy decepcionado. Se le comprende m谩s a los Estudiantes.
Mejor me hubiero puesto a ver videos de Youtube.

Este profe est谩 muy cabr贸n! Es buen铆simo. Vengo de su curso de fundamentos y tambi茅n estuvo genial. Esto promete 馃槃

Parceeeeee, estall贸 mi cabeza al conocer el DBLINK, siento que me acaban de mostrar que existe el juego JAJAJAJ

Super eso de DBLINK me intereso mucho
SELECT *
FROM dblink(鈥
dbname=somedb
port=5432 host=someserver
user=someuser
password=somepwd鈥,
鈥楽ELECT gid, area, parimeter,
state, country,
tract, blockgroup,
block, the_geom
FROM massgis.cens2000blocks鈥)
AS blockgroups

El DBLINK, nos permite enlazar datos, que se encuentran en diferentes bases de datos.

Israel debi贸 de dar el curso de inicio de postgres, sin desmeritar al otro educador definitivamente la metodolog铆a de Israel es bastante simple pero muy efectiva.

**Origen: ** De donde se obtienen los datos. Lo m谩s b谩sico es poner el nombre de la tabla en s铆 como un origen.

La DBMS va a nuestro esquema y busca la tabla puesta.<
Complejidad: Al origen podemos darle un ALIAS, usualmente las iniciales de tu tabla.

Join: Podemos usar el Join para poder relacionar 2 tablas y sacar datos en conjunto en base a campos en com煤n.

Nuestro origen tambien puede darse desde otra base de datos, para ello usaremos la funci贸n dblink, con los parametros correctos.

Me vol贸 la cabeza el dblink D:

Un ejemplo de como yo uso las bases de datos. Manejo un sistema con bases de datos, y la plataforma genera reportes csv, hay una tabla que tiene como columna un titulo, resulta que al generar el reporte, no arroja el csv y esto por que en una fila de una columna o un registro, se guardo mal, y el error del sistema me aparecia que no pod铆a obtener un t铆tulo. Asi que, haciendo un an谩lisis de donde podria encontrarse ese dato, ya localizado, pude borrar ese registro. Al final, obtuve el reporte de 5 a帽os en un csv.

3. ORIGEN DE LA INFORMACI脫N (From)

- SELECT *

FROM tabla_diaria; Con este comando se seleccionar谩n todas las columnas de la tabla llamada 鈥渢abla_diaria鈥
- SELECT *
FROM tabla_diaria AS td 鈥> Selecciona la tabla indicada y le da el alias de "td"
JOIN tabla_mensual AS tm 鈥> Relaciona la tabla diaria con la tabla mensual y la renombre con el alias "tm"
ON 鈥渢dpk鈥 = 鈥渢mfk鈥; 鈥> Relaciona la llave principal 鈥.pk鈥 (primary key) con la llave for谩nea 鈥.fk鈥 (foranean key).
- SELECT *
FROM dblink(鈥
dbname=somedb
port=5432 host=someserver
user=someuser
password=somepwd鈥 ,
鈥 SELECT gid, area, perimeter, state, county,
tract, nlockgroup, block, the_geom
FROM massgis.cens2000nlocks鈥)
AS blockgroups
Se utiliza el from para tomar la informaci贸n de una tabla remota (la cual no est谩 en nuestro cl煤ster), posteriormente (despu茅s de la coma) traemos lo que necesitamos de esa tabla y finalmente la llamamos con el alias de 鈥渂lockgroups鈥.

Alias Tabla

SELECT AL.nombre,
	       AL.apellido,
	       AL.colegiatura
   FROM PRUEBAS.ALUMNOS AL;  

Union dos tablas

SELECT *
   FROM PRUEBAS.ALUMNOS AL JOIN PRUEBAS.CARRERAS CA 
     					                    ON AL.CARRERA_ID = CA.ID; 

Conexion a tabla en una base de datos remota

SELECT *
  FROM dblink('dbname=somedb
               port=5432
               host=someserver
               user=someuser
               password=somepwd',
               'SELECT gid, 
                       area, 
                       parimeter,
                       state, 
                       country,
                       tract, 
                       blockgroup,
                       block, 
                       the_geom
                  FROM massgis.cens2000blocks'
  ) AS blockgroups

Basicamente FROM indica de d贸nde se deben traer los datos y puede ayudar a hacer sentencias y filtros complejos cuando se quieren unir tablas. La sentencia compa帽era que nos ayuda con este proceso es JOIN.

Practicando鈥

*CONCAT: Concatena (une) las columnas.
*AS: Alias que se puede dar a una tabla o a una columna.
*ORDER BY 1: Ordena el resultado por la primera columna, en este caso, id_carrera.

*Para **seleccionar** una tabla se **utiliza** la propiedad* **SELECT** ***seguido** de **\**** 鈥渁sterisco鈥 *para **seleccionar** **todos** los elementos **dentro** de la tabla o **seguido** del **nombre** del campo a **seleccionar**, **seguido** de la propiedad* **FROM***, **seguido** del **nombre** de la tabla de **donde** se va a **realizar** la consulta.* `/*` `Syntax` `SELECT * fieldName, fieldName` `FROM tableName;` `*/` `SELECT *` `FROM posts;` `SELECT title, publicationDate, status` `FROM posts;` *Para **cambiarle** el **nombre** de un campo en el* Output *o resultado de un queries, **despu茅s** del **nombre** se **utiliza** la propiedad* **AS***, **seguido** del **nuevo** **nombre** que sera visible en el* Output *o resultado del queries.* *A estos **nombres** se les **conoce** como alias.* `/*` `Syntax` `SELECT fieldName AS aliasName` `FROM tableName;` `*/` `SELECT title AS titulo, publicationDate AS fechaDePublicacion, status AS estado` `FROM posts;`

Es cierto que los dblink pueden acarrear problemas con la seguridad de la informaci贸n?

En ORACLE muchas veces el AS da problemas, sobre todo a la hora de renombrar columnas. Normalmente en ORACLE los alias de las columnas se renombran dejando un espacio luego del nombre real, esto a veces trae confusi贸n, porque a la hora de usar sentencias GROUP BY, al no ver los AS muchas ves uno copia y pega los campos sin darse cuenta de los alias.

SELECT *
FROM tabla_diaria AS td
   JOIN tabla_mensual AS tm
   ON td.pk = tm.fk;

  • SELECT *: This part of the query tells the database to fetch all columns from the result set that will be produced by the query.

  • FROM tabla_diaria AS td: This part specifies the first table that will be queried, which is named tabla_diaria. It is aliased as td, which means that in the rest of the query you can refer to this table using the short name td instead of the full name tabla_diaria.

  • JOIN tabla_mensual AS tm: This part specifies that a JOIN operation should be performed with another table named tabla_mensual. This table is aliased as tm.

  • ON td. pk = tm. fk: This is the join condition. It specifies that the JOIN should be made where the value in the pk column from the tabla_diaria table (referred to using its alias td) matches the value in the fk column in the tabla_mensual table (referred to using its alias tm).

  • Overall, this query performs an inner join between tabla_diaria and tabla_mensual on the condition that tabla_diaria.pk is equal to tabla_mensual.fk. The result set will include all columns from both tables where the join condition is met.

SELECT *
FROM dblink('
   dbname=somedb
   port=5432 host=someserver
   user=someuser
   password=somepwd',
  'SELECT gid, area, perimeter, 
                  state, country, 
                  tract, blockgroup,
                  block, the_geom
   FROM massgis.cons200blocks')
AS blockgroups

  • SELECT *: Similar to the first query, this part tells the database to fetch all columns from the result set that will be produced by the query.

  • FROM dblink(鈥) : This specifies that the data should be fetched from a remote database using the dblink function. The dblink function is specific to PostgreSQL and allows you to connect to other PostgreSQL databases.

  • Inside the dblink function, the first parameter is a connection string with the information required to connect to the remote database. This includes the database name (dbname), port number (port), host address (host), username (user), and password (password).

  • The second parameter inside the dblink function is the actual SQL query string that will be executed on the remote database. It selects columns gid, area, perimeter, state, country, tract, blockgroup, block, the_geom from the table massgis.cons200blocks.

  • AS blockgroups: This part aliases the result set as blockgroups.

Overall, this second query connects to a remote PostgreSQL database, executes a query to fetch specific columns from a table in that database, and returns the results as a local result set named blockgroups.

Les comparto lo hecho con la explicacion de la clase

-- CREATE EXTENSION dblink;
SELECT *
FROM dblink ('dbname=METRO_CDMED
			 port=5432
			 host=127.0.0.1
			 user=davidev
			 password=0803',
			 	'SELECT id, nombre, apellido, numero_tarjeta FROM pasajero')
AS dotos_remotos_tb_pasajero(id integer, nombre character varying, apellido character varying, numero_tarjeta character varying);

Select Nos trae las columnas pero requerimos darle el origen de donde las extraer谩, es ah铆 donde entra from 鈫 Va directamente despu茅s del select

SELECT * 
from tabla_nombre; 

-- Le estoy diciendo selecciona todas las columnas de determinada tabla.

SELECT * 
FROM tabla_diaria AS td  /Podemos asignar 谩lias en from para usarlo en otras consultas.
	JOIN Tabla_mensual AS tm /relaci贸n entre tablas
	ON td.pk = tm.fk; /aqu铆 podenemos los 谩lias de las tablas 

Entidades 鈫 Tablas

Relaciones 鈫 uni贸n entre tablas

JOIN es la forma que hacemos la relaci贸n o uni贸n entre tablas.

Uso de JOIN

Mis apuntes:

SELECT * FROM platzi.alumnos AS A
JOIN platzi.carreras AS C
ON A.id = C.id;

Notas 馃槃

Origen (FROM)

  • Es necesario indicar de donde vamos a obtener los datos (de que tabla) 馃彄.

  • Ejemplo mas sencillo SELECT * FROM tabla_ejemplo;, lo que hace el manejador es buscar la tabla en espec铆fico.

  • Puede hacerse muy complejo:

    SELECT *
    FROM tabla_diaria AS td # Se pueden usar alias tambi茅n
    	JOIN tabla_mensual AS tm # Estamos uniendo dos tablas!
    	ON td.pk = tm.fk # Es necesario indicar la relaci贸n
    
  • Se pueden obtener datos desde una base de datos for谩neos:

    SELECT * 
    FROM dblink('
    	dbname=somedb
    	port=1234 host=someserver
    	user=someuser
    	password=somepwd',
    	'SELECT column1, column2
    	FROM tabla.bloque')
    AS nombre_cool
    

Los 10 primeros alumnos que ser incorporaron al inicio del 2020 con el nombre de su carrera.

Siempre cuando usen sentencias eviten usar el SELECT * ya que no es tan eficiente, y algunos motores de base de datos tienen editores que te ayudan a hacer las querys, solo debes entender los conceptos para saber que es lo que realmente estas haciendo. Ejemplo practico en MYSQL workbench sobre una tabla le das click derecho y ya te permite seleccionar los primeros 2000

FROM = Tabla a la que estas consultando

Esta muy buena la explicaci贸n, yo solo le agregar铆a las tablas , y de esta forma se podr铆a ver que datos se est谩n tomando de estas tablas y como se renombran.

exelente

Mi consulta usando Join y utilice Order by, para poder ordenarlos por carrera

En el curso de postgresql usamos dblink. Se agrega como una extensi贸n (o dependencia) a postgres

FROM indica de d贸nde se deben traer los datos y puede ayudar a hacer sentencias y filtros complejos cuando se quieren unir tablas. La sentencia compa帽era que nos ayuda con este proceso es JOIN.

Aprend铆 esto en el video anterior:
SELECT IIF(1<10,鈥榶es鈥,鈥榥o鈥);

Contarme a una base de datos externa es la raz贸n por la que estoy tomando el curso =)

DBLINK, como unir una tabla con otra tabla foranea que no este en nuestro servidor.

Me hubiera gustado ver las sentencias en 谩lgebra relacional para notar la sintaxis.

Origen (FROM)

  • Especifica desde qu茅 tabla se tomar谩 la informaci贸n
  • Se pueden usar alias y JOIN
  • dblink(): utilizando esta funci贸n puedo extraer informaci贸n de una tabla que no pertenezca a la base de datos local

Muy clara la explicaci贸n

el from es para indicar el nombre de la tabla de donde sacaremos la informacion

Hola compa帽er@s, realice una FUNCI脫N en SQL que retorna la cantidad de estudiantes que existen dependiendo del id de cada carrera en el ejemplo que di le paso el id numero 10 y este id pertenece a la carrera de Econom铆a en la cual como resultado con la funci贸n obtenemos que hay o hubo 15 estudiantes en dicha carrera adjunto imagenes con el codigo y el output:

CREACION DE LA FUNCION:

EJECUCION DE LA FUNCION EJEMPLIFICADA:

Mi aporte:

SELECT CONCAT_WS(" ", a.nombre, a.apellido) AS 'Nombre Completo', c.carrera
FROM alumnos as a
INNER JOIN carreras as c
 on a.carrera_id = c.id;

Resultado:

Interesante del versatilidad que tiene el select al poder mostrar informaci贸n hasta de un diferente dbms.