Часть 10.4 Добавление данных и строк в таблицы баз данных SQLite

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать базы данных и наше знакомство с библиотекой SQLite3. Работать с таблицами реляционных баз данных довольно просто и интересно, в этом мы могли убедиться, когда рассматривали манипуляцию непосредственно таблицами, теперь мы перейдем к рассмотрению различных способов манипуляции данными в этих таблицах. Надеюсь, что мои записи в рубрике понятны для начинающих и они действительно вам помагают изучить SQL и реляционные базы данных на примере SQLite.

Добавление данных и строк в таблицы баз данных SQLite

Добавление данных и строк в таблицы баз данных SQLite

В этой записи мы поговорим о добавлении данных и строк в таблицы реляционных баз данных. Естественно, рассматривать то, как добавить строку в таблицу базы данных мы будем на примере SQLite3, как и любые примеры в данном разделе. Напомню, что для добавления данных в таблицу в SQL есть команда INSERT, ранее мы очень подробно рассмотрели синтаксис команды INSERT в SQLite, теперь давайте попрактикуемся и научимся добавлять строки в таблицы баз данных под управлением SQLite3.


Добавления данных и строк в таблицы базы данных SQLite

Мы уже разобрались с тем, как можно определять данные в базах данных SQLite, напомню, что мы подробно рассмотрели такие операции как:

Перейдем к операциям манипуляции данными. Данные в таблицы базы данных мы можем добавлять только одним способом: путем добавления строк в таблицы базы данных. За добавление данных в таблицы SQLite отвечает команда INSERT INTO, с которой мы познакомились ранее. Давайте теперь рассмотрим более подробно, как добавлять данные в таблицы базы данных под управлением SQLite. Вы можете увидеть общий синтаксис добавления строк в таблицы баз данных SQLite на рисунке ниже.

Синтаксис добавления строк в таблицы базы данных SQLite3. Синтаксис добавления данных в базы данных SQLite

Синтаксис добавления строк в таблицы базы данных SQLite3. Синтаксис добавления данных в базы данных SQLite

Для добавления данных в таблицу используйте в начале запроса ключевую фразу INSERT INTO, после которой идет имя базы данных или квалификатор (если мы хотим быть уверены в том, что строки будут добавлены в таблицу из какой-то конкретной базы данных), после имени таблицы нужна указать в круглых скобках имена столбцов, в которые будут добавлены данные, затем идет ключевое слово VALUES для указания значений, после которого мы пишем данные через запятую в соответствии столбцам для добавления в таблицу.

Вместо ключевого слово VALUES вы можете использовать конструкцию DEFAULT VALUES, тогда в таблицу будут добавлены данные по умолчанию. Или же вместо ключевого слова VALUE можно использовать подзапрос, который использует команду SELECT для добавления строк в таблицы базы данных.

Замечу, что ключевое слово REPLACE может быть использовано в качестве псевдонима ключевому слову INSERT. Так же для устранения различных конфликтов при добавлении данных в таблицы SQLite можно использовать конструкцию INSERT OR со следующими ключевыми словами: REPLACE, ROLLBACK, ABORT, FAIL, IGNORE.

Простой пример добавления строк в таблицу базы данных SQLite3

Для примера давайте создадим простую таблицу и попробуем добавить в нее несколько строк, тем самым мы разберемся с тем, как SQLite добавляет данные в таблицы. Сперва запустите SQLite из командной строки Windows при помощи команды sqlite3 insertdb.db3, так вы создадите базу данных с именем insertdb.db3. А затем воспользуйтесь командой CREATE:

Мы создали таблицу с тремя столбцами, задали столбцам значения по умолчанию и ограничения уровня столбца: NOT NULL, PRIMARY KEYи AUTOINCREMENT. Убедиться, что таблица создана можно при помощи команды .schema (здесь написано подробно про dot-команды SQLite), либо при помощи команды .tables

Давайте теперь попробуем добавить данные в таблицу базы данных SQLite. Воспользуемся самой простой формой команды INSERT для добавления данных.

Убедиться в том, что строки были добавлены в таблицу базы данных можно при помощи команды SELECT, которая позволяет выбирать или получать данные из базы данных.

