SQLite Check -begrensning

SQLite Check -begrensning
Begrensninger er begrensninger som brukes på databasetabellene for å gi sikkerhet og redundans til tabellens data og unngå uautorisert tilgang. Mange begrensninger er tilgjengelige i SQL -databasen, i.e., Primærnøkkel, unik nøkkel, utenlandsk nøkkel, sammensatt sjekk, der klausuler og mange flere. En av disse begrensningene er SQLite Check -begrensningen som er spesifisert i Create Table Instruction på tidspunktet for tabellopprettelsen. Derfor vil vi diskutere bruken av den i noen av eksemplene på SQLite -tabeller.Start denne artikkelen ved å åpne skallet på Ubuntu 20.04 Desktop -skjerm. Prøv snarveien “Ctrl+Alt+T” for å gjøre det. Start terminalen og oppdater systemet ditt først. For oppdateringen kan du prøve Apt Update-kommandoen, etterfulgt av å bruke et passord for den for øyeblikket innloggede administratorbrukeren. I løpet av sekunder oppdateres systemet ditt.

Etter systemoppdateringen, oppgrader den også. Prøv den samme instruksjonen med "Oppgradering" -tnøkkelordet i stedet for "Oppdater" nøkkelord. Denne prosessen er fullført på noen få sekunder siden alle pakkene allerede var oppdatert og oppgradert.

Det er på tide å kjøre sqlite -databasen, jeg.e., C-bibrary av SQL, som allerede er installert på skallet ved hjelp av "SQLite3" -tnøkkelordet. Start og start skallet ved hjelp av følgende kommando:

La oss liste opp alle tabellene til en SQLite -database på SQLite -konsollen vår. Etter å ha brukt “.tabeller ”instruksjon, fant vi ut at det ikke er noen tabeller i databasen. Derfor må vi lage en.

Lag en ny tabell “Data” på databasen ved hjelp av CREATE TABLE -instruksjonen. Vi opprettet tre kolonner i denne tabell-ID, navn og alder. Du må bruke sjekkbegrensningen på minst en av kolonnene. Derfor la vi til sjekkbegrensningen. Denne sjekken inneholder betingelsen om at verdien av en kolonne “alder” må være større enn 18. “.tabeller ”instruksjon viser at tabellen er opprettet med hell.

Lag tabelldata (ID INT Primærnøkkel, navnetekst ikke null, alder INT -sjekk (alder> 18));

Vår datatabell er tom siden vi ikke hadde satt inn noen poster ennå. Så vi legger noen poster i tabellen for å presentere bruken av sjekkbegrensningen som er brukt på alderskolonnen. Vi brukte innsatsen i instruksjon for å sette inn tre unike poster i ID-, navn- og alderskolonne i en datatabell. Alle postene ble lagt til med suksess uten feil. Vi la til verdiene større enn 18 i alderskolonnen og ga den unike primære nøkkelen, for eksempel en unik ID, for hver post. SELECT -spørringen utføres for å hente alle postene fra datatabellen, i.e., Totalt tre poster.

Sett inn data (ID, navn, alder) verdier (1, "Harry", 22);
Sett inn data (ID, navn, alder) verdier (2, "Bryan", 25);
Sett inn data (ID, navn, alder) verdier (3, "Julia", 44);
Velg * fra data;

La oss prøve å legge inn en annen post innenfor ID, navn og alderskolonne i en datatabell ved hjelp av instruksjonen.

Vi satte inn en enkelt unik post i tabellen "Data" og fikk feilen "Kontroller begrensning mislyktes: data". Vi brukte verdien 17 for kolonnealderen, som er sjekkbegrensningen vi brukte alder> 18.

Sett inn data (ID, navn, alder) verdier (4, "Mario", 17);

La oss se på hvordan en sjekkbegrensning fungerer og reagerer på de negative verdiene mens du blir satt inn i den spesifikke kolonnen.

Vi prøvde innsatsen i instruksjon for å sette inn 4th Registrer i tabellen “Data” og mottok feilen “Kontroller begrensning mislyktes: Data” igjen. Årsaken bak denne feilen er bruken av negativ heltallverdi “-22” for kolonnealderen på en tabell som igjen er sjekkbegrensningen som brukes på denne kolonnen, i.e., Sjekk “Alder> 18”.

Sett inn data (ID, navn, alder) verdier (5, "Mario", -22);

La oss se på et annet eksempel for å bruke sjekkbegrensningen på den spesifikke kolonnen.

Vi opprettet en ny tabell, "Person", med to kolonner, "ID" og "Navn". Kontrollbegrensningen brukes på kolonnen "Navn" på denne tabellen på tidspunktet for opprettelse av tabellen. Begrensningen viser at lengden på en kolonne "navn" -verdi ikke må overstige åtte tegn, i.e., lengde (navn) <= 8. After that, we inserted three unique records within the newly created table “Person” with the help of an INSERT INTO instruction. The SELECT instruction displays all three records on our SQLite query screen.

Opprett tabellperson (ID INT Primærnøkkel, Navn Tekstkontroll (lengde (navn) <= 8));
Sett inn personverdier (ID, navn) (1, "William");
Sett inn personverdier (ID, navn) (2, "Peter K");
Sett inn personverdier (ID, navn) (3, "Leonardo");
Velg * fra person;

På å sette inn 4th Registrer med innsatsen i instruksjonen, la vi til verdien som inneholder mer enn åtte tegn for kolonnen "Navn" på denne tabellen og fikk feilen "Sjekkbegrensningen mislyktes.

Sett inn personverdier (ID, navn) (4, "Leonardo Decaprio");

Her er en annen metode for å legge til en sjekkbegrensning på den spesifikke kolonnen.

Du må spesifisere en kolonne som unik i datatypen. Vi opprettet en ny tabelltest med Create Table -instruksjonen med to kolonner, ID og alder på heltallstype. Alderskolonnen er spesifisert som unik. Etter dette prøvde vi innsatsen i kommandoen for å sette inn de tre postene i testtabellen, og vi fikk et vellykket resultat i henhold til SELECT -instruksjonen.

Opprett tabelltest (ID int primærnøkkel, alder ikke null unik));
Sett inn i test (ID, alder) verdier (1, 33);
Sett inn i test (ID, alder) verdier (2, 46);
Sett inn i test (ID, alder) verdier (3, 26);
Velg * fra test;

For å bruke sjekkbegrensningen i alderskolonnen som inneholder den unike begrensningen, kan du prøve alter tabellinstruksjonen etterfulgt av modifiseringsklausulen som inneholder sjekkbegrensningen.

ALTER TABLE TEST ENDRE AGE INT IKKE NULL CHECK (Alder < 55);

Når vi satte inn større verdi, fikk vi sjekkbegrensningen mislykket feil igjen.

Sett inn i test (ID, alder) verdier (4, 56);

Konklusjon

Denne artikkelen inneholder enorm kunnskap om sjekkbegrensningen til SQLite. Vi diskuterte bruken av bruken i spørsmålene mens vi opprettet en tabell og hvordan den reagerer på gale verdier. Vi håper at metodene vi brukte lett kan utrydde all forvirring.