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 Створити таблицю Alt/Drop

У розділах нижче показано, як створювати таблиці, змінювати їхню структуру та перетягувати таблиці SQLite3 з прикладами, що охоплюють команди CREATE TABLE, ALTER TABLE та DROP TABLE.

SQLite Створити таблицю

синтаксис

Нижче наведено синтаксис оператора CREATE TABLE.

CREATE TABLE table_name(
column1 datatype,
column1 datatype
);

Щоб створити таблицю, слід скористатися запитом «СТВОРИТИ ТАБЛИЦЮ» наступним чином:

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, що показує новий стовпець Age, доданий до таблиці

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» для цього стовпця. Ось як показано нижче:

SQLite Помилка невдалого виконання обмеження NOT NULL з INSERT DEFAULT VALUES

Поширені запитання

Ні. 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-бітний ідентифікатор рядка, який ідентифікує кожен рядок. Обмеження стовпців, такі як PRIMARY KEY, UNIQUE та NOT NULL, є необов'язковими під час визначення таблиці.

За замовчуванням ні. SQLite використовує динамічний typing зі спорідненістю типів, тому стовпець приймає значення майже будь-якого типу незалежно від його оголошеного типу. Щоб забезпечити сувору перевірку, створіть таблицю як таблицю STRICT, додану в SQLite 3.37.

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

Так. Копілот GitHub пропонує ALTER TABLE, DROP TABLE та інші SQLite оператори, вбудовані в редактори, такі як VS CodeВін зчитує ваші файли міграції та існуючі запити, тому його завершення відповідають вашим реальним іменам таблиць та стовпців.

Підсумуйте цей пост за допомогою: