SQLite Twórz, zmieniaj, upuszczaj tabelę z przykładami

⚡ Inteligentne podsumowanie

SQLite Zarządzanie tabelami opiera się na trzech poleceniach definicji danych: CREATE TABLE w celu zdefiniowania tabeli, ALTER TABLE w celu zmiany jej nazwy lub dodania i zmiany kolumn oraz DROP TABLE w celu całkowitego usunięcia tabeli z bazy danych.

  • 📐 Utwórz tabele: Polecenie CREATE TABLE definiuje nazwę tabeli i jej kolumny. Każda kolumna wymaga nazwy i typu danych.
  • 🛡️ Unikaj błędów: Dodanie IF NOT EXISTS do CREATE TABLE lub IF EXISTS do DROP TABLE zapobiega błędom, gdy tabela już istnieje lub jej brakuje.
  • ✏️ Zmień tabele: ALTER TABLE zmienia nazwę tabeli, dodaje kolumnę i w nowoczesnym wydaniu SQLite zmienia nazwę lub usuwa pojedynczą kolumnę.
  • 🗑️ Usuń tabele: Polecenie DROP TABLE powoduje trwałe usunięcie tabeli oraz wszystkich wierszy i indeksów do niej należących.
  • 📑 Kopiuj tabele: CREATE TABLE AS SELECT tworzy nową tabelę na podstawie kolumn i wierszy zwróconych przez zapytanie.
  • 🤖 Pomoc AI: Asystenci AI do konwersji tekstu na SQL i GitHub Copilot generują polecenia CREATE, ALTER i DROP z poziomu prostych monitów w języku angielskim.

SQLite Utwórz tabelę Alter Drop

Poniższe sekcje pokazują, jak tworzyć tabele, modyfikować ich strukturę i usuwać tabele. SQLite3 z przykładami obejmującymi polecenia CREATE TABLE, ALTER TABLE i DROP TABLE.

SQLite Utwórz tabelę

Składnia

Poniżej znajduje się składnia instrukcji CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Aby utworzyć tabelę, należy użyć zapytania „CREATE TABLE” w następujący sposób:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

W dwóch nawiasach po nazwie tabeli należy zdefiniować kolumny tabeli. Każda kolumna powinna mieć następujące właściwości:

  • Nazwa, nazwa kolumny powinna być unikalna wśród kolumn tabeli.
  • Typ danych – typ danych kolumny.
  • Opcjonalne ograniczenia kolumn, które wyjaśnimy w dalszych sekcjach tego samouczka.

SQLite UTWÓRZ TABELĘ, JEŚLI NIE ISTNIEJE

Gdy skrypt jest uruchamiany więcej niż raz, zwykłe polecenie CREATE TABLE kończy się niepowodzeniem, jeśli tabela już istnieje, i kończy działanie z błędem. SQLite rozwiązuje ten problem za pomocą opcjonalnej klauzuli IF NOT EXISTS, która tworzy tabelę tylko wtedy, gdy jej brakuje, i nie robi nic, gdy tabela już tam jest.

CREATE TABLE IF NOT EXISTS guru99 (
  Id Int,
  Name Varchar
);

Powyższe polecenie nigdy nie powoduje błędu „tabela już istnieje”, dzięki czemu można je bezpiecznie umieścić na początku skryptu konfiguracji lub migracji.

Ta sama zasada działa w odwrotnym kierunku, gdy usuwasz tabelę. Dodanie IF EXISTS do DROP TABLE pozwala uniknąć błędu, gdy tabela już zniknęła:

DROP TABLE IF EXISTS guru99;

Oba klauzule są powszechnie stosowane w skryptach automatycznych, ponieważ pozwalają na wielokrotne uruchamianie tego samego pliku bez konieczności ręcznego czyszczenia pomiędzy uruchomieniami.

Upuść stół

Aby usunąć tabelę, należy użyć polecenia „DROP TABLE”, po którym należy podać nazwę tabeli, w następujący sposób:

DROP TABLE guru99;

Zmień tabelę

Możesz użyć polecenia „ALTER TABLE”, aby zmienić nazwę tabeli w następujący sposób:

ALTER TABLE guru99 RENAME TO guru100;

Aby sprawdzić, czy nazwa tabeli została zmieniona, możesz użyć polecenia „.tables”, aby wyświetlić listę tabel. Nazwa tabeli powinna teraz zostać zmieniona w następujący sposób:

SQLite Dane wyjściowe .tables pokazujące tabelę zmienioną z guru99 na guru100

Jak widać nazwa tabeli „guru99” została zmieniona na „guru100” po poleceniu „alter table”.

SQLite dodaj kolumny — za pomocą polecenia ALTER TABLE

Do dodawania kolumn można również użyć polecenia „ALTER TABLE”:

ALTER TABLE guru100 ADD COLUMN Age INT;

Spowoduje to zmianę tabeli „guru100” i dodanie do niej nowej kolumny Wiek.

Jeśli nie widzisz żadnego wyniku, oznacza to, że polecenie zakończyło się powodzeniem i kolumna została dodana. Brak wyniku oznacza, że ​​kursor zostanie umieszczony za „sqlite>” bez tekstu, jak poniżej:

SQLite wiersz poleceń nie wyświetla żadnego wyniku po pomyślnym użyciu polecenia ALTER TABLE ADD COLUMN

Aby jednak sprawdzić, czy kolumna została dodana, możemy użyć polecenia „.schema guru100”. Spowoduje to wyświetlenie definicji tabeli i wyświetlenie nowej kolumny, którą właśnie dodaliśmy:

SQLite Dane wyjściowe .schema guru100 pokazujące nową kolumnę Wiek dodaną do tabeli

SQLite ALTER TABLE: Zmień nazwę i usuń kolumnę

Oprócz dodania kolumny, współczesne wersje SQLite Można również zmienić nazwę pojedynczej kolumny i usunąć jedną. Zmiana nazwy kolumny jest dostępna od SQLite 3.25 i aktualizuje nazwę wewnątrz definicji tabeli, a także w każdym indeksie, wyzwalaczu i widoku, który odwołuje się do kolumny.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Aby usunąć kolumnę, SQLite Wersje 3.35 i nowsze obsługują bezpośrednią klauzulę DROP COLUMN:

ALTER TABLE guru100 DROP COLUMN Age;

Kolumny nie można usunąć, jeśli jest częścią klucza podstawowego, ograniczenia unikalności lub indeksu. W starszych wersjach SQLite W przypadku wersji pozbawionych opcji DROP COLUMN klasycznym rozwiązaniem jest utworzenie nowej tabeli z potrzebnymi kolumnami, skopiowanie wierszy, usunięcie starej tabeli i na koniec zmiana nazwy nowej.

Jak skopiować tabelę w SQLite Korzystanie z CREATE TABLE AS SELECT

Czasami potrzebna jest kopia tabeli — jako kopia zapasowa przed ryzykowną zmianą lub jako punkt wyjścia do utworzenia nowej tabeli. SQLite buduje to w jednym kroku za pomocą CREATE TABLE AS SELECT, który tworzy nową tabelę, której kolumny pochodzą z zapytania i wypełnia ją wierszami zwróconymi przez zapytanie.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Nowa tabela „guru100_backup” otrzymuje te same kolumny i wszystkie wiersze z tabeli „guru100”. Aby skopiować tylko niektóre wiersze, dodaj klauzulę WHERE do SELECT:

CREATE TABLE known_ages AS SELECT * FROM guru100 WHERE Age IS NOT NULL;

Należy pamiętać, że polecenie CREATE TABLE AS SELECT kopiuje nazwy kolumn, typy i dane, ale nie kopiuje kluczy podstawowych, innych ograniczeń ani indeksów. Należy je samodzielnie dodać do nowej tabeli, jeśli kopia ma obowiązywać te same zasady, co oryginał.

SQLite Wstaw wartość do tabeli

Aby wstawić wartości do tabeli, używamy polecenia „INSERT INTO” w następujący sposób:

INSERT INTO Tablename(colname1, colname2, ….) VALUES(valu1, value2, ….);

Możesz pominąć nazwy kolumn po nazwie tabeli i zapisać je w następujący sposób:

