Waarom klaagt iedereen dat SQLite traag is? Wat betekent “een redelijk complete set SQL”?

Invoering

SQLite is een relationele database die kan worden opgevraagd met behulp van de taal SQL-query's. De database ondersteunt niet alle functies van SQL en is qua functionaliteit inferieur aan andere ontwikkelde DBMS's, maar is redelijk geschikt voor het opslaan en ophalen van informatie.

Verschil tussen SQLite en MySQL en vergelijkbare DBMS'en

Klassieke DBMS'en zoals MySQL (evenals MS SQL, Oracle, PostgreeSQL) bestaan ​​uit aparte server, dat de werking van de database ondersteunt en op een specifieke poort luistert naar klantverzoeken. De klant kan dat ook zijn PHP-extensie, die de interface implementeert waarmee zoekopdrachten naar de database worden gedaan. De SQLite-engine en de bijbehorende interface zijn geïmplementeerd in één bibliotheek, wat de snelheid van de uitvoering van zoekopdrachten verhoogt. Deze server wordt vaak gebeld ingebouwd.

Opmerking

Andere databases, zoals MySQL, hebben ook een ingebouwde server, maar het gebruik ervan vergt licentiekosten en wordt daarom niet veel gebruikt in de open source-wereld.

SQLite is een typeloze database. Om precies te zijn, er zijn slechts twee typen: geheel getal "geheel getal" en tekst "tekst". Bovendien wordt "geheel getal" voornamelijk gebruikt voor primaire sleutel tabellen, en voor de rest van de gegevens zal “tekst” verdwijnen. De lengte van de tekenreeks die naar het tekstveld wordt geschreven, kan elke lengte hebben.

Kenmerken van SQLite

Alle databases worden opgeslagen in bestanden, één bestand per database. Het aantal databases, evenals de tabellen daarin, is slechts beperkt vrije ruimte beschikbaar op de site. En de maximaal mogelijke grootte van één database is 2 TB.

Omdat alle gegevens in bestanden worden opgeslagen, zijn er geen problemen met het overbrengen van een database van de ene hosting naar de andere - u hoeft alleen maar de bijbehorende bestanden te kopiëren.

SQLite installeren

In PHP5 is SQLite-ondersteuning standaard geïnstalleerd en ingeschakeld.

Installatie onder Windows: Om SQLite te installeren, moet u de bibliotheek “php_sqlite.dll” downloaden en kopiëren naar de map met extensies, die kan worden gedownload via de link: http://snaps.php.net/win32/PECL_STABLE/php_sqlite.dll. Vervolgens moet u de regel "extension=php_sqlite.dll" in het "php.ini"-bestand verwijderen (of toevoegen). Om SQLite goed te laten functioneren, moet u ook de commentaarregel "extension=php_pdo.dll" verwijderen.

Opmerking

Opmerking

De bibliotheek "php_pdo.dll" moet worden geladen voordat "php_sqlite.dll" wordt geladen. Dat wil zeggen dat in php.ini de regel "extension=php_sqlite.dll" zou moeten verschijnen na "extension=php_pdo.dll".

Installatie onder Unix: Download de nieuwste versie van SQLite van de officiële website (http://sqlite.org/download.html). Lees het "INSTALL"-bestand dat bij de bronmoduletests is geleverd. Of gebruik eenvoudigweg het PEAR-installatiecommando: "pear install sqlite".

Werken met SQLite

Een databank aanmaken: Om een ​​nieuwe database te maken, moet u de functie sqlite_open() gebruiken. Als de database waarvan de naam is opgegeven in de parameter "bestandsnaam" niet bestaat, zal de functie een nieuwe database maken met de naam "bestandsnaam" en de database-ID retourneren.

Bron sqlite_open (string bestandsnaam [, int mode [, string &error_message]])

Het onderstaande script demonstreert de creatie nieuwe basis gegevens:

// Maak een database

if (! $db ) exit( "Kan database niet aanmaken!");
?>

Als gevolg hiervan hebben we in de map met het script een bestand met de naam "my_database.db" - onze database.

Tabellen maken: Alle zoekopdrachten naar de database worden uitgevoerd door de functie sqlite_query(), die de volgende syntaxis heeft:

Bron sqlite_query (bron dbhandle, tekenreeksquery)

Opmerking

Om zoals elke andere met SQLite te werken relationele basis gegevens met behulp van de SQL-querytaal. Daarom kunt u een gegevenstabel maken met de traditionele CREATE TABLE-query, een record invoegen met de instructie INSERT en de record ophalen met helpen selecteren en bijwerken bestaande invoer met behulp van een UPDATE-verzoek.

In het onderstaande voorbeeld wordt een tabel tabel1 gemaakt met drie velden: een geheel getal-ID-veld dat als primaire sleutel fungeert, en twee tekstvelden veld1 en veld2.

$db = sqlite_open("mijn_database.db" );
if (! $db ) exit();
"TABEL MAKEN tabel1
(id INTEGER PRIMAIRE SLEUTEL,
veld1 TEKST,
veld2 TEKST);
"
);
if (! $query_table ) exit();
$query_insert = sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("PHP5", "Apache");");
if (! $query_insert ) exit( "Kan gegevens niet naar tabel schrijven!");
?>

Na het aanmaken van de tabel wordt er een record aan toegevoegd met de regels "PHP5" en "Apache", het id-veld krijgt automatisch de waarde 1.

Gegevens uit de database uitvoeren: Om gegevens uit tabellen weer te geven, wordt dezelfde functie gebruikt: sqlite_query(). Als er meerdere records worden opgehaald, moet het ophaalresultaat worden verwerkt met behulp van een while()-lus en de functie sqlite_fetch_array(), die de volgende syntaxis heeft:

Array sqlite_fetch_array (bronresultaat [, int resultaat_type [, bool decode_binary]])

Hieronder staat een script dat de uitvoer van verschillende records uit de database demonstreert:

// Maak een nieuwe database
$db = sqlite_open("mijn_database.db" );
if (! $db ) exit( "Kan database niet aanmaken!");
// Maak tabel "table1" in de database
$query_table = sqlite_query ($db, "TABEL MAKEN tabel1
(id INTEGER PRIMAIRE SLEUTEL,
/* ID wordt automatisch automatisch verhoogd */
veld1 TEKST,
veld2 TEKST);
"
);
if (! $query_table ) exit( "Kan geen tabel in de database maken!");
// Schrijf iets naar de tabel
sqlite_query($db, );
sqlite_query($db, );
sqlite_query($db, );
// Laten we een voorbeeld nemen van de gegevens
$res = sqlite_query ($db, "SELECT * FROM tabel1;" );
terwijl ($array = sqlite_fetch_array ($res))
{

" );
}
?>

Als resultaat van het script krijgen we:

PHP5+Apache (invoer-ID:1)

Een bericht bewerken: Om een ​​veld te wijzigen, gebruiken we de functie sqlite_query() en geven we er een updateverzoek (UPDATE) aan door.

// Maak een nieuwe database
$db = sqlite_open("mijn_database.db" );
if (! $db ) exit( "Kan database niet aanmaken!");
// Maak tabel "table1" in de database
$query_table = sqlite_query ($db, "TABEL MAKEN tabel1
(id INTEGER PRIMAIRE SLEUTEL,
/* ID wordt automatisch automatisch verhoogd */
veld1 TEKST,
veld2 TEKST);
"
);
if (! $query_table ) exit( "Kan geen tabel in de database maken!");
// Schrijf iets naar de tabel
sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("PHP5+", "Apache");");
sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("SQLite -", "cool ding");");
sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("Bezoek ", "sqlite.org");");
// Wijzig het veld met id=1
sqlite_query ($db, "UPDATE tabel1 SET field2="Apache+Linux" WHERE id=1;");
// Laten we een voorbeeld nemen van de gegevens

// In een lus zullen we alle ontvangen gegevens weergeven

{
echo($array [ "veld1" ]. $array [ "veld2" ]. " (invoer-ID: " . $array [ "id" ]. ")
" );
}
?>

Als resultaat krijgen we:

PHP5+Apache+Linux (invoer-ID:1)
SQLite is een cool ding (post-ID: 2)
bezoek sqlite.org (bericht-ID:3)

Een record uit een tabel verwijderen: Om een ​​record uit een tabel te verwijderen, moet u een verwijderverzoek (DELETE) doorgeven aan de functie sqlite_query().

// Maak een nieuwe database
$db = sqlite_open("mijn_database.db" );
if (! $db ) exit( "Kan database niet aanmaken!");
// Maak tabel "table1" in de database
$query_table = sqlite_query ($db, "TABEL MAKEN tabel1
(id INTEGER PRIMAIRE SLEUTEL,
/* ID wordt automatisch automatisch verhoogd */
veld1 TEKST,
veld2 TEKST);
"
);
if (! $query_table ) exit( "Kan geen tabel in de database maken!");
// Schrijf iets naar de tabel
sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("PHP5+", "Apache");");
sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("SQLite -", "cool ding");");
sqlite_query ($db, "INSERT INTO tabel1(veld1, veld2) VALUES ("Bezoek ", "sqlite.org");");
// Verwijder het veld met id=2
sqlite_query ($db, "VERWIJDEREN UIT tabel1 WAAR id=2;");
// Laten we een voorbeeld nemen van de gegevens
$query = sqlite_query ($db, "SELECT * FROM tabel1;" );
// In een lus zullen we alle ontvangen gegevens weergeven
terwijl ($array = sqlite_fetch_array ($query ))
{
echo($array [ "veld1" ]. $array [ "veld2" ]. " (invoer-ID: " . $array [ "id" ]. ")
" );
}
?>

SQLite is een database die enigszins lijkt op MySQL. Het fundamentele verschil tussen SQLite en andere databases is dat de gehele database één bestand is. Als in MySQL de database ergens in de wildernis van de server is opgeslagen en niet beschikbaar is voor overdracht, dan is in SQLite alles waanzinnig eenvoudig: één bestand - één database.

Uiteraard moet de server de SQLite-driver ondersteunen (net als elke andere database), maar in de regel zijn daar nu geen problemen mee.

Met SQLite kunt u zoals gewoonlijk met de database werken met behulp van SQL, waarbij u tabellen, velden, enz. maakt. Over het algemeen kunnen we zeggen dat SQLite op geen enkele manier inferieur is aan de gebruikelijke MySQL, met uitzondering misschien van langzamer werken met "zware" SQL-query's voor het bijwerken van gegevens (invoegen en bijwerken). Maar nogmaals, dit is voor sites met een hoge belasting.

Een groot voordeel van SQLite is het gemak van draagbaarheid. Een bestand kopiëren - wat is eenvoudiger? U hoeft zich geen zorgen te maken over back-ups, zoals in MySQL hoeft u geen gebruiker met een wachtwoord op de server aan te maken, u hoeft de database zelf niet aan te maken. Met SQLite nemen we het gewoon en gebruiken het.

Om met een database in PHP te werken, kun je beter PDO - PHP Data Objects - gebruiken, dit zijn de zogenaamde. een abstractie die één enkele interface biedt voor het werken met verschillende databases. In theorie kun je met PDO naar elke database overschakelen zonder de SQL-query's te wijzigen, bijvoorbeeld van MySQL naar SQLite. Alleen de verbindingsparameters veranderen.

Op deze manier maakt SQLite verbinding via PDO. Hiervoor is niets nodig, aangezien PDO zelf al in PHP is opgenomen, en de SQLite-driver meestal ook op servers is opgenomen.

Maar voordat u begint met programmeren, moet u de basis zelf maken. Voor MySQL is er bijvoorbeeld phpMyAdmin, waarmee u verschillende bewerkingen kunt uitvoeren. Voor SQLite zijn er ook soortgelijke ontwikkelingen, maar ik zal laten zien hoe je dit via de FireFox-browser kunt doen. Om dit te doen, hoeft u alleen de add-on te installeren.

Om deze add-on aan het FireFox-hoofdmenu ("hamburger") toe te voegen, klikt u op Bewerken en sleept u het pictogram naar het menu.

Dit is geïnstalleerd en u kunt het gebruiken.

Laten we eerst een nieuwe database maken. In SQLite is dit een apart bestand met de extensie .sqlite. SQLite Manager zal u vragen om de map op te geven waar dit bestand zal worden opgeslagen. Selecteer of maak een nieuwe map. Dit maakt ons nog niet zoveel uit. Als gevolg hiervan wordt een sqlite-bestand met een nieuwe database gemaakt.

Dit bestand kan overal naartoe worden verplaatst (en hernoemd) en vervolgens worden geopend met de menuopdracht Databases - Verbind database.

Nu moet u een tabel (of tabellen) in de database maken.

SQLite Manager maakt automatisch servicetabellen aan sqlite_XXX. We raken ze niet aan en ze storen ons niet.

In een tabel in een database wordt gestructureerde informatie opgeslagen. De tabel moet een set velden bevatten met de opgegeven eigenschappen. Het veld kan bijvoorbeeld een geheel getal zijn - voor gehele getallen, of tekst - voor tekst. Het aantal velden kan willekeurig zijn en wordt alleen bepaald door de taak van de webmaster.

Laten we bijvoorbeeld een tabelpagina's met velden hebben

  • Identiteitskaart- uniek nummer (automatisch verhogen)
  • naaktslak- koppeling
  • tekst- vrije tekst
  • hits- aantal weergaven

Nadat de tabel is gemaakt, let u op het blok 'SQL-instructie die dit object heeft gemaakt'. Het bevat een SQL-query die kan worden gebruikt om een ​​tabel te maken. Het kan handig zijn als u via PHP een tabel in de database moet maken.

Op het tabblad Bekijken en zoeken kunt u de tabel bewerken. Laten we bijvoorbeeld twee lijnen maken waar het veld naaktslak zal thuis zijn en contact opnemen. Dit worden twee pagina's: thuis En website/contactpersoon.

Veld hits bevat een paginaweergaveteller. De tekst kan van alles zijn.

Dat is alles, de basis is klaar, nu kun je hem gebruiken.

Laten we de taak instellen. Laten we een eenvoudige website hebben die via een korte link (slug) de bijbehorende tekst en het aantal views weergeeft.

Als we dit op een lokale server doen, laat de site dan in de directory staan sqlite. Er zit een submap in db, waar we onze pagina's.sqlite.

We kunnen routering uitvoeren zoals beschreven in het vorige artikel. Bestand.htaccess

AddDefaultCharset UTF-8 Opties -Indexen RewriteEngine op RewriteBase /sqlite/ RewriteCond %(REQUEST_FILENAME) !-f RewriteCond %(REQUEST_FILENAME) !-d RewriteRule (.*) /sqlite/index.php?$1

IN index.php De routing zelf wordt in één regel beschreven:

$pagina = ($p = sleutel($_GET)) ? $p: "thuis";

  • sluit de basis aan
  • we maken daarin een selectie per $page
  • de ontvangen gegevens weergeven
Ik heb het algoritme opzettelijk vereenvoudigd om de PHP-code niet ingewikkelder te maken.

Er zijn twee opties om met de database te werken. De eerste is native PHP-code. Het is niet erg ingewikkeld, maar de overvloed aan parameters is een beetje vervelend. Daarom is de tweede optie het gebruik van extra wrapperbibliotheken. Met hen wordt de code beknopter.

Ik zal de index.php-code in de eerste versie geven:

setAttribute(BOB::ATTR_DEFAULT_FETCH_MODE, BOB::FETCH_ASSOC);

$sql ="SELECT * VAN pagina's WAAR slug=:pagina LIMIT 1"; $sth = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));.

