SQLite - ograniczenia

Ograniczenia to reguły wymuszane na kolumnach danych w tabeli. Służą one do ograniczenia typu danych, które mogą zostać umieszczone w tabeli. Zapewnia to dokładność i wiarygodność danych w bazie danych.

Ograniczenia mogą dotyczyć poziomu kolumny lub tabeli. Ograniczenia na poziomie kolumny są stosowane tylko do jednej kolumny, podczas gdy ograniczenia na poziomie tabeli są stosowane do całej tabeli.

Poniżej znajdują się powszechnie używane ograniczenia dostępne w SQLite.

  • NOT NULL Constraint - Zapewnia, że ​​kolumna nie może mieć wartości NULL.

  • DEFAULT Constraint - Dostarcza domyślną wartość dla kolumny, gdy żadna nie jest określona.

  • UNIQUE Constraint - Zapewnia, że ​​wszystkie wartości w kolumnie są różne.

  • PRIMARY Key - Unikalnie identyfikuje każdy wiersz / rekord w tabeli bazy danych.

  • CHECK Constraint - Zapewnia, że ​​wszystkie wartości w kolumnie spełniają określone warunki.

NOT NULL Constraint

Domyślnie kolumna może zawierać wartości NULL. Jeśli nie chcesz, aby kolumna miała wartość NULL, musisz zdefiniować takie ograniczenie w tej kolumnie, określając, że NULL nie jest teraz dozwolona dla tej kolumny.

NULL to nie to samo, co brak danych, reprezentuje raczej nieznane dane.

Przykład

Na przykład następująca instrukcja SQLite tworzy nową tabelę o nazwie COMPANY i dodaje pięć kolumn, z których trzy, ID i NAME oraz AGE, określają, że należy nie akceptować wartości NULL.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

DEFAULT Constraint

Ograniczenie DEFAULT zapewnia wartość domyślną dla kolumny, gdy instrukcja INSERT INTO nie zawiera określonej wartości.

Przykład

Na przykład następująca instrukcja SQLite tworzy nową tabelę o nazwie COMPANY i dodaje pięć kolumn. Tutaj kolumna SALARY jest domyślnie ustawiona na 5000,00, więc w przypadku, gdy instrukcja INSERT INTO nie podaje wartości dla tej kolumny, to domyślnie ta kolumna będzie ustawiona na 5000,00.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

UNIQUE Constraint

Ograniczenie UNIQUE zapobiega sytuacji, w której dwa rekordy mają identyczne wartości w określonej kolumnie. Na przykład w tabeli FIRMA możesz chcieć, aby dwie lub więcej osób nie miało identycznego wieku.

Przykład

Na przykład następująca instrukcja SQLite tworzy nową tabelę o nazwie COMPANY i dodaje pięć kolumn. Tutaj kolumna AGE jest ustawiona na UNIQUE, więc nie możesz mieć dwóch rekordów z tym samym wiekiem -

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL UNIQUE,
   ADDRESS        CHAR(50),
   SALARY         REAL    DEFAULT 50000.00
);

PRIMARY KEY Constraint

Ograniczenie PRIMARY KEY jednoznacznie identyfikuje każdy rekord w tabeli bazy danych. W tabeli może być więcej kolumn typu UNIQUE, ale tylko jeden klucz podstawowy. Klucze podstawowe są ważne podczas projektowania tabel bazy danych. Klucze podstawowe to unikalne identyfikatory.

Używamy ich do odwoływania się do wierszy tabeli. Podczas tworzenia relacji między tabelami klucze podstawowe stają się kluczami obcymi w innych tabelach. Ze względu na „wieloletni nadzór nad kodowaniem” klucze podstawowe mogą mieć wartość NULL w SQLite. Nie dotyczy to innych baz danych.

Klucz podstawowy to pole w tabeli, które jednoznacznie identyfikuje każdy wiersz / rekord w tabeli bazy danych. Klucze podstawowe muszą zawierać unikalne wartości. Kolumna klucza podstawowego nie może mieć wartości NULL.

Tabela może mieć tylko jeden klucz podstawowy, który może składać się z jednego lub wielu pól. Gdy wiele pól jest używanych jako klucz podstawowy, nazywa się jecomposite key.

Jeśli tabela ma klucz podstawowy zdefiniowany w jakimkolwiek polu (polach), nie można mieć dwóch rekordów o tej samej wartości w tych polach.

Przykład

Widzieliście już różne przykłady powyżej, w których utworzyliśmy tabelę COMPANY z identyfikatorem jako kluczem podstawowym.

CREATE TABLE COMPANY(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL
);

SPRAWDŹ ograniczenie

CHECK Constraint umożliwia warunkowi sprawdzenie wartości wprowadzanej do rekordu. Jeśli warunek zostanie oceniony jako fałszywy, rekord narusza ograniczenie i nie jest wprowadzany do tabeli.

Przykład

Na przykład następujący SQLite tworzy nową tabelę o nazwie COMPANY i dodaje pięć kolumn. Tutaj dodajemy kolumnę CHECK with SALARY, abyś nie mógł mieć żadnej SALARY Zero.

CREATE TABLE COMPANY3(
   ID INT PRIMARY KEY     NOT NULL,
   NAME           TEXT    NOT NULL,
   AGE            INT     NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL    CHECK(SALARY > 0)
);

Porzucanie ograniczenia

SQLite obsługuje ograniczony podzbiór ALTER TABLE. Polecenie ALTER TABLE w SQLite umożliwia użytkownikowi zmianę nazwy tabeli lub dodanie nowej kolumny do istniejącej tabeli. Nie można zmienić nazwy kolumny, usunąć kolumny ani dodać lub usunąć ograniczeń z tabeli.