Skrivinställningarna kunde inte uppdateras. Ladda om sidan för att försöka igen.
Tangentbordsövning: Programmering i SQL
Reglerna för beräkning av noggrannhet har ändrats. Den här övningen börjar om från början.
Det gick inte att bekräfta att ditt avslutade pass sparades. Försök spara igen utan att skriva texten på nytt.
Tangentbordsövning: Programmering i SQL
Tangentbordsträning är betydelsefull för programmering. Du blir effektivare när du använder snabbskrivningstekniker för att skriva kod i programmeringsspråket SQL.
Kodning i SQL och tangentbordsträning
Att lära sig SQL och träna tangentbordsskrivning hänger naturligt ihop. SQL-frågor är fulla av parenteser, kommatecken, operatorer och citattecken. Små misstag, som ett felaktigt citattecken eller ett glömt semikolon, kan få hela frågan att misslyckas. När du skriver SQL är det bra att veta vilka delar av syntaxen som är gemensamma mellan databaser och vilka som är specifika. Den här artikeln fokuserar främst på PostgreSQL, men nämner också MySQL, SQLite och SQL Server där syntaxen skiljer sig åt.
Vad är typiskt för SQL-syntaxen?
SQL (Structured Query Language) är ett deklarativt språk. Istället för att beskriva steg för steg hur data ska hämtas, deklarerar du vilka data du vill ha. Nästan varje sats börjar med ett nyckelord som SELECT, INSERT eller UPDATE. Ordningen på klausulerna är fast: SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY .... PostgreSQL och MySQL delar denna ordning, så om du lär dig den i ett system kan du använda den i ett annat.
SELECT id, name
FROM customers
WHERE active = true
ORDER BY created_at DESC;
Vanliga specialtecken
SQL innehåller många skiljetecken. Parenteser () omsluter funktionsargument och grupperar villkor. Kommatecken , separerar kolumner. Punkt . används i scheman och tabellnamn, t.ex. public.users. Enkla citattecken '...' markerar textsträngar. PostgreSQL använder dubbla citattecken "..." för identifierare, medan MySQL använder backticks `...`. I SQL Server används även hakparenteser [...]. Att öva på dessa symboler hjälper dig att skriva frågor korrekt.
-- Textsträng
SELECT * FROM books WHERE title = 'War and Peace';
-- Identifierare med mellanslag (PostgreSQL)
SELECT "Order ID", "Customer Name" FROM orders;
Versaler och gemener
Av konvention skrivs SQL-nyckelord ofta med versaler: SELECT, FROM, WHERE. Det gör dem mer synliga, men det är inte obligatoriskt. I PostgreSQL konverteras icke-citerade identifierare automatiskt till gemener, så MyTable och mytable behandlas som samma. I MySQL beror skiftlägeskänsligheten för databas- och tabellnamn på operativsystemet och serverinställningarna. Vid övning är det vanligt att använda versaler för nyckelord för att framhäva frågans struktur.
Semikolon och slutet på satser
I SQL avslutar ett semikolon ; en sats. Interaktiva verktyg som psql, MySQL-klienten och SQLite-skalet väntar normalt på detta tecken innan de kör satsen. I psql kan du också skicka den aktuella frågan med \g. Om du får en prompt för mer text i stället för ett resultat, kontrollera att du har avslutat satsen.
SELECT-frågor och joins
Att skriva frågor innebär ofta att skriva joins. PostgreSQL använder INNER JOIN, LEFT JOIN och RIGHT JOIN. I exemplet nedan anges joinvillkoret efter nyckelordet ON. Det finns också joins med USING eller NATURAL. Ett saknat mellanslag eller ett skrivfel i villkoret gör frågan ogiltig. Att öva joins hjälper till med precision i symboler som = och ..
SELECT c.id, c.name, o.amount
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id
WHERE o.amount > 100;
Funktioner och uttryck
PostgreSQL har många inbyggda funktioner som COUNT(), SUM() och AVG(). Parenteser krävs alltid. Datum- och tidsfunktioner som NOW() eller DATE_TRUNC() är specifika för PostgreSQL. MySQL har motsvarigheter som CURDATE() eller DATE_FORMAT(). Att skriva dem korrekt kräver uppmärksamhet på understreck, kommatecken och parenteser.
SELECT DATE_TRUNC('month', created_at) AS month,
COUNT(*) AS orders
FROM orders
GROUP BY month
ORDER BY month;
INSERT, UPDATE, DELETE
Satser som ändrar data innehåller många skiljetecken. INSERT använder parenteser och kommatecken för kolumner och värden. UPDATE använder = för att tilldela värden och kommatecken mellan tilldelningarna. DELETE kombinerar nyckelord och villkor. Dessa strukturer är nästan identiska i PostgreSQL, MySQL, SQLite och SQL Server, även om citeringsreglerna kan variera.
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 använder ofta CTE:er som börjar med WITH. De innehåller många parenteser och kommatecken, vilket gör dem till bra övning. MySQL, SQLite och SQL Server stöder också CTE:er. Kontrollera att varje öppningsparentes har en motsvarande slutparentes.
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;
Fönsterfunktioner
PostgreSQL är känt för sina avancerade fönsterfunktioner. Den typiska syntaxen OVER (PARTITION BY ... ORDER BY ...) kräver exakt inmatning av parenteser och nyckelord. MySQL och SQL Server stöder också fönsterfunktioner. Exemplet nedan använder PostgreSQL-syntax.
SELECT customer_id,
SUM(amount) OVER (PARTITION BY customer_id ORDER BY created_at) AS running_total
FROM payments;
Parametrar och placeholders
I applikationer beror parameterplatshållare på både databasen och drivrutinen. Inbyggda förberedda satser i PostgreSQL använder $1, $2, förberedda satser i MySQL och SQLite-frågor kan använda ?, och SQL Server-parametrar har namn som @p1. En drivrutin kan kräva en annan syntax, till exempel %s i Psycopg. Läs dokumentationen, eftersom de här små symbolerna är lätta att skriva fel.
-- PostgreSQL
SELECT * FROM users WHERE id = $1;
-- MySQL
SELECT * FROM users WHERE id = ?;
Sammanfattning
SQL-nyckelord skrivs enligt konventionen ofta med versaler. PostgreSQL omvandlar identifierare utan dubbla citattecken till gemener; andra system har andra regler. PostgreSQL använder dubbla citattecken för identifierare, placeholders $n, CTE:er och fönsterfunktioner. MySQL använder backticks och placeholders ?. SQL Server introducerar hakparenteser och parametrar @. SQLite håller syntaxen enkel men kräver precision. Att öva SQL-frågor förbättrar noggrannheten i symboler och nyckelord, och att fokusera på PostgreSQL ger erfarenhet med en av de mest använda moderna databaserna.