$sth->execute(array(":pagina" => $pagina));

$rows = $sth->fetchAll();

print_r($rijen); // voer hier gegevens uit ) catch(Exception $e) ( echo $e->getMessage(); ) # einde van bestand

Voor de tweede optie heb ik een php-bibliotheek van de site labaka.ru gebruikt, die ik in een submap heb geplaatst

De gegevens die naar de SQL-query worden verzonden, moeten worden gevalideerd. Wanneer in PDO data prepare wordt gebruikt (PDO::prepare), wordt het ontsnappen van parameters geforceerd. Hiermee kunt u zich beschermen tegen mogelijke SQL-injecties.

Wanneer een SQLite-database is verbonden en er geen databasebestand is, wordt dit automatisch aangemaakt. Dit is de basis voor het maken van een database onmiddellijk nadat deze is aangesloten en voor het maken van de benodigde tabellen met de eerste SQL-query (waarover ik hierboven schreef).

Nog een opmerking over SQLite. Omdat de database een bestand is, kan deze rechtstreeks via een browser vanaf een URL worden gedownload. Daarom is het beter om de directory met SQLite-bestanden te beschermen via .htaccess met de regel Deny from all. Of plaats het hoger dan de hoofdmap van www.

SQLite kan handig zijn voor kleine taken waarvoor een kleine database nodig is: tellers, stemmen, metagegevens van pagina's, enz.

