Comparació de sintaxi entre PostgreSQL, MySQL/MariaDB, SQL Server i Oracle per als patrons més habituals. Útil com a full de referència durant les pràctiques i exàmens.
Paginació de resultats
Motor
Sintaxi
PostgreSQL
SELECT ... LIMIT 10 OFFSET 20;
MySQL / MariaDB
SELECT ... LIMIT 10 OFFSET 20; (o LIMIT 20, 10)
SQL Server
SELECT ... ORDER BY col OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
OFFSET / FETCH NEXT exigeix una clàusula ORDER BY. Sense ella, la consulta retorna un error.
Concatenació de cadenes
Motor
Operador / Funció
Exemple
PostgreSQL
\|\| o CONCAT()
nom \|\| ' ' \|\| cognoms
MySQL / MariaDB
CONCAT()
CONCAT(nom, ' ', cognoms)
SQL Server
+ o CONCAT()
nom + ' ' + cognoms
Oracle
\|\| o CONCAT()
nom \|\| ' ' \|\| cognoms
CONCAT() és portable
CONCAT(a, b, c) funciona als 4 motors i ignora NULLs a MySQL/MariaDB (a PostgreSQL i SQL Server, un NULL propaga NULL). Per evitar problemes, useu COALESCE(col, '') si la columna pot ser NULL.
Clau primària autoincremental
-- Opció 1: SERIAL (drecera)CREATETABLEproductes(id_producteSERIALPRIMARYKEY,nomVARCHAR(100)NOTNULL);-- Opció 2: IDENTITY (SQL:2003, recomanat des de PG 10)CREATETABLEproductes(id_producteINTEGERGENERATEDALWAYSASIDENTITYPRIMARYKEY,nomVARCHAR(100)NOTNULL);
# Exportar una BD (text SQL)pg_dump-Upostgres-dnom_bd>backup.sql
# Exportar en format personalitzat (compres, restaurable selectivament)pg_dump-Upostgres-Fc-dnom_bd>backup.dump
# Restaurarpsql-Upostgres-dnom_bd<backup.sql
pg_restore-Upostgres-dnom_bdbackup.dump
# Exportarmysqldump-uroot-pnom_bd>backup.sql
# Exportar totes les BDmysqldump-uroot-p--all-databases>all_backup.sql
# Restaurarmysql-uroot-pnom_bd<backup.sql
CREATEUSERjoanIDENTIFIEDBY"Secret1!";GRANTCREATESESSIONTOjoan;GRANTSELECT,INSERTONclientsTOjoan;GRANTDBATOjoan;-- rol predefinit amb tots els privilegisREVOKEINSERTONclientsFROMjoan;DROPUSERjoanCASCADE;-- CASCADE elimina tots els objectes de l'usuari
Veure objectes del sistema
Objectiu
PostgreSQL
MySQL / MariaDB
SQL Server
Oracle
Llistar BD
\l (psql)
SHOW DATABASES;
SELECT name FROM sys.databases;
SELECT name FROM v$database;
Llistar taules
\dt (psql)
SHOW TABLES;
SELECT name FROM sys.tables;
SELECT table_name FROM user_tables;
Estructura taula
\d nom_taula
DESCRIBE nom_taula;
sp_help nom_taula;
DESC nom_taula;
Llistar índexos
\di (psql)
SHOW INDEX FROM taula;
sp_helpindex taula;
SELECT * FROM user_indexes;
Llistar usuaris
\du (psql)
SELECT user, host FROM mysql.user;
SELECT name FROM sys.logins;
SELECT username FROM dba_users;
Pla d'execució
EXPLAIN ANALYZE ...
EXPLAIN ...
SET STATISTICS IO ON; ...
EXPLAIN PLAN FOR ...; SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);