SQLite Створення, зміна, скидання таблиці з прикладами
⚡ Розумний підсумок
SQLite Керування таблицями спирається на три команди визначення даних: CREATE TABLE для визначення таблиці, ALTER TABLE для її перейменування або додавання та зміни стовпців і DROP TABLE для повного видалення таблиці з бази даних.

У розділах нижче показано, як створювати таблиці, змінювати їхню структуру та перетягувати таблиці 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», щоб відобразити список таблиць, а ім'я таблиці тепер слід змінити наступним чином:
Як бачите, ім'я таблиці «guru99» змінюється на «guru100» після команди «alter table».
SQLite додати стовпці - за допомогою команди ALTER TABLE
Ви також можете скористатися командою «ALTER TABLE» для додавання стовпців:
ALTER TABLE guru100 ADD COLUMN Age INT;
Це змінить таблицю «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);
Результат цього твердження буде таким:
- Значення 1 буде вставлено у стовпець «id».
- Значення «Майк» буде вставлено у стовпець «Ім’я», і
- Значення 25 буде вставлено у стовпець «Вік».
Оператор INSERT … DEFAULT VALUES
Ви можете відразу заповнити таблицю значеннями за замовчуванням для стовпців таким чином:
INSERT INTO Tablename DEFAULT VALUES;
Якщо стовпець не дозволяє значення null або значення за замовчуванням, ви отримаєте помилку «Не вдалося виконати обмеження NOT NULL» для цього стовпця. Ось як показано нижче:





