CREATE TABLE – definiuje nazwę tabeli oraz nazwy i typ każdej kolumny
CREATE TABLE table_name (
column_name columnType columnCconstraint,
[...,]
table_constraints, [...,] )
ColumnType: TEXT, NUMERIC, INTEGER, REAL, BLOB
ColumnConstraint:
NOT NULL – kolumna nie może mieć NULL.
DEFAULT (v) – domyślna wartość dla kolumny (jeżeli nie podano).
UNIQUE – wszystkie wartości w kolumnie muszą być różne.
PRIMARY KEY – klucz główny tabeli.
CHECK (wyrażenie) – dodatkowe warunki na wartości w kolumnie.
-- SALARY musi być większe od zera
SALARY REAL CHECK(SALARY > 0)
TableConstraint
UNIQUE (c1, c2...)
PRIMARY KEY(c1, c2...)
CHECK (SALARY > 0)
Uwaga dotycząca autoinkrementacji
Domyślnie każdy wiersz w SQLite ma specjalną kolumnę, zwykle nazywaną rowid, który jednoznacznie identyfikuje ten wiersz w obrębie tablicy. Jednak jeśli wyrażenie WITHOUT ROWID zostanie dodane na końcu CREATE TABLE, to wtedy specjalna kolumna rowid będzie pominięty. Za każdym razem, gdy tworzona jest tabela bez określenia WITHOUT ROWID, to powstaje tabele zawierająca niejawną (w sensie, nie wyświetlaną ale istniejącą) kolumnę auto-inkrementacji o nazwie rowid.
CREATE TABLE people (
first_name TEXT NOT NULL, last_name TEXT NOT NULL );
INSERT INTO people (first_name, last_name) VALUES ('John', 'Doe');
SELECT rowid, first_name, last_name FROM people;
INSERT, UPDATE, DELETEINSERT INTO table (column1, column2 ,..)
VALUES( value1, value2 ,...);
Część (column1, column2 ,..) jest opcjonalna; jeżeli wstawiamy wartości do wszystkich kolumn wiersza w szczególności.
SELECT SELECT [DISTINCT] selectHeading
FROM table, table
WHERE filterExpression
GROUP BY groupingExpression
HAVING filterExpression
ORDER BY orderingEexpression
LIMIT count
selectHeading – określa jakie kolumny (wyrażenia zawierające kolumny) albo agregaty mają być wypisane
HAVING filterExpression – określa warunki (filtry) dla danych pogrupowanych (wymaga klauzuli GROUP BY)
DISTINCT – usuwa powtórzenia
SELECT o.OrderID, o.OrderDate, c.CustomerName
FROM Customers AS c, Orders AS o
WHERE c.CustomerName="Around the Horn" AND c.CustomerID=o.CustomerID;
SELECT CustomerID AS ID, CustomerName AS Customer
FROM Customers;
JOINS SELECT Title, Name FROM albums
INNER JOIN artists ON artists.ArtistId = albums.ArtistId;
-- z użyciem aliasów (l, r)
SELECT l.Title, r.Name FROM albums l
INNER JOIN artists r ON r.ArtistId = l.ArtistId
Podzapytanie to polecenie SELECT wewnątrz innego polecenia:
SELECT column_1
FROM table_1
WHERE column_1 = (
SELECT column_1
FROM table_2
);
Podzapytanie jest wewnątrz pary nawiasów okrągłych.
Zazwyczaj podzapytanie powinno zwrócić pojedynczy wiersz żeby miało sens, chociaż może także zwrócić wiele wierszy (wartości) porównywanych operatorem IN.
Można użyć podzapytania w klauzulach SELECT, FROM, WHERE i JOIN.
.databases -- wypisz bazy
.read FILE.sql -- wykonaj SQL z pliku FILE.sql
.q -- zakończ
.tables -- wypisz kolumny
.header on -- wypisuj nazwy kolumn
.mode (list|csv|insert) -- format wynikowy
.separator "x" -- znak separujący
.mode list
.separator ';'
.output PLIK albo .once (tylko nast. polecenie)
`` .mode csv .separator ‘;’ .import PLIK tabela ```