sql >> Database >  >> RDS >> SQLite

SQLite-opdrachten

Samenvatting :in deze tutorial laten we je kennismaken met de meest gebruikte SQLite-opdrachten van het sqlite3-opdrachtregelprogramma.

Het SQLite-project levert een eenvoudig opdrachtregelprogramma genaamd sqlite3 (of sqlite3.exe op Windows) waarmee u kunt communiceren met de SQLite-databases met behulp van SQL-instructies en -opdrachten.

Verbinding maken met een SQLite-database

Om de sqlite3 te starten, typt u de sqlite3 als volgt:

>sqlite3
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>Code language: Shell Session (shell)

Standaard gebruikt een SQLite-sessie de in-memory database, daarom zijn alle wijzigingen verdwenen wanneer de sessie eindigt.

Om een ​​databasebestand te openen, gebruikt u de .open FILENAME opdracht. De volgende instructie opent de chinook.db databank:

sqlite> .open c:\sqlite\db\chinook.dbCode language: Shell Session (shell)

Als u een specifiek databasebestand wilt openen wanneer u verbinding maakt met de SQlite-database, gebruikt u het volgende commando:

>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.13.0 2016-05-18 10:57:30
Enter ".help" for usage hints.
sqlite>Code language: Shell Session (shell)

Als u een sessie start met een databasenaam die niet bestaat, zal de sqlite3-tool het databasebestand maken.

Met de volgende opdracht wordt bijvoorbeeld een database gemaakt met de naam sales in de C:\sqlite\db\ map:

>sqlite3 c:\sqlite\db\sales.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite>Code language: Shell Session (shell)

Toon alle beschikbare commando's en hun doel

Om alle beschikbare commando's en hun doel te tonen, gebruik je de .help commando als volgt:

.helpCode language: Shell Session (shell)

Toon databases in de huidige databaseverbinding

Om alle databases in de huidige verbinding te tonen, gebruikt u de .databases opdracht. De .databases opdracht geeft ten minste één database weer met de naam:main .

Het volgende commando toont bijvoorbeeld alle databases van de huidige verbinding:

sqlite> .database
seq  name             file
---  ---------------  --------------------------
0    main             c:\sqlite\db\sales.db
sqlite>Code language: Shell Session (shell)

Om een ​​extra database in de huidige verbinding toe te voegen, gebruikt u de instructie ATTACH DATABASE . De volgende verklaring voegt de chinook . toe database naar de huidige verbinding.

sqlite> ATTACH DATABASE "c:\sqlite\db\chinook.db" AS chinook;Code language: Shell Session (shell)

Als u nu de .database . uitvoert commando nogmaals, de sqlite3 retourneert twee databases:main en chinook .

sqlite> .databases
seq  name             file
---  ---------------  ---------------------
0    main             c:\sqlite\db\sales.db
2    chinook          c:\sqlite\db\chinook.db
Code language: Shell Session (shell)

Sqlite3-tool afsluiten

Om het sqlite3-programma af te sluiten, gebruikt u de .exit commando.

sqlite>.exitCode language: Shell Session (shell)

Toon tabellen in een database

Om alle tabellen in de huidige database weer te geven, gebruikt u de .tables opdracht. De volgende opdrachten openen een nieuwe databaseverbinding met de chinook database en geef de tabellen in de database weer.

>sqlite3 c:\sqlite\db\chinook.db
SQLite version 3.29.0 2019-07-10 17:32:03
Enter ".help" for usage hints.
sqlite> .tables
albums          employees       invoices        playlists
artists         genres          media_types     tracks
customers       invoice_items   playlist_track
sqlite>Code language: Shell Session (shell)

Als je tabellen wilt vinden op basis van een specifiek patroon, gebruik je de .table patroon commando. De sqlite3 gebruikt de LIKE operator voor patroonherkenning.

De volgende instructie retourneert bijvoorbeeld de tabel die eindigt met de tekenreeks es .

sqlite> .table '%es'
employees    genres       invoices     media_types
sqlite>Code language: Shell Session (shell)

Toon de structuur van een tabel