Теперь давайте добавим данные, используя квалификатор, кстати, первый столбец id у нас имеет параметр AUTOINCREMENT, поэтому мы можем не задавать для него значение, оно всегда будет увеличиваться на единицу.

Обратите внимание: квалификатор у вас сработает в том случае, когда подключено несколько баз данных, об этом мы поговорим позже. Мы разобрались с самым простым и самым часто используемым способом добавления данных в таблицы SQLite.

Пример добавления данных в таблицы базы данных SQLite со значениями по умолчанию

Давайте теперь посмотрим на способ, который позволяет нам добавлять строки в таблицы SQLite со значениями по умолчанию, как вы помните, мы задали для столбцов значения по умолчанию, когда создавали таблицу. Если сейчас попробовать воспользоваться обычным способом добавления данных в таблицу (с использованием ключевого слово VALUE), при этом не указав никаких значений, то SQLite не станет ничего добавлять в таблицу:

Во всех трех случаях SQLite будет выдавать ошибки при добавлении данных в таблицы, некоторые другие СУБД при третьем варианте, когда отпускается значение для столбца по умолчанию, понимают сами, что нужно подставить это самое значение, которое было указано при создании таблицы, но SQLite использует другой подход для добавления в таблицу строк со значениями по умолчанию, давайте посмотрим:

Видим, что SQLite добавила строки в таблицу базы данных и при это в поле id записалось значение 4, в поле age записалось значение по умолчанию 16, а в поле name SQLite добавила строку Иван. Такой подход зачастую полезен, когда необходимо обеспечить целостность данных в базе данных.

Обратите внимание, чтобы SQLite добавила строки в таблицу со значение по умолчанию, не нужно указывать имена столбцов. Но можно и по-другому попытаться добавить в таблицу строки со значение по умолчанию, например, мы можем указать только имя:

Проверяем результат добавления строки в таблицу при помощи SELECT:

И видим, что данные были успешно добавлены в таблицу. При этом добавленная строка имеет id=  5, а в столбец age легло значение по умолчанию 16. Я, думаю, что нет ничего хитрого в том, чтобы добавлять данные в таблицу со значениями по умолчанию, SQLite прекрасно с этой задачей справляется.

Добавление данных в таблицу базы данных с использованием подзапроса SELECT

Давайте теперь посмотрим, как добавлять данные в таблицу при помощи команды SELECT, используя подзапрос. На самом деле, добавлять строки в таблицы SQLite с использованием подзапроса так же легко, особенно если вы знаете особенности работы команды SELECT. Во-первых, для добавления данных в таблицы SQLite с использованием подзапроса SELECT не нужно использовать ключевое слово VALUES. Для примера создадим вторую таблицу, в которую затем добавим данные из первой при помощи команды SELECT:

SQLite слаботипизированная СУБД, поэтому при создании таблиц мы можем не указывать  типы данных. А теперь давайте добавим данные в таблицу SQLite при помощи SELECT:

Для того чтобы убедиться, что строка была добавлена в таблицу базы данных SQLite, используйте SELECT:

SELECT * FROM tableins2;

Мы видим, что в новую таблицу были добавлены данные из старой, но теперь первым выводится Валерий, у которого id=2, а за ним Сергей, у которого id = 1 и не показаны люди, младше 16 лет. Последнего мы добились тем, что использовали клаузулу WHERE с SQL оператором больше. Первого мы добились за счет того, что использовали клаузулу ORDER BY, которая применяется для упорядочивания данных (сравнение данных и значений в SQLite): в нашем случае по столбцу name с применением SQLite сравнения RTRIM и упорядочены данные в обратном порядке, об этом нам говорит ключевое слово WHERE. В принципе, мы рассмотрели все возможные способы добавления данных и строк в таблицы базы данных SQLite. Думаю, теперь вы с легкостью сможете добавлять данные в таблицы и не только в таблицы SQLite3.

Хочу заметить, что сейчас мы не касались конфликтов, которые могут возникнуть при операции добавления данных в таблицы, так как эту тему мы оставим до тех пор, пока не поговорим о поддержании целостности данных в базе данных. Сейчас же я могу вам посоветовать быть аккуратным и внимательно смотреть на то, какие строки вы добавляете в таблицы ваших баз данных.

Текст комментария: