Bases de datos SQL

Instalar y conectarse

Lección 2 de 8 · 13 min

Instalar PostgreSQL

Vamos a dejarlo funcionando en tu equipo. Es gratuito, no pide registro y el instalador hace casi todo el trabajo.

Instalación, según tu sistema

  1. Windows

    Descarga el instalador desde postgresql.org y acepta las opciones propuestas. Te pedirá una contraseña para el usuario postgres: anótala, porque es la del administrador de la base de datos.

    Instala de paso pgAdmin, una herramienta gráfica que viene bien para mirar los datos.

  2. macOS

    Con Homebrew: brew install postgresql@18 y luego brew services start postgresql@18.

    También existe Postgres.app, que instala todo con doble clic.

  3. Linux (Ubuntu y derivados)

    sudo apt update && sudo apt install postgresql

    Queda arrancado y configurado para iniciarse solo. Se comprueba con sudo systemctl status postgresql.

Conectarse: los tres clientes

Cada motor trae su propio programa de línea de comandos. Es lo primero que necesitas saber cuando llegas a un servidor que no montaste tú.

PostgreSQL
# -U el usuario, -d la base de datos, -h el servidor
psql -U postgres -d postgres

# En Linux, si tu usuario del sistema no existe como rol:
sudo -u postgres psql
Resultado
psql (18.6)
Type "help" for help.

postgres=#
MySQL
# -p SIN la contrasena al lado: la pide despues, y asi no queda en el historial
mysql -u root -p
Resultado
Enter password:
Welcome to the MySQL monitor.

mysql>
SQL Server
# -S el servidor, -U el usuario. -C acepta el certificado en un entorno de prueba
sqlcmd -S localhost -U sa -C
Resultado
Password:
1>

Fíjate en el detalle de MySQL: -p a secas hace que pida la contraseña. Escribirla pegada al comando la deja en el historial del sistema y a la vista de cualquiera que liste los procesos. Es la misma regla que en los otros cursos: las contraseñas no se escriben en la línea de comandos.

El primer error que ve todo el mundo en Linux y macOS: «FATAL: role "ana" does not exist».

No es un fallo de instalación. PostgreSQL asume que quieres entrar con un usuario de base de datos que se llame igual que tu usuario del sistema, y ese no existe. La salida es conectarse con el usuario administrador: sudo -u postgres psql, o indicar el usuario con -U postgres.

Crear la base de datos del curso

Todas las lecciones siguientes trabajan sobre una base de datos llamada tienda. Créala ahora y no tendrás que volver aquí.

Crear y entrar - PostgreSQL
-- Desde psql, conectado como postgres
CREATE DATABASE tienda;

-- Cambiar a la base recien creada
\c tienda

-- Ver las bases que existen
\l

Los comandos que empiezan por contrabarra -\c, \l, \dt- no son SQL: son atajos del cliente psql. Por eso no llevan punto y coma y no funcionan en otros motores.

Lo mismo en MySQL y en SQL Server
-- MySQL
CREATE DATABASE tienda;
USE tienda;
SHOW DATABASES;

-- SQL Server
CREATE DATABASE tienda;
GO
USE tienda;
GO
SELECT name FROM sys.databases;
GO

Tres diferencias que ya se ven aquí

Cambiar de base de datos

PostgreSQL: \c tienda -es una conexión nueva-.

MySQL y SQL Server: USE tienda;.

En PostgreSQL una consulta no puede cruzar dos bases de datos; en los otros dos, sí.

El GO de SQL Server

No es SQL: es una señal del cliente que significa «manda lo escrito hasta aquí».

Sin él, algunas órdenes no llegan a ejecutarse y parece que no pasa nada.

Listar las bases

Tres formas distintas para lo mismo: \l, SHOW DATABASES; y una consulta a una tabla del sistema.

Es un aviso temprano: lo administrativo es lo menos portátil.

El punto y coma no es decoración. Es lo que marca el final de una orden. Si lo olvidas, el cliente no ejecuta nada: se queda esperando a que termines, y muestra un símbolo distinto --# en PostgreSQL, -> en MySQL-.

Parece que se colgó y no: está esperando. Escribe el punto y coma y pulsa Enter.

Moverse dentro del cliente

Cuatro atajos que se usan constantemente. Son los que evitan tener que recordar de memoria cómo se llamaba una tabla.

Los atajos imprescindibles
# PostgreSQL (psql)
\dt          -- listar tablas
\d clientes  -- ver como esta hecha una tabla
\?           -- ayuda de los atajos
\q           -- salir

# MySQL
SHOW TABLES;
DESCRIBE clientes;
exit

# SQL Server (sqlcmd)
SELECT name FROM sys.tables;
GO
EXIT

Problemas de la primera conexión

Connection refused

El servicio no está corriendo o no escucha donde crees.

En Linux, sudo systemctl status postgresql. Es exactamente el diagnóstico del curso de servidores: primero se comprueba que el servicio está vivo.

Autenticación fallida para el usuario

Contraseña incorrecta, o el método de autenticación no admite lo que estás intentando.

En PostgreSQL eso se decide en el archivo pg_hba.conf, que define quién puede conectarse, desde dónde y cómo. Es el archivo al que apuntan casi todos los problemas de conexión.

Prefiero una herramienta gráfica

pgAdmin, DBeaver o Azure Data Studio están muy bien y las vas a usar a diario.

El curso enseña la terminal porque está en todos los servidores: el día que tengas que mirar algo por SSH, no habrá ventanas. Quien entiende la terminal usa cualquier herramienta gráfica; al revés, no.

¿Y si no quiero instalar nada?

Se puede levantar cualquiera de los tres motores con Docker en un par de minutos, sin ensuciar el equipo.

Es cómodo si ya conoces Docker; si no, el instalador normal es el camino corto.

Compruébalo tú mismo

Escribes una orden, pulsas Enter y el cliente no responde: aparece otro símbolo distinto. ¿Qué pasa?

En Linux escribes psql y responde que no existe el rol con tu nombre. ¿Por qué?

¿Por qué se escribe -p sin la contraseña al lado en MySQL?

Lo que sigue

Ya tienes una base de datos vacía. En la siguiente lección creas las tablas -y ahí aparece la mayor diferencia entre los tres motores: cómo se declara la columna que se numera sola-.

Siguiente: Tablas, tipos y el id automático

Continuar ← Qué es una base de datos y cuál elegir