Добавлен: 04.12.2023
Просмотров: 300
Скачиваний: 6
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Пример 7.Создание и удаление таблицы. Прикрепление базы данныхДля создания таблиц используется команда CREATE TABLE. Общий формальный синтаксис команды CREATE TABLE:После команды CREATE TABLE указывается название таблицы. Имя таблицы выполняет роль ее идентификатора в базе данных, поэтому оно должно быть уникальным. Кроме того, оно не должно начинаться на "sqlite_", поскольку названия таблиц, которые начинаются на "sqlite_", зарезервированы для внутреннего пользования.Затем после названия таблицы в скобках перечисляются названия столбцов, их типы данных и атрибуты. В самом конце можно определить атрибуты для всей таблицы. Атрибуты столбцов, а также атрибуты таблицы указывать необязательно.Создадим простейшую таблицу. Перед выполнением команды CREATE TABLE вне зависимости, что мы используем - консольный клиент sqlite3, графический клиент DB Browser for SQLite или какой-то другой клиент, вначале откроем базу данных, где мы хотим создать таблицу.Для создания таблицы выполним следующий скрипт:В данном случае таблица называется "Users". В ней определено три столбца: Id, Age, Name. Первые два столбца представляют идентификатор пользователя и его возраст и имеют тип INTEGER, то есть будут хранить числовые значения. Столбец "Name" представляет имя пользователя и имеет тип TEXT, то есть представляет строку. В данном случае для каждого столбца определены имя и тип данных, при этом атрибуты столбцов и таблицы в целом отсутствуют.И в результате выполнения этой команды будет создана таблица Users с тремя столбцами.Создание таблицы при ее отсутствииЕсли мы повторно выполним выше определенную sql-команду для создания таблицы Users, то мы столкнемся с ошибкой - ведь мы уже создали таблицу с таким названием. Но могут быть ситуации, когда мы можем точно не знать или быть не уверены, есть ли в базе данных такая таблица (например, когда мы пишем приложение на каком-нибудь языке программирования и используем базу данных, которая не нами создана). И чтобы избежать ошибки, с помощью выражения IF NOT EXISTS мы можем задать создание таблицы, если она не существует:
Если таблицы Users нет, она будет создана. Если она есть, то никаких действий не будет производиться, и ошибки не возникнет.Прикрепление базы данныхТакже мы можем прикрепить базу данных и затем в ней уже создать базу данных.Для прикрепления базы данных применяется команда ATTACH DATABASE:После команды ATTACH DATABASE указывается путь к файлу базы данных (в данном случае это путь "C:\sqlite\test.db"). Затем после оператора AS идет псевдоним, на который будет проецироваться база данных. То есть в коде для обращения к базе данных "C:\sqlite\test.db" будет применяться имя "test". При обращении к таблице из этой базы данных, сначала указывается псевдоним базы данных и через точку название таблицы:Например, создадим таблицу в прикрепленной базе данных:Для создания таблицы users в бд test.db название таблицы предваряется псевдонимом: test.users.И после открытия базы данных test.db в ней можно будеть увидеть таблицу users.Удаление таблицДля удаления таблицы применяется команда DROP TABLE, после которой указывается название удаляемой таблицы. Например, удалим таблицу users:По аналогии с созданием таблицы, если мы попытаемся удалить таблицу, которая не существует, то мы столкнемся с ошибкой. В этом случае опять же с помощью операторов IF EXISTS проверять наличие таблицы перед удалением:Основные операции с даннымиДля добавления данных в SQLite применяется команда INSERT, которая имеет следующее формальное определение:После выражения INSERT INTO в скобках можно указать список столбцов через запятую, в которые надо добавлять данные, и в конце после слова VALUES скобках перечисляют добавляемые для столбцов значения.
Например, пусть в базе данных SQLite есть следующая таблица users:Добавим в эту таблицу одну строку с помощью следующего кода:После названия таблицы указываны два стобца, в которые мы хотим выполнить добавление данные - (name, age). После оператора VALUES указаны значения для этих столбцов. Значения будут передаваться столбцам по позиции. То есть стобцу name передается строка "Tom', столбцу age - число 37. И после успешного выполнения данной команды в таблице появится новая строка:Стоит отметить, что при добавлении данных указывать значения абсолютно для всех столбцов таблицы. Например, в примере выше не указано значение для стобца id, поскольку для данного столбца значение будет автоматически генерироваться.Также можно можно было бы не указывать названия столбцов:Однако в этом случае потребовалось бы указать значения для всех его столбцов, в том числе для столбца id. Причем значения передавались столбцам в том порядке, в котором они идут в таблице.Добавление NULLТакже мы можем опускать при добавлении такие столбцы, которые поддерживают значение NULL (которые не имеют ограничения NOT NULL):В данном случае для столбца age не указано значение, и поскольку данный столбец поддерживает значение NULL, то для него будет установлено значение NULL.Также подобным столбцам, которые поддерживают NULL, можно явным образом передать NULL:Значения по умолчанию Если для столбца задано ограничение DEFAULT, то есть значение по умолчанию, то для него тоже можно не передавать значение. Например, возьмем следующую таблицу:Теперь столбцы name и age имеют значения по умолчанию. При добавлении данных из можно опустить:
Если все столбцы поддерживают значения по умолчанию или автогенерацию или значение NULL, то с помощью ключевого слова DEFAULT можно явно указать, что в качестве значения будут использоваться значения по умолчанию:В этом случае столбцы, для которых определено значение по умолчанию, получат это значение. Остальные столбцы получать значение NULL.
Если таблицы Users нет, она будет создана. Если она есть, то никаких действий не будет производиться, и ошибки не возникнет.Прикрепление базы данныхТакже мы можем прикрепить базу данных и затем в ней уже создать базу данных.Для прикрепления базы данных применяется команда ATTACH DATABASE:После команды ATTACH DATABASE указывается путь к файлу базы данных (в данном случае это путь "C:\sqlite\test.db"). Затем после оператора AS идет псевдоним, на который будет проецироваться база данных. То есть в коде для обращения к базе данных "C:\sqlite\test.db" будет применяться имя "test". При обращении к таблице из этой базы данных, сначала указывается псевдоним базы данных и через точку название таблицы:Например, создадим таблицу в прикрепленной базе данных:Для создания таблицы users в бд test.db название таблицы предваряется псевдонимом: test.users.И после открытия базы данных test.db в ней можно будеть увидеть таблицу users.Удаление таблицДля удаления таблицы применяется команда DROP TABLE, после которой указывается название удаляемой таблицы. Например, удалим таблицу users:По аналогии с созданием таблицы, если мы попытаемся удалить таблицу, которая не существует, то мы столкнемся с ошибкой. В этом случае опять же с помощью операторов IF EXISTS проверять наличие таблицы перед удалением:Основные операции с даннымиДля добавления данных в SQLite применяется команда INSERT, которая имеет следующее формальное определение:После выражения INSERT INTO в скобках можно указать список столбцов через запятую, в которые надо добавлять данные, и в конце после слова VALUES скобках перечисляют добавляемые для столбцов значения.
Например, пусть в базе данных SQLite есть следующая таблица users:Добавим в эту таблицу одну строку с помощью следующего кода:После названия таблицы указываны два стобца, в которые мы хотим выполнить добавление данные - (name, age). После оператора VALUES указаны значения для этих столбцов. Значения будут передаваться столбцам по позиции. То есть стобцу name передается строка "Tom', столбцу age - число 37. И после успешного выполнения данной команды в таблице появится новая строка:Стоит отметить, что при добавлении данных указывать значения абсолютно для всех столбцов таблицы. Например, в примере выше не указано значение для стобца id, поскольку для данного столбца значение будет автоматически генерироваться.Также можно можно было бы не указывать названия столбцов:Однако в этом случае потребовалось бы указать значения для всех его столбцов, в том числе для столбца id. Причем значения передавались столбцам в том порядке, в котором они идут в таблице.Добавление NULLТакже мы можем опускать при добавлении такие столбцы, которые поддерживают значение NULL (которые не имеют ограничения NOT NULL):В данном случае для столбца age не указано значение, и поскольку данный столбец поддерживает значение NULL, то для него будет установлено значение NULL.Также подобным столбцам, которые поддерживают NULL, можно явным образом передать NULL:Значения по умолчанию Если для столбца задано ограничение DEFAULT, то есть значение по умолчанию, то для него тоже можно не передавать значение. Например, возьмем следующую таблицу:Теперь столбцы name и age имеют значения по умолчанию. При добавлении данных из можно опустить:
Если все столбцы поддерживают значения по умолчанию или автогенерацию или значение NULL, то с помощью ключевого слова DEFAULT можно явно указать, что в качестве значения будут использоваться значения по умолчанию:В этом случае столбцы, для которых определено значение по умолчанию, получат это значение. Остальные столбцы получать значение NULL.