SQLite Създаване, промяна, пускане на таблица с примери

⚡ Умно обобщение

SQLite Управлението на таблици разчита на три команди за дефиниране на данни: CREATE TABLE за дефиниране на таблица, ALTER TABLE за преименуването ѝ или добавянето и промяната на колони и DROP TABLE за пълното ѝ премахване от базата данни.

  • 📐 Създаване на таблици: Операторът CREATE TABLE дефинира име на таблица и нейните колони, като всяка колона се нуждае от име и тип данни.
  • Избягвайте грешки: Добавянето на IF NOT EXISTS към CREATE TABLE или IF EXISTS към DROP TABLE предотвратява грешки, когато таблица вече съществува или липсва.
  • Промяна на таблици: ALTER TABLE преименува таблица, добавя колона и в съвременен SQLite преименува или премахва една колона.
  • 🗑️ Изваждане на таблици: Командата DROP TABLE премахва окончателно таблица и всички редове и индекси, които ѝ принадлежат.
  • 📑 Копиране на таблици: CREATE TABLE AS SELECT изгражда нова таблица от колоните и редовете, върнати от заявка.
  • 🤖 AI помощ: Асистентите за преобразуване на текст в SQL с изкуствен интелект и GitHub Copilot генерират CREATE, ALTER и DROP оператори от подкани на обикновен английски език.

SQLite Създаване на таблица за промяна на пускане

Разделите по-долу показват как да създавате таблици, да променяте структурата им и да пускате таблици в SQLite3 с примери, обхващащи командите CREATE TABLE, ALTER TABLE и DROP TABLE.

SQLite Създайте таблица

Синтаксис

По-долу е синтаксисът на оператора CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

За да създадете таблица, трябва да използвате заявката „CREATE TABLE“, както следва:

CREATE TABLE guru99 (
  Id Int,
  Name Varchar
);

В рамките на двете скоби след името на таблицата вие дефинирате колоните на таблиците, всяка колона трябва да има следните свойства:

  • Име, името на колоната трябва да е уникално сред колоните на таблицата.
  • Тип данни – типът данни на колоната.
  • Незадължителни ограничения на колоните, както ще обясним в по-късните раздели на този урок.

SQLite СЪЗДАВАНЕ НА ТАБЛИЦА, АКО НЕ СЪЩЕСТВУВА

Когато даден скрипт се изпълнява повече от веднъж, обикновен оператор CREATE TABLE се проваля, ако таблицата вече съществува, и спира с грешка. SQLite решава това с опционалната клауза IF NOT EXISTS, която създава таблицата само когато тя липсва и не прави нищо, когато тя вече е там.

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

Горното твърдение никога не повдига грешката „таблицата вече съществува“, което го прави безопасно да се съхранява в началото на скрипт за настройка или миграция.

Същата идея работи и в обратен ред, когато премахвате таблица. Добавянето на IF EXISTS към DROP TABLE избягва грешка, когато таблицата вече е премахната:

DROP TABLE IF EXISTS guru99;

И двете клаузи са често срещани в автоматизираните скриптове, защото позволяват на един и същ файл да се изпълнява многократно без ръчно почистване между изпълненията.

Падаща маса

За да премахнете таблица, използвайте командата „DROP TABLE“, последвана от името на таблицата, както следва:

DROP TABLE guru99;

Промяна на масата

Можете да използвате командата „ALTER TABLE“, за да преименувате таблица, както следва:

ALTER TABLE guru99 RENAME TO guru100;

За да проверите дали името на таблицата е променено, можете да използвате командата „.tables“, за да покажете списъка с таблици, а името на таблицата трябва да бъде променено сега, както следва:

SQLite Изход от .tables, показващ таблицата, преименувана от guru99 на guru100

Както можете да видите, името на таблицата „guru99“ се променя на „guru100“ след командата „alter table“.

SQLite добавяне на колони - Използване на командата ALTER TABLE

Можете също да използвате командата „ALTER TABLE“, за да добавите колони:

ALTER TABLE guru100 ADD COLUMN Age INT;

Това ще промени таблицата „guru100“ и ще добави нова колона „Възраст“ към нея.

Ако не сте видели никакъв резултат, това означава, че командата е била успешна и колоната е била добавена. „Няма резултат“ означава, че курсорът ще бъде позициониран след „sqlite>“ без текст след него, ето така:

SQLite Команден ред, който не показва резултат след успешно изпълнение на ALTER TABLE ADD COLUMN

Въпреки това, за да проверим дали колоната е добавена, можем да използваме командата „.schema guru100“. Това ще ви даде дефиницията на таблицата и би трябвало да видите новата колона, която току-що добавихме:

SQLite Изходът от .schema guru100, показващ новата колона „Възраст“, ​​добавена към таблицата

SQLite ПРОМЯНА НА ТАБЛИЦА: Преименуване и премахване на колона

Освен добавянето на колона, съвременните версии на SQLite може също да преименувате една колона и да премахнете друга. Преименуването на колона е достъпно от SQLite 3.25 и актуализира името в дефиницията на таблицата, както и във всеки индекс, тригер и изглед, които препращат към колоната.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

За да премахнете колона, SQLite 3.35 и по-нови версии поддържат директна клауза DROP COLUMN:

ALTER TABLE guru100 DROP COLUMN Age;

Колона не може да бъде премахната, когато е част от първичен ключ, уникално ограничение или индекс. В по-стари версии SQLite версии, на които липсва DROP COLUMN, класическото решение е да създадете нова таблица с желаните колони, да копирате редовете, да премахнете старата таблица и накрая да преименувате новата.

Как да копирате таблица в SQLite Използване на CREATE TABLE AS SELECT

Понякога се нуждаете от копие на таблица, било то като резервно копие преди рискована промяна или като отправна точка за нова таблица. SQLite изгражда това в една стъпка с CREATE TABLE AS SELECT, което създава нова таблица, чиито колони идват от заявка и я запълва с редовете, върнати от заявката.

CREATE TABLE guru100_backup AS SELECT * FROM guru100;

Новата таблица „guru100_backup“ получава същите колони и всеки ред от „guru100“. За да копирате само някои редове, добавете клауза WHERE към SELECT:

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

Едно нещо, което трябва да се запомни, е, че CREATE TABLE AS SELECT копира имената на колоните, типовете и данните, но не копира първични ключове, други ограничения или индекси. Трябва сами да ги добавите към новата таблица, ако копието трябва да налага същите правила като оригинала.

SQLite Вмъкване на стойност в таблица

За да вмъкнем стойности в таблица, използваме командата „INSERT INTO“, както следва:

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

Можете да пропуснете имената на колоните след името на таблицата и да го напишете по следния начин:

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

В такъв случай, когато пропускате имената на колоните от таблиците, броят на вмъкнатите стойности трябва да бъде същият точен брой на колоните в таблицата. След това всяка стойност ще бъде вмъкната в колоната за съответствие. Например за следния оператор за вмъкване:

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

Резултатът от това твърдение ще бъде следният:

SQLite INSERT INTO команда, добавяща ред стойности към таблицата guru100

  • Стойността 1 ще бъде вмъкната в колоната „id“.
  • Стойността „Майк“ ще бъде вмъкната в колоната „Име“ и
  • Стойността 25 ще бъде вмъкната в колоната „Възраст“.

INSERT … DEFAULT VALUES оператор

Можете да попълните таблицата със стойностите по подразбиране за колоните наведнъж, както следва:

INSERT INTO Tablename DEFAULT VALUES;

Ако дадена колона не позволява нито null стойност, нито стойност по подразбиране, ще получите грешка „NOT NULL contrast failed“ за тази колона. Както следва:

SQLite Грешка при неуспешно ограничение NOT NULL от ВМЪКВАНЕ НА СТАНДАРТНИ СТОЙНОСТИ

Въпроси и Отговори

Не. SQLite няма команда TRUNCATE TABLE. За да изпразните таблица, изпълнете DELETE FROM table_name без клауза WHERE, след което използвайте VACUUM, за да освободите освободеното дисково пространство. Структурата на таблицата и нейните колони остават на мястото си.

DELETE премахва редове от таблица, но запазва таблицата, нейните колони и структура готови за нови данни. DROP TABLE премахва цялата таблица, включително нейната дефиниция, индекси и тригери, така че таблицата вече не съществува в базата данни.

В SQLite В командния ред командата .tables dot отпечатва името на всяка таблица. От SQL, заявете вградената таблица на схемата с SELECT name FROM sqlite_master WHERE type = 'table'; което работи и от всяко приложение, свързано с базата данни.

Временна таблица се създава с CREATE TEMP TABLE или CREATE TEMPORARY TABLE. Тя е видима само за връзката с базата данни, която я е създала, и се премахва автоматично, когато тази връзка се затвори, което я прави полезна за съхранение на междинни резултати от заявки.

Да. Първичният ключ е по избор в SQLiteКогато пропуснете едно, SQLite все още запазва скрит 64-битов rowid, който идентифицира всеки ред. Ограниченията на колоните, като PRIMARY KEY, UNIQUE и NOT NULL, са незадължителни, когато дефинирате таблица.

По подразбиране не. SQLite използва динамичен typing с афинитет на типа, така че колоната приема стойности от почти всеки тип, независимо от декларирания тип. За да наложите строга проверка, създайте таблицата като STRICT таблица, добавена в SQLite 3.37.

Да. Асистентите с изкуствен интелект за преобразуване на текст в SQL превръщат описание на вашите данни на разбираем английски език в CREATE TABLE оператори с колони, типове данни и ключове. Точността се подобрява, когато дадете на модела съществуващата си схема, тъй като той използва повторно реални имена на таблици и колони.

Да. Копилот на GitHub предлага ALTER TABLE, DROP TABLE и други SQLite вградени в редакторите оператори, като например VS CodeТой чете вашите миграционни файлове и съществуващи заявки, така че завършванията му съответстват на реалните имена на вашите таблици и колони.

Обобщете тази публикация с: