Dagens statistikk

Gjennomførte øvelser
-
Skrevne tegn Skrevne ord
-
Øvingstid
-

Samlet statistikk

Gjennomførte øvelser
-
Skrevne tegn Skrevne ord
-
Øvingstid
-

Øvelse i touchmetoden: Programmering i språket SQL

Touchmetoden er viktig i programmering. Du er mer effektiv når du bruker hurtigskrivingsteknikker til å skrive kode i programmeringsspråket SQL.

La oss lære mer om språket SQL og touchmetoden når vi programmerer i SQL.

Programmering i SQL og touchmetoden

Å lære SQL og å øve på touchmetoden henger naturlig sammen. SQL-spørringer er fulle av parenteser, kommaer, operatorer og anførselstegn. Små feil, som feil anførselstegn eller et glemt semikolon, kan gjøre at hele spørringen feiler. Når du skriver SQL, er det nyttig å vite hvilke deler av syntaksen som er felles mellom databaser, og hvilke som er spesifikke. Denne artikkelen fokuserer mest på PostgreSQL, men nevner også MySQL, SQLite og SQL Server der syntaksen varierer.

Hva kjennetegner SQL-syntaksen?

SQL (Structured Query Language) er et deklarativt språk. I stedet for å beskrive steg for steg hvordan data hentes, sier du hvilke data du vil ha. Nesten alle setninger begynner med et nøkkelord som SELECT, INSERT eller UPDATE. Rekkefølgen på klausulene er fast: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL og MySQL deler denne rekkefølgen, så lærer du den i ett system, kan du bruke den i et annet.

SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;

Spesialtegn som brukes ofte

SQL inneholder mange skilletegn. Parenteser () omslutter funksjonsargumenter og grupperer betingelser. Komma , skiller kolonner. Punktum . brukes for skjema og tabellnavn, for eksempel public.users. Enkle anførselstegn '...' markerer tekststrenger. PostgreSQL bruker doble anførselstegn "..." for identifikatorer, mens MySQL bruker backticks `...`. I SQL Server brukes også klammeparenteser [...]. Å trene på disse symbolene hjelper deg å skrive feilfrie spørringer.

-- Tekststreng
SELECT * FROM books WHERE title = 'War and Peace';

-- Identifikatorer med mellomrom (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;

Store og små bokstaver

Av konvensjon skrives SQL-nøkkelord ofte med store bokstaver: SELECT, FROM, WHERE. Dette gjør dem mer synlige, men det er ikke påbudt. I PostgreSQL konverteres ikke-siterte identifikatorer automatisk til små bokstaver, så MyTable og mytable behandles likt. I MySQL avhenger skillet mellom store og små bokstaver i database- og tabellnavn av operativsystemet og serverinnstillingene. Til øving er det vanlig å bruke store bokstaver for nøkkelord for å tydeliggjøre strukturen.

Semikolon og slutten på en setning

I SQL avslutter et semikolon ; en setning. Interaktive verktøy som psql, MySQL-klienten og SQLite-skallet venter vanligvis på dette tegnet før de kjører setningen. I psql kan du også sende den gjeldende spørringen med \g. Hvis du får en ledetekst for mer input i stedet for et resultat, bør du kontrollere om du har avsluttet setningen.

SELECT-spørringer og joins

Å skrive spørringer innebærer ofte å skrive joins. PostgreSQL bruker INNER JOIN, LEFT JOIN og RIGHT JOIN. I eksemplet nedenfor står joinbetingelsen etter nøkkelordet ON. Det finnes også joins med USING eller NATURAL. Et manglende mellomrom eller en skrivefeil i betingelsen gjør spørringen ugyldig. Øving på joins gir presisjon i bruk av symboler som = og ..

SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;

Funksjoner og uttrykk

PostgreSQL har mange innebygde funksjoner som COUNT(), SUM() og AVG(). Parenteser er alltid påkrevd. Dato- og tidsfunksjoner som NOW() eller DATE_TRUNC() finnes i PostgreSQL; hvilke funksjoner som er tilgjengelige, og hvordan de virker, varierer mellom databaser. MySQL har også funksjoner som CURDATE() eller DATE_FORMAT(). Å skrive dem riktig krever oppmerksomhet på understreker, komma og parenteser.

SELECT DATE_TRUNC('month', created_at) AS month,
       COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;

INSERT, UPDATE, DELETE

Setninger som endrer data har mange skilletegn. INSERT bruker parenteser og kommaer for kolonner og verdier. UPDATE bruker = til å tilordne verdier og kommaer mellom tilordningene. DELETE kombinerer nøkkelord og betingelser. Disse strukturene er nesten identiske i PostgreSQL, MySQL, SQLite og SQL Server, selv om siteringsreglene kan variere.

INSERT INTO users (id, name, email)
VALUES (1, 'Alice', 'a@example.com');

UPDATE users
SET name = 'Bob', email = 'bob@example.com'
WHERE id = 1;

DELETE FROM users WHERE id = 2;

Common Table Expressions (CTE)

PostgreSQL bruker ofte CTE-er som starter med WITH. De involverer mange parenteser og kommaer, noe som gjør dem til god tastetrening. MySQL, SQLite og SQL Server støtter også CTE-er. Kontroller at hver startparentes har en tilsvarende sluttparentes.

WITH recent_orders AS (
  SELECT * FROM orders WHERE created_at > NOW() - INTERVAL '30 days'
)
SELECT customer_id, COUNT(*) AS order_count
FROM recent_orders
GROUP BY customer_id;

Vindusfunksjoner

PostgreSQL er kjent for sine avanserte vindusfunksjoner. Den typiske syntaksen OVER (PARTITION BY ... ORDER BY ...) krever nøyaktig bruk av parenteser og nøkkelord. MySQL og SQL Server støtter også vindusfunksjoner. Eksemplet nedenfor bruker PostgreSQL-syntaks.

SELECT customer_id,
       SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;

Parametere og placeholders

I applikasjoner avhenger parameterplassholdere av både databasen og driveren. Native forberedte setninger i PostgreSQL bruker $1, $2, forberedte setninger i MySQL og SQLite-spørringer kan bruke ?, og SQL Server-parametere har navn som @p1. En driver kan kreve en annen syntaks, for eksempel %s i Psycopg. Sjekk dokumentasjonen, for disse små symbolene er lette å taste feil.

-- PostgreSQL
SELECT * FROM users WHERE id = $1;

-- MySQL
SELECT * FROM users WHERE id = ?;

Oppsummering

Etter konvensjonen skrives SQL-nøkkelord ofte med store bokstaver. PostgreSQL gjør identifikatorer uten doble anførselstegn om til små bokstaver; andre systemer har andre regler. PostgreSQL bruker doble anførselstegn for identifikatorer, placeholders $n, CTE-er og vindusfunksjoner. MySQL bruker backticks og ?-placeholders. SQL Server innfører klammeparenteser og @-parametere. SQLite holder syntaksen enkel, men krever presisjon. Å øve på SQL-spørringer forbedrer nøyaktigheten ved bruk av skilletegn, nøkkelord og symboler, og å fokusere på PostgreSQL gir erfaring med en av de mest brukte moderne databasene.

Neste tekst
Neste leksjon
Oppgave Tilbake til test
sql
Kurve Skjul