Curso de PostgreSQL

Curso de PostgreSQL

Oswaldo Rodríguez González

Oswaldo Rodríguez González

Comandos más utilizados en PostgreSQL

7/32

Lectura

La Consola

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 89

Preguntas 13

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Resumen de la clase

SELECT VERSION();
    PostgreSQL 11.6 (Ubuntu 11.6-1.pgdg18.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0, 64-bit
\h -- ayuda
\h comnado -- ayuda del comando especifico
\l -- Listar las bases
\c base de datos --moverse a una base de datos especifica
\dt -- listar las tablas de la base actual
\dn -- listar los esquemas de la base actual
\dv -- listar las vistas
\df -- listar las funciones
\du -- listar los usuarios
\g -- ejecutar ultimo comando 
\s -- historial de comandos
\l nombrearchivo --guardar lista de comandos
\i nombre archivo -- ejecuta comandos guardados
\e -- abrir editor 
\ef -- editor de funciones
\timming -- activar o desactivar el tiempo de respusta de las consultas
\q cerra consola
CREATE DATABASE base; -- crea base
CREATE TABLE tabla (columnas); crea tabla
INSERT INTO tabla(columna) VALUES('dato');
SELECT * FROM tabla;
UPDATE tabla SET cammpo = dato WHERE condicion;
DELETE FROM tabla WHERE condicion;

Me encanto este resumen. Todos los cursos deberían implementar esta practica.

Para quienes usan PostgreSQL 12 en Windows 10, el comando para limpiar pantalla es

\! cls

Les comparto una tabla con algunos otros comandos útiles en Postgres:

.

Algo importante es siempre hacer un select where antes de un delete ya que si no podrias elimitar toda tu tabla o base de datos;

Esto me esta gustando (• ◡ •)/

Creo que esta clase debería estar al comienzo antes de entrar a la consola y luego que el profesor la explicara como lo hizo en clase numero 4 😃

Ya que vimos la instrucción “DELETE” e incluso se había mencionado que es muy peligrosa, les comparto esta canción: No te olvides de poner el where en el delete from

Podemos usar el comando de MD5 para encriptar los password de los usuarios desde la BD o mejor hacerlo en el backend?

Alguien sabe cómo puedo instalar el historial o sabe por qué no me deja?

Tremenda guía para practicar de inicio 💥

Excelente, siento cómo atravieso el Nirvana

estoy investigando un poco del tipo SERIAL, y dice que no es necesario especificar NOT NULL, porque automáticamente pondrá un valor.

postgres=# create database transporte;
CREATE DATABASE
postgres=# \c transporte;
Ahora está conectado a la base de datos «transporte» con el usuario «postgres».
transporte=# CREATE TABLE tren(id serial not null, modelo character varying,
transporte(# capacidad integer, CONSTRAINT tren_pkey PRIMARY KEY (id));
CREATE TABLE
transporte=# \d tren;
Tabla ½public.tren╗
Columna | Tipo | Ordenamiento | Nulable | Por omisi¾n
-----------±------------------±-------------±---------±---------------------------------
id | integer | | not null | nextval(‘tren_id_seq’::regclass)
modelo | character varying | | |
capacidad | integer | | |
═ndices:
“tren_pkey” PRIMARY KEY, btree (id)
transporte=# INSERT INTO tren( modelo, capacidad) values (‘Volvo 1’, 100);
INSERT 0 1
transporte=# SELECT * FROM tren
transporte-# ;
id | modelo | capacidad
----±--------±----------
1 | Volvo 1 | 100
(1 fila)

transporte=# UPDATE tren SET modelo = ‘Honda 0726’ WHERE id = 1;
UPDATE 1
transporte=# SELCT * from tren;
ERROR: error de sintaxis en o cerca de «SELCT»
LÍNEA 1: SELCT * from tren;
^
transporte=# SELECT * FROM tren;
id | modelo | capacidad
----±-----------±----------
1 | Honda 0726 | 100
(1 fila)

transporte=# DELETE FROM tren WHERE id = 1;
DELETE 1
transporte=# SELECT * FROM tren;
id | modelo | capacidad
----±-------±----------
(0 filas)

transporte=# \timing
El despliegue de duración está activado.
transporte=# SELECT MD5(’ Vamos a encriptar un texto como el que lees’);md5
md5

427483ece10604d7ae228b8b8117c5ea
(1 fila)
Duración: 14,484 ms

ctrl + L para quienes borrar su consola en fedora :3

El mio no se demoró demasidado
Time: 0.303 ms

\c nombreDataBase para cambiar de base de datos

En la universidad vi un curso de PostgreSQL pero no fue tan detallado, a penas en la septima clase es bastante información nueva para mí

Para los usuarios de Windows.

En aras de evitar el (molesto) aviso de que la página de código de caracteres no corresponde porque para Postgres es 850, y el sistema está en 1252, hagan lo siguiente:

  • Entren en la cónsola de comandos (CMD) en modo administrador.

  • En el caso que hayan instalado el Postgres en las carpetas por defecto, escriban:
    cd C:\Program Files\PostgreSQL\14\scripts
    El comando los lleva a la carpeta 'scripts.

  • Puesto allí, encontrarán un archivo llamado ‘runpsql.bat’, lo vamos a editar, pero antes, haremos un respaldo por si acaso echamos a perder algo, lo copiaremos en la misma carpeta con otro nombre:
    copy runpsql.bat runpsql2.bat
    Obtendremos otro archivo, con el mismo contenido y el mismo nombre, salvo un ‘2’ al final de este.

  • Procedemos a abrir el archivo ‘runpsql.bat’ con algún editor, por ejemplo:
    notepad runpsql.bat

  • Al final del archivo veremos:
    """""""
    for /f “delims=” %%a in (‘chcp ^|find /c “932”’) do @ SET CLIENTENCODING_JP=%%a
    if “%CLIENTENCODING_JP%”“1” SET PGCLIENTENCODING=SJIS
    if “%CLIENTENCODING_JP%”
    “1” SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "

    REM Run psql
    "C:\Program Files\PostgreSQL\14\bin\psql.exe" -h %server% -U %username% -d %database% -p %port%

    pause
    """""""

    Al cual le añadimos un comando chpc de este modo:
    """""""
    for /f “delims=” %%a in (‘chcp ^|find /c “932”’) do @ SET CLIENTENCODING_JP=%%a
    if “%CLIENTENCODING_JP%”“1” SET PGCLIENTENCODING=SJIS
    if “%CLIENTENCODING_JP%”
    “1” SET /P PGCLIENTENCODING="Client Encoding [%PGCLIENTENCODING%]: "

    cmd.exe /c chcp 1252

    REM Run psql
    "C:\Program Files\PostgreSQL\14\bin\psql.exe" -h %server% -U %username% -d %database% -p %port%

    pause
    """""""
    Noten que ahora hay una línea con ‘cmd.exe /c chcp 1252’

  • Guarden el archivo, y abran su cónsola de Postgres, sí todo sale bien, ya no tendrán el odioso mensaje de los caracteres, y todas las salidas a pantallas estarán correctamente formadas con los caracteres que son.

\! cls

Para limpiar la psql

s1.sql



-- \timing

CREATE TABLE IF NOT EXISTS train(
    id_train serial NOT NULL,
    model character varying,
    capacity integer,
    CONSTRAINT train_pk PRIMARY KEY (id_train)
);

INSERT INTO train(model, capacity)
VALUES(
    'Volvo 1',
    100
);


SELECT * FROM train;


UPDATE train
SET
    model = 'Honda 0762'
WHERE
    id_train = 1;


SELECT * FROM train;

DELETE FROM train
WHERE
    id_train = 1;

La consulta del MD5 tardó demasiado en el texto de arriba D:

A mí solo me dio 0.978 ms

Para limpiar la consola si les da toc como a mí:
! cls

y para hacer el backslash rápidamente AltGr + ?

Para ser honesto al principio no me gustó tanta teoría, pero ya ejecutando los comandos me empezó a gustar

Duración : 0.483 ms

de one vamo a darle

excelente resumen

Que no se les olvide el punto y coma, ya me reí varias veces jajaja XD
* Aunque se puede definir la primary key al indicio, acá lo hace al final con `CONSTRAINT tren_Pket PRIMARY KEY ('nombre del camo')`, según lo que entendí la palabra reservaba `CONSTRAINT`, es para cuando se tiene una clave primaria compuesta, en dentro del paréntesis se coloca los campos de la clave primaria compuesta. * Además, para que se agregue automáticamente el número del id lo hace con el comando `serial not null`, (sería solo `serial`, el `not null` es para obligar a que si o si el campo tenga un valor), mientras que en MySQL era con `auto_increment`. * la definición del tipo de dato para un texto, aunque igual funciona con `VARCHAR (80)`, acá lo hace con `CHARACTER VARYING` supongo que es para que acepte combinación de letras y números.
En Mac, para limpiar la terminal es con los comandos `\! clear` o `\! cls`
Me encanta este resumen de comandos!
A mi me sale error de syntaxis cuando quiero crear los parámetros de la tabla, alguien me puede ayudar? ![](https://static.platzi.com/media/user_upload/Captura%20de%20Pantalla%202024-03-13%20a%20la%28s%29%2016.26.43-cda50497-2bc7-4450-a7db-d87f784acb8c.jpg)

Recuerda que algunos comandos pueden requerir privilegios específicos, así que asegúrate de tener los permisos necesarios para ejecutar ciertas operaciones.

Time: 0.277 ms EZ PAPUS
el inicio de las bases de datos se cometían muchos errores con los nombres de las BD, lo que impedía la conexión a éstas, fue por eso que se estandarizó el uso de las minúsculas

La consulta del MD5

SELECT MD5('Vamos a encriptar un texto como el que lees');

en mi caso, tuvo una duración de 0,439 ms

Excelente resumen y excelentes ejemplos para practicar

Muy buen resumen y ejercicio para practicar! Sería bueno colocar este tipo de clases con frecuencia para ir asegurando los conceptos.

me estaba confundiendo bastante con los comandos de postgres, pero ya en esta lección vi que el curso de fundamentos de bases de datos es crucial y me esta permitiendo entender bastante.

Me encantó el comando \e que permite escribir en texto todos los comandos y ejecutarlos en lote a todos juntos. Es muy útil para modificar, agregar registros o literalmente lo que sea que quieras hacer, en cualquier momento que recuerdes o quieras hacerlo aunque no estés conectado… o sea, es claro que no se ejecutará hasta que lo estés, pero el trabajo “duro” ya podrías tenerlo hecho de antemano.

Mi encriptación solo demoro: 0.529 ms

Muy buen resumen de los comandos. El ejemplo claro y conciso!

Hecho

Consultas en la base de datos usando la consola

  • CREATE DATABASE
  • CREATE TABLE tren (id serial not null, modelo character varying, capacidad interger, CONSTRAINT tren_pkey PRIMARY KEY (id) );
  • \d tren: permite ver la definición de la tabla tren.
  • \d tren_id_seq : permite ver la definición de la secuencia cuando se crea un campo predeterminado asociado a id.
  • INSERT INTO tren(modelo, capacidad ) VALUES (’Volvo 1’, 100); Inserta los datos Volvo 1 y 100 en los campos modelo y capacidad, respectivamente, de la tabla tren.
  • SELECT * FROM tren; Consulta todos los datos de la tabla tren.
  • UPDATE tren SET modelo = ‘Honda 0726’ WHERE id=1; Modifica el valor que se encuentra en el campo modelo de la tabla tren cuyo id sea = 1.
  • DELETE FROM tren WHERE id = 1; Borra la fila de la tabla tren cuyo id sea = 1.
  • Para verificar que los cambios han sido ejecutados, se utiliza: SELECT * FROM tren;

Comandos de navegación y consulta de información

  • \c Saltar entre bases de datos

  • \l Listar base de datos disponibles

  • \dt Listar las tablas de la base de datos

  • \d <nombre_tabla> Describir una tabla

  • \dn Listar los esquemas de la base de datos actual

  • \df Listar las funciones disponibles de la base de datos actual

  • \dv Listar las vistas de la base de datos actual

  • \du Listar los usuarios y sus roles de la base de datos actual

Comandos de inspección y ejecución

  • \g Volver a ejecutar el comando ejecutando justo antes

  • \s Ver el historial de comandos ejecutados

  • \s <nombre_archivo> Si se quiere guardar la lista de comandos ejecutados en un archivo de texto plano

  • \i <nombre_archivo> Ejecutar los comandos desde un archivo

  • \e Permite abrir un editor de texto plano, escribir comandos y ejecutar en lote. \e abre el editor de texto, escribir allí todos los comandos, luego guardar los cambios y cerrar, al cerrar se ejecutarán todos los comandos guardados.

  • \ef Equivalente al comando anterior, pero permite editar también funciones en PostgreSQL

Comandos para debug y optimización

  • \timing Activar / Desactivar el contador de tiempo por consulta

Comandos para cerrar la consola

  • \q Cerrar la consola

lenteja

Información resumida de esta clase
#EstudiantesDePlatzi

  • Después de emitir un comando PostgreSQL, el servidor nos dará un comentario sobre la información que le pedimos

  • Con el comando ?, recibiremos información de todos los comandos que podemos usar dentro de la consola

  • Existe una costumbre al momento de escribir consultas y es escribirlas en mayúsculas

Por fin le veo sentido a las mayúsculas, jaja

No está claro el porqué de esta especie de “estándar” al escribir consultas SQL pero todo apunta a que en el momento que SQL nace, no existían editores de consultas que resaltaran las palabras propias del lenguaje para diferenciar fácilmente de las palabras que no son parte del lenguaje, por eso el uso de mayúsculas y minúsculas.

Para eliminar tablas se usa: DROP nombre_tabla.
El cuidado que hay que tener antes de ejecutar el drop es: que exista la tabla.
Por otro lado, drop también elimina base de datos, secuencias (sequence), restricciones (constraint ), etc . Por esta razón se recomienda chequear bien el nombre de lo que va a eliminar.

Me parece que este curso va a servir mucho para romper barreras del conocimiento.

Excelente clase

Me esta re gustando SQL

buena explicacion copiados y con ganas de usarlos arto para que no se olviden

Me parece excelente esta explicación

Muy bien explicado.

! cls => para ejecutar comandos del sistema operativo en este caso ‘cls’ de windows por ejemplo

transporte=# SELECT MD5('Vamos a encriptar un texto como el que lees');
               md5                
----------------------------------
 a15cfd63f932bafdc548b0eb1ca204a0
(1 row)

Time: 0.745 ms
transporte=# SELECT MD5('Vamos a encriptar un texto como el que lees');
               md5
----------------------------------
 a15cfd63f932bafdc548b0eb1ca204a0
(1 fila)


Duración: 0.290 ms

una pregunta alguien sabe como limpiar todo lo que escribes en la consola de comandos ? pero por favor no me digan que es clear por que ya intente y no funciona alguno de ustedes sabe si es con otro comando…

0,47ms

Duración: 0.582 ms

El usar operaciones basicas se parece mucho a las otras syntaxis, por ahora no veo diferencias en MYSQL

hago un pregunta por que no es lo mismo poner AUTO_INCREMENT a SERIAL Y por ejemplo character varying (n) a varchar(n)?

Time: 0.604 ms

Vamos bien 😄

Ahora si a la práctica!!

Empecemos

Excelente vamos por mas

Trabajando con Ubuntu he tenido algún problema tratando de insertar tuplas. Siguiendo el siguiente proceso lo he solucionado (forzando a dar todos privilegios a postgres sobre la tabla ‘train’):

Create DB
template1=# create database transport;

Connect to DB
template1=# \c transport;

Create Table
transport=# create table train (id_train serial NOT NULL,
model character varying, capacity int,
constraint train_pk primary key (id_train));

Grant all privileges on table to user
grant ALL on train to postgres;

Insert tuple
transport=# insert into train (model,capacity) values(‘Volvo 1’,102);

Falta el ; en alguno comandos como por ejemplo el CREATE, los SELECT y el INSERT para determinar el cierre de la sentencia.

Muy buenos apuntes.

Hasta el momento ha sido muy útil la explicación.
Solo me cuesta un poco asimilar los nuevos comandos que yo no conocía: listar, describir, etc. etc.

A mi me muestra en formato HTML la tablas xd :c. ¿Cómo lo soluciono?

\ ! cls => para ejecutar comandos del sistema operativo en este caso ‘cls’ de windows por ejemplo

ok, mas claro esta el maenjo con estos nuevos comandos.

0.301 ms

de esta forma queda como usar timing

transporte=# SELECT MD5('Vamos a encriptar este texto');
               md5
----------------------------------
 443fd0b8b498e0a2b864dd99a3e9384a
(1 fila)


Duración: 0.469 ms```
<code>


yesid2=# \timing
El despliegue de duración está activado.
yesid2=# SELECT MD5(’ Vamos a encriptar un texto como el que lees’);
               md5
----------------------------------
 427483ece10604d7ae228b8b8117c5ea
(1 fila)


Duración: 0,616 ms
yesid2=#


0.453 ms

excelente y mas cuando nos dice en que parte de la linea tenemos un error de sintaxis

0.290 ms 😄

0.297 ms 😄