INSERT INTO Tablename VALUES(value1, value2, ….);

W takim przypadku, gdy pomijasz nazwy kolumn w tabelach, liczba wstawionych wartości musi być dokładnie taka sama, jak liczba kolumn tabeli. Następnie każda wartość zostanie wstawiona w kolumnie korespondencyjnej. Na przykład dla następującego polecenia insert:

INSERT INTO guru100 VALUES(1, 'Mike', 25);

Wynik tego oświadczenia będzie następujący:

SQLite Polecenie INSERT INTO dodaje wiersz wartości do tabeli guru100

  • Wartość 1 zostanie wstawiona w kolumnie „id”.
  • Wartość „Mike” zostanie wstawiona w kolumnie „Imię” i
  • Wartość 25 zostanie wstawiona w kolumnie „Wiek”.

WSTAW… instrukcję WARTOŚCI DOMYŚLNE

Możesz od razu wypełnić tabelę domyślnymi wartościami kolumn w następujący sposób:

INSERT INTO Tablename DEFAULT VALUES;

Jeśli kolumna nie dopuszcza wartości null ani wartości domyślnej, pojawi się błąd „Niepowodzenie ograniczenia NOT NULL” dla tej kolumny. W następujący sposób:

SQLite Błąd nieudanego ograniczenia NOT NULL z polecenia INSERT DEFAULT VALUES

FAQ

Nie. SQLite Nie ma polecenia TRUNCATE TABLE. Aby opróżnić tabelę, uruchom polecenie DELETE FROM table_name bez klauzuli WHERE, a następnie użyj VACUUM, aby odzyskać zwolnione miejsce na dysku. Struktura tabeli i jej kolumny pozostają na swoim miejscu.

DELETE usuwa wiersze z tabeli, ale zachowuje tabelę, jej kolumny i strukturę gotową na nowe dane. DROP TABLE usuwa całą tabelę, łącznie z jej definicją, indeksami i wyzwalaczami, więc tabela nie istnieje już w bazie danych.

Na SQLite W wierszu poleceń polecenie .tables dot wyświetla nazwy wszystkich tabel. Z poziomu SQL należy wykonać zapytanie do wbudowanej tabeli schematu za pomocą polecenia SELECT name FROM sqlite_master WHERE type = 'table'; które działa również z dowolnej aplikacji połączonej z bazą danych.

Tabelę tymczasową tworzy się za pomocą polecenia CREATE TEMP TABLE lub CREATE TEMPORARY TABLE. Jest ona widoczna tylko dla połączenia z bazą danych, które ją utworzyło, i jest automatycznie usuwana po zamknięciu tego połączenia, co czyni ją przydatną do przechowywania pośrednich wyników zapytań.

Tak. Klucz podstawowy jest opcjonalny w SQLite. Kiedy pominiesz jeden, SQLite Nadal zachowuje ukryty 64-bitowy identyfikator wiersza, który identyfikuje każdy wiersz. Ograniczenia kolumn, takie jak PRIMARY KEY, UNIQUE i NOT NULL, są opcjonalne podczas definiowania tabeli.

Domyślnie nie. SQLite używa dynamicznego typing Z powinowactwem typu, dzięki czemu kolumna akceptuje wartości niemal każdego typu, niezależnie od zadeklarowanego typu. Aby wymusić ścisłe sprawdzanie, utwórz tabelę jako tabelę STRICT, dodaną w SQLite 3.37.

Tak. Asystenci AI przetwarzający tekst na SQL przekształcają prosty opis danych w polecenia CREATE TABLE z kolumnami, typami danych i kluczami. Dokładność wzrasta, gdy model otrzyma istniejący schemat, ponieważ ponownie wykorzystuje on rzeczywiste nazwy tabel i kolumn.

Tak. Drugi pilot GitHub sugeruje ALTER TABLE, DROP TABLE i inne SQLite oświadczenia w tekście w edytorach, takich jak VS Code. Odczytuje pliki migracji i istniejące zapytania, tak aby jego uzupełnienia odpowiadały rzeczywistym nazwom tabel i kolumn.

Podsumuj ten post następująco: