Определение структуры данных в SQLite
Создание и удаление таблицы. Прикрепление базы данных
Последнее обновление: 26.11.2021
Для создания таблиц используется команда CREATE TABLE . Общий формальный синтаксис команды CREATE TABLE :
CREATE TABLE название_таблицы (название_столбца1 тип_данных атрибуты_столбца1, название_столбца2 тип_данных атрибуты_столбца2, . название_столбцаN тип_данных атрибуты_столбцаN, атрибуты_уровня_таблицы )
После команды CREATE TABLE указывается название таблицы. Имя таблицы выполняет роль ее идентификатора в базе данных, поэтому оно должно быть уникальным. Кроме того, оно не должно начинаться на «sqlite_», поскольку названия таблиц, которые начинаются на «sqlite_», зарезервированы для внутреннего пользования.
Затем после названия таблицы в скобках перечисляются названия столбцов, их типы данных и атрибуты. В самом конце можно определить атрибуты для всей таблицы. Атрибуты столбцов, а также атрибуты таблицы указывать необязательно.
Создадим простейшую таблицу. Перед выполнением команды CREATE TABLE вне зависимости, что мы используем — консольный клиент sqlite3, графический клиент DB Browser for SQLite или какой-то другой клиент, вначале откроем базу данных, где мы хотим создать таблицу.
Для создания таблицы выполним следующий скрипт:
CREATE TABLE Users ( Id INTEGER, Name TEXT, Age INTEGER );
В данном случае таблица называется «Users». В ней определено три столбца: Id, Age, Name. Первые два столбца представляют идентификатор пользователя и его возраст и имеют тип INTEGER , то есть будут хранить числовые значения. Столбец «Name» представляет имя пользователя и имеет тип TEXT , то есть представляет строку. В данном случае для каждого столбца определены имя и тип данных, при этом атрибуты столбцов и таблицы в целом отсутствуют.
И в результате выполнения этой команды будет создана таблица Users с тремя столбцами.

Создание таблицы при ее отсутствии
Если мы повторно выполним выше определенную sql-команду для создания таблицы Users, то мы столкнемся с ошибкой — ведь мы уже создали таблицу с таким названием. Но могут быть ситуации, когда мы можем точно не знать или быть не уверены, есть ли в базе данных такая таблица (например, когда мы пишем приложение на каком-нибудь языке программирования и используем базу данных, которая не нами создана). И чтобы избежать ошибки, с помощью выражения IF NOT EXISTS мы можем задать создание таблицы, если она не существует:
CREATE TABLE IF NOT EXISTS Users ( Id INTEGER, Name TEXT, Age INTEGER );
Если таблицы Users нет, она будет создана. Если она есть, то никаких действий не будет производиться, и ошибки не возникнет.
Прикрепление базы данных
Также мы можем прикрепить базу данных и затем в ней уже создать базу данных.
Для прикрепления базы данных применяется команда ATTACH DATABASE :
ATTACH DATABASE 'C:\sqlite\test.db' AS test;
После команды ATTACH DATABASE указывается путь к файлу базы данных (в данном случае это путь «C:\sqlite\test.db»). Затем после оператора AS идет псевдоним, на который будет проецироваться база данных. То есть в коде для обращения к базе данных «C:\sqlite\test.db» будет применяться имя «test». При обращении к таблице из этой базы данных, сначала указывается псевдоним базы данных и через точку название таблицы:
псевдоним_бд.таблица
Например, создадим таблицу в прикрепленной базе данных:
ATTACH DATABASE 'C:\sqlite\test.db' AS test; CREATE TABLE test.users ( id INTEGER, name TEXT, age INTEGER );
Для создания таблицы users в бд test.db название таблицы предваряется псевдонимом: test.users .

И после открытия базы данных test.db в ней можно будеть увидеть таблицу users.
Удаление таблиц
Для удаления таблицы применяется команда DROP TABLE , после которой указывается название удаляемой таблицы. Например, удалим таблицу users:
DROP TABLE users;
По аналогии с созданием таблицы, если мы попытаемся удалить таблицу, которая не существует, то мы столкнемся с ошибкой. В этом случае опять же с помощью операторов IF EXISTS проверять наличие таблицы перед удалением:
DROP TABLE IF EXISTS users;
SQLite удалить таблицу
Базовый синтаксис DROP TABLE заявление выглядит следующим образом. Вы можете указать имя базы данных с именем таблицы, следующим образом:
DROP TABLE database_name.table_name;
примеров
Убедимся таблицу COMPANY уже существует, то мы будем удалить его из базы данных.
SQLite> .tables КОМПАНИЯ test.COMPANY
Это означает, что таблица компании уже существует в базе данных, давайте удалим его из базы данных, следующим образом:
SQLite> DROP TABLE КОМПАНИЯ; SQLite>
Теперь, если вы попытаетесь .tables команду, вы не найдете таблицу Название компании:
SQLite> .tables SQLite>
Отображение результатов пуст, смысл, который был успешно удален из таблицы базы данных.
Система управления базами данных SQLite. Изучаем язык запросов SQL и реляционные базы данных на примере библиотекой SQLite3. Курс для начинающих.
Часть 10.2: Удаление таблицы из базы данных SQLite3
- 20.06.2016
- SQLite библиотека, Базы данных
- Комментариев нет
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Мы уже познакомились с созданием таблиц в SQLite, теперь давайте рассмотрим, как можно удалить таблицу из базы данных SQLite. Из этой записи вы узнаете общий синтаксис удаления таблиц и найдете несколько примеров удаления таблицы из базы данных, например, как проверить таблицу на существование и затем ее удалить, как удалить таблицу с использованием квалификатора и как можно удалить временную таблицу из базы данных SQLite3.