U kunt naar dit artikel verwijzen.

Onlangs moest ik een systeem maken waarmee ik snel gegevens kon genereren en deze in een SQLite-database kon opslaan. En het moest allemaal heel snel werken. Het was trouwens noodzakelijk om de database aan MySQL toe te voegen. Wat MySQL betreft, is er een ruime keuze aan tools voor het toevoegen van gegevens:

  1. eenvoudig INVOEGEN
  2. INSERT en veel toegevoegde waarden (BULK INSERT)
  3. toevoegen via CSV-bestanden

De snelste was zonder twijfel optie nr. 3. Het werd trouwens al in het systeem gebruikt. Met deze optie kunt u overigens binnen enkele seconden enkele honderdduizenden/miljoen records aan de database toevoegen. Natuurlijk speelt de serverhardware hier ook een grote rol, maar daar wordt nu niet over gesproken.

Zoals we allemaal heel goed weten, en meer dan eens hebben gezien, vereisen grotere mogelijkheden meer middelen en/of aanvullende software om interactie met dit systeem toe te voegen en aanvullende beperkingen op te leggen.

In tegenstelling tot MySQL is SQLite vrij licht van gewicht en heeft het slechts één bibliotheek nodig om ermee te werken. Databasebestanden kunnen overal worden geplaatst en overgedragen. Maar toevoegen aan de database kan alleen via een eenvoudige INSERT. Dit betekent dat toevoegen via "BULK" INSERT niet wordt ondersteund. En als de tabel ten minste één sleutel heeft (het zal tenminste een primaire sleutel zijn), betekent het toevoegen van één record ook dat de indexen opnieuw moeten worden opgebouwd. Stel je nu voor dat je in de kortst mogelijke tijd enkele duizenden records moet toevoegen. Ondanks hoe licht en snel SQLite is, kost het behoorlijk wat tijd.

Er werd een onverwachte oplossing gevonden (althans voor mij - ik heb niet alle mogelijkheden van deze database bestudeerd) - het gebruik van transacties. Dit gaf een 10-100 keer hogere snelheid. Het opslaan/succesvol voltooien van een transactie gaat snel; in feite worden de gegevens eenvoudigweg in het databasebestand gedumpt.

Wat werd beschreven was goed, maar voor de complete set was het noodzakelijk dat deze gegevens naar verschillende sqlite-bestanden werden geschreven. Hiervoor werd een eenvoudige en beproefde methode gebruikt: het gebruik van verschillende descriptoren. Gelukkig waren er weinig bestanden. Na al deze manipulaties hebben we een script dat in minder dan 5 minuten wordt uitgevoerd en gegevens naar N bestanden met M regels in elk schrijft. Laat me meteen een reservering maken - in dit geval is er één tabel in elk databasebestand.

En nu wat cijfers:

In testdatabases werd voor elk bestand een transactie geopend, vervolgens gesloten en opgeslagen. Belangrijke opmerking: Elke SQLite kan slechts één handle per bestand toestaan. Als u met de tweede handle probeert te communiceren met de database, wordt er een fout gegenereerd.

Zoals u kunt zien, kunt u met deze aanpak in minimale tijd een grote hoeveelheid gegevens toevoegen.

Het is de moeite waard om te vermelden dat toen ik zei dat de enige manier om een ​​database aan SQLite toe te voegen een simpele INSERT is, ik niet aangaf dat dit de enige optie is die de SQL-taal gebruikt.

Er is nog een andere optie - een analoog van "LOAD DATA ..." in MySQL - het importeren van gegevens uit CSV-bestanden. Alleen met deze optie kunt u gegevens rechtstreeks vanuit de SQLite-omgeving toevoegen. Met andere woorden, u moet eerst de database openen, bijvoorbeeld oproepen vanaf de console.

Importeer de tabel path_to_csv_file

Het standaardscheidingsteken is het teken "|".

Om het scheidingsteken te wijzigen, moet u de opdracht oproepen:

Scheidingsteken

Als scheidingsteken moet u een kolomscheidingsteken opgeven, bijvoorbeeld “,”.

De optelsnelheid overschrijdt in dit geval de snelheid van de eerder beschreven methode met een factor 100. Waarom werd deze methode dan niet gebruikt? Het punt is dit: een programmeertaal aan de serverzijde (in dit geval PHP) kan één versie van de sqlite-bibliotheek gebruiken, en een andere versie kan (of kan niet) op het systeem worden geïnstalleerd. Wanneer u deze twee methoden voor sqlite-interactie combineert, is de database mogelijk niet beschikbaar voor een van de opties: er wordt een fout gegenereerd wanneer u deze probeert te lezen.

Dit is een bibliotheek geschreven in C-taal die werk biedt met SQL. Deze tool behoort tot relationele databasebeheersystemen. De meeste SQL-databases werken op client/server-basis. Laten we MySQL als voorbeeld nemen. Tijdens bedrijf worden gegevens van de MySQL-server gehaald en als antwoord op het verzoek verzonden. Als u SQLite gebruikt, worden de gegevens rechtstreeks van de schijf gehaald, d.w.z. het is niet nodig om contact op te nemen met de server.

Installatie

We zullen communiceren met de database via de opdrachtregelinterface sqlite3(CLI) op Linux. Werken met sqlite3 De CLI in MAC OS en Windows wordt op dezelfde manier uitgevoerd, maar ik raad u aan om 5 minuten te besteden aan het installeren van de virtuele machine om uw computer niet vol te proppen met onnodige software.

Om sqlite3 op Linux te installeren, voert u de opdracht uit:

sudo apt-get install sqlite3 libsqlite3-dev

Als gevolg hiervan wordt het op uw machine geïnstalleerd sqlite3. Volg de instructies om dit hulpprogramma op een ander besturingssysteem te installeren. Om sqlite te starten, voert u de opdracht sqlite3 uit in de console. Het resultaat zou als volgt moeten zijn:

De tweede regel bevat een hint dat u voor hulp het commando.help moet uitvoeren. Laten we dit doen. Als resultaat zullen we zien Meta-opdrachten en hun beschrijving.

Meta-opdrachten

Meta-opdrachten- ontworpen voor het genereren van tabellen en andere administratieve handelingen. Ze eindigen allemaal punt. Laten we de lijst met opdrachten doornemen die nuttig kunnen zijn:

Standaard commando's

