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` создает новую таблицу из столбцов и строк, возвращаемых запросом.
  • 🤖 Помощь ИИ: Искусственный интеллект, преобразующий текст в 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.

Как видите, после выполнения команды «alter table» имя таблицы «guru99» изменяется на «guru100».

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 ALTER TABLE: Переименование и удаление столбца

Помимо добавления столбца, современные версии SQLite Также можно переименовать отдельный столбец и удалить один. Функция переименования столбца доступна с тех пор, как... SQLite 3.25, и это обновляет имя внутри определения таблицы, а также во всех индексах, триггерах и представлениях, которые ссылаются на этот столбец.

ALTER TABLE guru100 RENAME COLUMN Name TO FullName;

Чтобы удалить столбец, SQLite В пунктах 3.35 и последующих поддерживается прямое положение об удалении столбца:

ALTER TABLE guru100 DROP COLUMN Age;

Удалить столбец невозможно, если он является частью первичного ключа, уникального ограничения или индекса. В более старых версиях SQLite В версиях, где отсутствует функция DROP COLUMN, классический обходной путь заключается в создании новой таблицы с нужными столбцами, копировании строк из нее, удалении старой таблицы и, наконец, переименовании новой.

Как скопировать таблицу в SQLite Использование команды CREEATE 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.

  • В столбец «id» будет вставлено значение 1.
  • Значение «Майк» будет вставлено в столбец «Имя», и
  • В столбец «Возраст» будет вставлено значение 25.

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

Вы можете сразу заполнить таблицу значениями по умолчанию для столбцов следующим образом:

INSERT INTO Tablename DEFAULT VALUES;

Если столбец не допускает значений NULL или значений по умолчанию, вы получите ошибку «Не выполняется ограничение NOT NULL» для этого столбца. Вот пример:

SQLite Ошибка ограничения NOT NULL при вставке значений по умолчанию.

Часто задаваемые вопросы (FAQ)

№ SQLite Команда TRUNCATE TABLE отсутствует. Чтобы очистить таблицу, выполните команду DELETE FROM table_name без условия WHERE, а затем используйте команду VACUUM для освобождения дискового пространства. Структура таблицы и ее столбцы останутся неизменными.

Команда DELETE удаляет строки из таблицы, но сохраняет саму таблицу, её столбцы и структуру, готовые для новых данных. Команда DROP TABLE удаляет всю таблицу целиком, включая её определение, индексы и триггеры, поэтому таблица больше не существует в базе данных.

на SQLite В командной строке команда `.tables.` выводит имена всех таблиц. В 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 использует динамический типping Благодаря привязке типов, столбец может принимать значения практически любого типа независимо от его заявленного типа. Для обеспечения строгой проверки создайте таблицу как таблицу типа STRICT, добавив её в файл конфигурации. SQLite 3.37.

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

Да. Второй пилот GitHub предлагает использовать команды ALTER TABLE, DROP TABLE и другие. SQLite утверждения, встроенные в редакторы, такие как VS CodeОн считывает ваши файлы миграции и существующие запросы, поэтому его автозавершение соответствует реальным именам ваших таблиц и столбцов.

Подведем итог этой публикации следующим образом: