SQLite
 sql >> Baza danych >  >> RDS >> SQLite

Utwórz tabelę SQLite

Podsumowanie :w tym samouczku dowiesz się, jak tworzyć nowe tabele za pomocą SQLite CREATE TABLE oświadczenie przy użyciu różnych opcji.

Wprowadzenie do SQLite CREATE TABLE oświadczenie

Aby utworzyć nową tabelę w SQLite, użyj CREATE TABLE oświadczenie przy użyciu następującej składni:

CREATE TABLE [IF NOT EXISTS] [schema_name].table_name (
	column_1 data_type PRIMARY KEY,
   	column_2 data_type NOT NULL,
	column_3 data_type DEFAULT 0,
	table_constraints
) [WITHOUT ROWID];Code language: SQL (Structured Query Language) (sql)

W tej składni:

  • Najpierw określ nazwę tabeli, którą chcesz utworzyć po CREATE TABLE słowa kluczowe. Nazwa tabeli nie może zaczynać się od sqlite_ ponieważ jest zarezerwowany do wewnętrznego użytku SQLite.
  • Po drugie, użyj IF NOT EXISTS możliwość utworzenia nowej tabeli, jeśli nie istnieje. Próba utworzenia tabeli, która już istnieje bez użycia IF NOT EXISTS opcja spowoduje błąd.
  • Po trzecie, opcjonalnie określ schema_name do której należy nowa tabela. Schemat może być główną bazą danych, temp baza danych lub dowolna dołączona baza danych.
  • Po czwarte, określ listę kolumn tabeli. Każda kolumna ma nazwę, typ danych i ograniczenie dotyczące kolumny. SQLite obsługuje PRIMARY KEY , UNIQUE , NOT NULL i CHECK ograniczenia kolumn.
  • Po piąte, określ ograniczenia tabeli, takie jak PRIMARY KEY , FOREIGN KEY , UNIQUE i CHECK ograniczenia.
  • Na koniec opcjonalnie użyj WITHOUT ROWID opcja. Domyślnie wiersz w tabeli ma niejawną kolumnę, która jest określana jako rowid , oid lub _rowid_ kolumna. rowid kolumna przechowuje 64-bitowy klucz liczby całkowitej ze znakiem, który jednoznacznie identyfikuje wiersz wewnątrz tabeli. Jeśli nie chcesz, aby SQLite utworzył rowid kolumna, określasz WITHOUT ROWID opcja. Tabela zawierająca rowid kolumna jest znana jako rowid stół. Zauważ, że WITHOUT ROWID opcja jest dostępna tylko w SQLite 3.8.2 lub nowszym.

Pamiętaj, że kluczem podstawowym tabeli jest kolumna lub grupa kolumn, które jednoznacznie identyfikują każdy wiersz w tabeli.

SQLite CREATE TABLE przykłady

Załóżmy, że musisz zarządzać kontaktami za pomocą SQLite.

Każdy kontakt zawiera następujące informacje:

  • Imię
  • Nazwisko
  • E-mail
  • Telefon

Wymaganiem jest, aby adres e-mail i telefon były unikalne. Ponadto każdy kontakt należy do jednej lub wielu grup, a każda grupa może mieć zero lub wiele kontaktów.

W oparciu o te wymagania opracowaliśmy trzy tabele:

  • contacts tabela przechowująca informacje kontaktowe.
  • groups tabela przechowująca informacje o grupie.
  • contact_groups tabela, która przechowuje relacje między kontaktami i grupami.

Poniższy diagram bazy danych ilustruje tabele:contacts groups i contact_groups.

Poniższa instrukcja tworzy contacts tabela.

CREATE TABLE contacts (
	contact_id INTEGER PRIMARY KEY,
	first_name TEXT NOT NULL,
	last_name TEXT NOT NULL,
	email TEXT NOT NULL UNIQUE,
	phone TEXT NOT NULL UNIQUE
);Code language: SQL (Structured Query Language) (sql)

Wypróbuj

contact_id jest głównym kluczem contacts tabela.

Ponieważ klucz podstawowy składa się z jednej kolumny, możesz użyć ograniczenia kolumny.

first_name i last_name kolumny mają TEXT klasa pamięci i te kolumny są NOT NULL . Oznacza to, że musisz podać wartości podczas wstawiania lub aktualizowania wierszy w contacts tabela.

Adres e-mail i telefon są unikalne, dlatego używamy UNIQUE ograniczenie dla każdej kolumny.

Poniższa instrukcja tworzy groups tabela:

CREATE TABLE groups (
   group_id INTEGER PRIMARY KEY,
   name TEXT NOT NULL
);Code language: SQL (Structured Query Language) (sql)

Wypróbuj

groups tabela jest dość prosta z dwiema kolumnami:group_id i name . group_id kolumna jest główną kolumną klucza.

Poniższa instrukcja tworzy contact_groups tabela:

CREATE TABLE contact_groups(
   contact_id INTEGER,
   group_id INTEGER,
   PRIMARY KEY (contact_id, group_id),
   FOREIGN KEY (contact_id) 
      REFERENCES contacts (contact_id) 
         ON DELETE CASCADE 
         ON UPDATE NO ACTION,
   FOREIGN KEY (group_id) 
      REFERENCES groups (group_id) 
         ON DELETE CASCADE 
         ON UPDATE NO ACTION
);Code language: SQL (Structured Query Language) (sql)

Wypróbuj

contact_groups tabela ma klucz podstawowy, który składa się z dwóch kolumn:contact_id i group_id .

Aby dodać ograniczenie klucza podstawowego tabeli, użyj następującej składni:

PRIMARY KEY (contact_id, group_id)Code language: SQL (Structured Query Language) (sql)

Ponadto contact_id i group_id są klucze obce. Dlatego używasz FOREIGN KEY ograniczenie do zdefiniowania klucza obcego dla każdej kolumny.

FOREIGN KEY (contact_id) 
   REFERENCES contacts (contact_id) 
      ON DELETE CASCADE 
      ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql)
FOREIGN KEY (group_id) 
    REFERENCES groups (group_id) 
      ON DELETE CASCADE 
      ON UPDATE NO ACTIONCode language: SQL (Structured Query Language) (sql)

Zwróć uwagę, że omówimy to w FOREIGN KEY szczegółowo w kolejnym samouczku.

W tym samouczku nauczyłeś się tworzyć nową tabelę z różnymi opcjami przy użyciu SQLite CREATE TABLE oświadczenie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiedy powinienem zamknąć kursor i db?

  2. Utwórz ograniczenie CHECK w SQLite

  3. Korzystanie z Room DB w projekcie biblioteki

  4. Klucz obcy SQLite

  5. Nie można zaktualizować wiersza w Sqlite w systemie Android, ale nie zgłasza żadnego błędu