Laten we nu de lijst doornemen standaard commando's sqlite3, die zijn ontworpen om te communiceren met de database. Standaard commando's kan in drie groepen worden ingedeeld:

  • Gegevens Beschrijving Taal DDL: Commando's om een ​​tabel te maken, databases, tabellen en meer te wijzigen en te verwijderen.
  • DML-gegevensbeheertaal: laat de gebruiker gegevens manipuleren (toevoegen/wijzigen/verwijderen).
  • DQL-querytaal: Maakt het ophalen van gegevens mogelijk.
  • Opmerking: SQLite ondersteunt ook vele andere opdrachten, waarvan u een lijst kunt vinden. Omdat deze les bedoeld is voor beginners, beperken we ons tot de genoemde reeks opdrachten.

    SQLite-databasebestanden zijn platformonafhankelijk. Ze kunnen zich op verschillende soorten apparaten bevinden.

    • E-mail
    • Opmerking

    Van al deze velden mag alleen het siteadres leeg zijn. We kunnen ook een kolom introduceren voor het nummeren van opmerkingen. Laten we het post_id noemen.

    Laten we nu de gegevenstypen voor elk van de kolommen definiëren:

    Attribuut Gegevenstype
    post_id GEHEEL GETAL
    naam TEKST
    e-mail TEKST
    website_url TEKST
    opmerking TEKST

    U kunt alle gegevenstypen vinden die in SQLite3 worden ondersteund.

    Er moet ook worden opgemerkt dat in SQLite3 de gegevens die in een kolom worden ingevoegd, kunnen verschillen van het opgegeven type. Dit werkt niet in MySQL.

    Laten we nu de database maken. Als u zich nog steeds in de sqlite3-interface bevindt, typt u command.quit om af te sluiten. Voer nu in:

    sqlite3 commentaar_sectie.db

    Als gevolg hiervan hebben we in de huidige map een bestand commentaar_sectie.db.

    Opmerking: Als u geen bestandsnaam opgeeft, zal sqlite3 een tijdelijke database maken.

    Een tabel maken

    Om opmerkingen op te slaan, moeten we een tabel maken. Laten we het commentaar noemen. Wij voeren het commando uit:

    MAAK TABEL opmerkingen (post_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, naam TEXT NOT NULL, e-mail TEXT NOT NULL, website_url TEXT NULL, comment TEXT NOT NULL);

    NOT NULL zorgt ervoor dat de cel geen nulwaarde bevat. PRIMARY KEY en AUTOINCREMENT breiden de mogelijkheden van het veld uit post_id.

    Om te verifiëren dat de tabel is gemaakt, voert u de metaopdracht .tables uit. Als gevolg hiervan zien we onze opmerkingentabel.

    Opmerking: Typ .schema-opmerkingen om de tabelstructuur op te halen

    Nu kunnen we gegevens in de tabel invoeren.

    RIJEN INVOEGEN

    Stel dat we de volgende invoer moeten maken:

    Naam: Shivam Mamgain E-mail: [e-mailadres beveiligd] Website: shivammg.blogspot.com Commentaar: Geweldige tutorial voor beginners.

    Om in te voegen gebruiken we het commando INVOEGEN.

    INSERT INTO opmerkingen (naam, e-mailadres, website_url, opmerking) VALUES ("Shivam Mamgain", " [e-mailadres beveiligd]", "shivammg.blogspot.com", "Geweldige tutorial voor beginners.");

    Het is niet nodig om een ​​waarde op te geven voor post_id omdat het wordt automatisch gegenereerd dankzij de AUTOINCREMENT-instelling.

    Om uw hand te vullen, kunt u nog een paar regels invoegen.

    STEEKPROEF

    Om gegevens op te halen, gebruiken we de opdracht SELECTEER.

    SELECT post_id, naam, e-mail, website_url, commentaar VAN opmerkingen;

    Hetzelfde verzoek kan er als volgt uitzien:

    SELECTEER * UIT opmerkingen;

    Als gevolg hiervan worden alle rijen uit de tabel gehaald. Het resultaat kan verschijnen zonder kolomafbakening en zonder koptekst. Om dit op te lossen doen we:

    Om de header weer te geven, typt u .headers ON .

    Om kolommen weer te geven, voert u de opdracht .mode column uit.

    Wij voeren uit SELECTEER opnieuw aanvragen.

    Opmerking: Het weergavetype kan worden gewijzigd met behulp van de .mode-metaopdracht.

    UPDATE

    Laten we aannemen dat het veld e-mail voor gebruiker 'Shivam Mamgain' moet worden gewijzigd in ' [e-mailadres beveiligd]’. We voeren het volgende commando uit:

    Als gevolg hiervan wordt de invoer gewijzigd.

    Opmerking: Kolomwaarde naam is mogelijk niet uniek, dus meer dan één rij kan door de opdracht worden beïnvloed. Voor alle gebruikers waarbij de waarde naam= ‘Shivam Mamgain’, veld e-mail wordt gewijzigd in ‘ [e-mailadres beveiligd]’. Als u een specifieke regel wilt wijzigen, moet u deze volgen via het veld post_id. We hebben het gedefinieerd als PRIMARY KEY, wat het unieke karakter van de waarde garandeert.