Om de structuur van een tabel weer te geven, gebruikt u de .schema TABLE opdracht. De TABLE argument kan een patroon zijn. Als u het weglaat, wordt de .schema commando toont de structuren van alle tabellen.

Het volgende commando toont de structuur van de albums tafel.

sqlite> .schema albums
CREATE TABLE "albums"
(
    [AlbumId] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
    [Title] NVARCHAR(160)  NOT NULL,
    [ArtistId] INTEGER  NOT NULL,
    FOREIGN KEY ([ArtistId]) REFERENCES "artists" ([ArtistId])
                ON DELETE NO ACTION ON UPDATE NO ACTION
);
CREATE INDEX [IFK_AlbumArtistId] ON "albums" ([ArtistId]);
sqlite>Code language: Shell Session (shell)

Om het schema en de inhoud van de sqlite_stat te tonen tabellen, gebruik je het .fullschema commando.

sqlite>.fullschemaCode language: CSS (css)

Indexen tonen

Om alle indexen van de huidige database te tonen, gebruik je de .indexes commando als volgt:

sqlite> .indexes
IFK_AlbumArtistId
IFK_CustomerSupportRepId
IFK_EmployeeReportsTo
IFK_InvoiceCustomerId
IFK_InvoiceLineInvoiceId
IFK_InvoiceLineTrackId
IFK_PlaylistTrackTrackId
IFK_TrackAlbumId
IFK_TrackGenreId
IFK_TrackMediaTypeIdCode language: Shell Session (shell)

Om de indexen van een specifieke tabel te tonen, gebruik je de .indexes TABLE opdracht. Om bijvoorbeeld indexen van de albums weer te geven table, gebruik je het volgende commando:

sqlite> .indexes albums
IFK_AlbumArtistIdCode language: CSS (css)

Indexen tonen van de tabellen waarvan de naam eindigt op es , gebruik je een patroon van de LIKE-operator.

sqlite> .indexes %es
IFK_EmployeeReportsTo
IFK_InvoiceCustomerIdCode language: Shell Session (shell)

Sla het resultaat van een zoekopdracht op in een bestand

Om het resultaat van een zoekopdracht in een bestand op te slaan, gebruikt u de .output FILENAME opdracht. Zodra u de .output commando, worden alle resultaten van de volgende zoekopdrachten opgeslagen in het bestand dat u hebt opgegeven in de FILENAME argument. Als u het resultaat van de volgende enkele zoekopdracht alleen in het bestand wilt opslaan, geeft u de .once FILENAME op commando.

Om het resultaat van de query opnieuw naar de standaarduitvoer te tonen, geeft u de .output . op commando zonder argumenten.

De volgende commando's selecteren de title uit de albums tabel en schrijf het resultaat naar de albums.txt bestand.

sqlite> .output albums.txt
sqlite> SELECT title FROM albums;Code language: Shell Session (shell)

Voer SQL-instructies uit vanuit een bestand

Stel dat we een bestand hebben met de naam commands.txt in de c:\sqlite\ map met de volgende inhoud:

SELECT albumid, title
FROM albums
ORDER BY title
LIMIT 10;Code language: Shell Session (shell)

Om de SQL-instructies uit te voeren in de commands.txt bestand, gebruik je de .read FILENAME commando als volgt:

sqlite> .mode column
sqlite> .header on
sqlite> .read c:/sqlite/commands.txt
AlbumId     Title
----------  ----------------------
156         ...And Justice For All
257         20th Century Masters -
296         A Copland Celebration,
94          A Matter of Life and D
95          A Real Dead One
96          A Real Live One
285         A Soprano Inspired
139         A TempestadeTempestade
203         A-Sides
160         Ace Of SpadesCode language: Shell Session (shell)

In deze tutorial heb je veel nuttige commando's geleerd in de sqlite3-tool om verschillende taken uit te voeren die te maken hebben met de SQLite-database.


  1. MySQL migreren naar PostgreSQL op AWS RDS, deel 2

  2. Hoe test ik een Oracle Stored Procedure met RefCursor-retourtype?

  3. SQL Server (TSQL) - Is het mogelijk om EXEC-statements parallel te zetten?

  4. Wat is het beste hulpmiddel om twee SQL Server-databases (schema en gegevens) te vergelijken?