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 81

Preguntas 13

Ordenar por:

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

o inicia sesi贸n.

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 馃槂

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

Ya que vimos la instrucci贸n 鈥淒ELETE鈥 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

Alguien sabe c贸mo puedo instalar el historial o sabe por qu茅 no me deja?

Tremenda gu铆a para practicar de inicio 馃挜

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(鈥榯ren_id_seq鈥::regclass)
modelo | character varying | | |
capacidad | integer | | |
鈺恘dices:
鈥渢ren_pkey鈥 PRIMARY KEY, btree (id)
transporte=# INSERT INTO tren( modelo, capacidad) values (鈥榁olvo 1鈥, 100);
INSERT 0 1
transporte=# SELECT * FROM tren
transporte-# ;
id | modelo | capacidad
----卤--------卤----------
1 | Volvo 1 | 100
(1 fila)

transporte=# UPDATE tren SET modelo = 鈥楬onda 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

Excelente, siento c贸mo atravieso el Nirvana

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 鈥榬unpsql.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 鈥榬unpsql.bat鈥 con alg煤n editor, por ejemplo:
    notepad runpsql.bat

  • Al final del archivo veremos:
    """""""
    for /f 鈥渄elims=鈥 %%a in (鈥榗hcp ^|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 鈥渄elims=鈥 %%a in (鈥榗hcp ^|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 鈥榗md.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

\c nombreDataBase para cambiar de base de datos

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 鈥渄uro鈥 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 (鈥橵olvo 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 = 鈥楬onda 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 鈥渆st谩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 鈥榗ls鈥 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 鈥榯rain鈥):

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(鈥榁olvo 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 鈥榗ls鈥 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 馃槃