Удаление таблицы из базы данных SQLite3
Синтаксис удаление таблицы из базы данных SQLite3
Мы уже довольно подробно рассматривали удаление таблиц, когда говорили о команде DROP в SQlite3. Давайте повторим пройденное и посмотрим, как можно удалить таблицу из базы данных в SQLite. Общий синтаксис удаления таблиц в SQlite3 представлен на рисунке ниже.
Синтаксис удаление таблицы из базы данных SQLite3
Для удаления таблиц из базы данных SQLite используется ключевое слово DROP TABLE, после которого можно воспользоваться конструкцией IF EXISTS, которая заставит SQLite проверить на существование таблицу, прежде чем ее удалить. Затем необходимо указать имя таблицы, которую нужно удалить из базы данных SQLite. Вместо имени таблицы для удаления может быть использован квалификатор в том случае, когда вы хотите быть уверенным в том, что таблица будет удалена из конкретной базы данных.
Простой примеры удаления таблиц из базы данных SQLite
Давайте рассмотрим простейший способ удаления таблицы из базы данных SQLite, где мы просто укажем SQLite3 имя таблицы, которую нужно удалить:
[php] DROP TABLE table1; [/php]
Здесь мы просто указали имя таблицы, которую хотим удалить из базы данных. Если таблица с таким именем существует, то SQLite ее удалит, если нет- SQLite выдаст ошибку.
Выполняем проверку перед удалением таблицы из базы данных SQLite3
Давайте теперь рассмотрим, как избавиться от ошибок при удалении таблиц в SQLite, для этого существует конструкция IF EXISTS, она позволяет SQLite сперва проверить наличие таблицы в базе данных, а затем удалить таблицу, если она существует. Если таблицы не существует SQLite ничего не станет делать и не выдаст предупреждение:
[php] DROP TABLE IF EXISTS table2; [/php]
Мы можем повторить удаление таблицы table2, чтобы убедиться, что никаких ошибок не будет при удалении.
Удаление таблиц в SQLite с использованием квалификатора
Последнее, что необходимо рассмотреть – удаление таблиц в SQLite3 с использование квалификаторов. При удалении таблиц в SQLite3 мы можем указывать не только имя таблицы, но и базу данных, из которой мы хотим удалить таблицу, ведь у нас их может быть их несколько:
[php]DROP TABLE IF EXISTS sampledb.table2;[/php]
Здесь мы удаляем таблицу table2 из базы данных sampledb, обратите внимание на то, что расширение файла базы данных не указывается.
Удаление временных таблиц из БД SQLite3
Хотел бы так же обратить внимание на удаление временных таблиц в SQLite3. Во многих СУБД для удаления временных таблиц необходимо использовать ключевое слово TEMP или TEMPORARY после команды DROP TABLE, в SQLite этого делать не нужно.
[php]CREATE TEMP TABLE temptable1 (a,b,c,d);[/php]
Убедимся, что таблица была действительно создана при помощи команды .tables. А затем удалим временную таблицу:
[php] DROP TABLE temptable1; [/php]
Таким образом мы удалили временную таблицу из базы данных SQLite. Если вы используете ключевое слово TEMP или TEMPORARY при удалении временной таблицы, то SQLite выдаст вам ошибку.
Еще записи о создании сайтов и их продвижении, базах данных, IT-технология и сетевых протоколах
- Часть 6.3: Команда DROP в SQLite3. DDL оператор DROP в SQLite
- Часть 10.5: Удаление данных и строк из таблицы базы данных SQLite
- Часть 11.6: Каскадное удаления данных в базах данных SQLite
- Часть 7.4: Команда DELETE в SQLite3. Оператор DELETE в SQLite
- Тема 10: Работа с таблицами в базах данных SQLite3
- Часть 11.2: Ограничения уровня таблицы в базах данных SQLite3
- Часть 2.2: Первое знакомство с SQLite3. Создание баз данных SQLite3. Расширение файлов баз данных в SQLite3
- Часть 10.6: Модификация и обновление данных в таблицах базы данных SQLite
Возможно, эти записи вам покажутся интересными
Related Posts
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.…
Здравствуйте, уважаемые посетители сайта ZametkiNaPolyah.ru. Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3.…
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем рубрику реляционные базы данных и ее раздел библиотека SQLite. Начнем…
Как удалить таблицу SQlite?
Данные в БД берутся из JSON(которые меняется постоянно) c сервера. Т.е. БД всегда имеет новую версию при входе в приложение.
15 дек 2015 в 9:50
т.е условие лишнее?
15 дек 2015 в 10:02
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Уверены ли вы в том, что эта строчка выполняется?
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACT);
После выполнения этого запроса таблица должна дропнуться. После у вас выполняется код:
onCreate(db);
из которого выполняется
database.execSQL(DATABASE_CREATE);
а значит таблица создаётся снова
в метод onUpgrade вы попадаете в случае если версия дб изменилась т.е. DATABASE_VERSION а условие
if (newVersion > oldVersion)
Необходимо для уточнения версии (если вы например будете поддерживать приложение в котором будут часто меняться версии бд и информацию из них необходимо будет сохранять.
Попробуйте продебажить и поставьте бреакпоинт на строчке
db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACT);
Должно получится так — если изменить при том коде который вы предоставили DATABASE_VERSION на 3, то после включения приложения вы получите autowash.db с пустой таблицей autowash.