Quiz:Postgres approfondito: Parte 1
SQL ti fa strillare?
Parte 1 di 2. Vai alla Parte 2
PostgreSQL 🐘 è facilmente il mio database preferito! Imparo sempre nuovi trucchi e insidie, così ho deciso di raccoglierli in un nuovo quiz!
Questo quiz copre un mix di funzionalità PostgreSQL note e meno conosciute, incluse le insidie: dagli aggregati integrati al casting dei tipi, ai vincoli e altro ancora.
Buona fortuna! 🍀
Quale di queste conversioni di tipo è non valida ❌?
PostgreSQL supporta tre sintassi di cast:
- ANSI SQL:
CAST(expression AS type). - PostgreSQL:
expression::type. - Funzione di tipo:
type 'literal'.
Tutte sono funzionalmente equivalenti, ma:
CAST()è la più portabile.::è specifico di PostgreSQL ma comunemente usato.- Lo stile infisso
type 'literal'è meno comune ma comunque valido.
Quanti valori NULL sono consentiti qui?
CREATE TABLE student_emails ( student_id INTEGER, email VARCHAR(255), UNIQUE(email));Vincoli UNIQUE in PostgreSQL:
- Consentono più valori NULL.
NULL≠NULLnei controlli di unicità.
Per impedire valori NULL, aggiungi NOT NULL:
CREATE TABLE student_emails ( student_id INTEGER, email VARCHAR(255) NOT NULL, UNIQUE(email));Cosa restituisce questo?
SELECT '2024-11-27'::date + interval '24 hours';Gli intervalli sono uno strumento potente per semplificare le operazioni su intervalli di date!
Aritmetica delle date in PostgreSQL:
+ interval '24 hours'aggiunge 24 ore+ interval '1 day'aggiunge 1 giorno+ interval '1 month'aggiunge 1 mese+ interval '1 year'aggiunge 1 anno
Il risultato è 2024-11-28 00:00:00.
Quale di questi ❌ non è un tipo PostgreSQL valido?
PostgreSQL ha un ricco insieme di tipi di dati, ma STRING(100) non è tra questi.
I tipi di stringa corretti includono:
VARCHAR(100)(stringa a lunghezza variabile)CHAR(100)(stringa a lunghezza fissa)TEXT(lunghezza illimitata)CHARACTER VARYING(100)(stesso diVARCHAR(100))
Quale di questi ❌ non è un tipo PostgreSQL valido?
Può sembrare familiare, poiché decimal128 è un tipo in molti ambienti (inclusi Mongo e Java). Non è un tipo PostgreSQL valido; il tipo corretto è decimal.
I tipi numerici corretti includono:
int(intero a 4 byte)bigint(intero a 8 byte)real(virgola mobile a 4 byte)double precision(virgola mobile a 8 byte)bigserial(intero auto‑incrementante a 8 byte)smallserial(intero auto‑incrementante a 2 byte)
Cosa succede quando si calcola il totale possibile di ID studente?
SELECT 256 * 256 * 256 * 256;Il tipo integer di PostgreSQL è a 32 bit con segno, con intervallo da -2,147,483,648 a 2,147,483,647.
Il calcolo 256^4 = 4,294,967,296 supera questo intervallo.
Per gestire numeri più grandi:
-- Use BIGINTSELECT 256::bigint * 256 * 256 * 256;
-- Or numeric for arbitrary precisionSELECT 256::numeric * 256 * 256 * 256;Quale esempio ha il minor numero di cifre frazionarie oltre le sei cifre di precisione dei timestamp PostgreSQL?
I timestamp di PostgreSQL hanno una precisione di microsecondi (6 cifre decimali).
- Massimo:
.123456(6 cifre) - I nanosecondi (9 cifre) vengono arrotondati o troncati alla precisione supportata
- I fusi orari sono accettati per
timestamptz, ma non obbligatori
Curiosità poco comune: Alcuni linguaggi/framework inviano precisione a nanosecondi, ma PostgreSQL memorizza i timestamp con precisione microsecondi.
Come te la sei cavata?
Ben fatto! Hai scavato a fondo in diversi ambiti di PostgreSQL! 🐘
Spero tu abbia imparato qualcosa di nuovo, o almeno ottenuto un punteggio di cui vantarti! 🏆
Dai un’occhiata a Parte 2 per più divertimento con Postgres! 🚀
Vuoi più brividi nella vita? Dai un’occhiata alla mia Raccolta di Quiz per divertimento infinito!*
