Работа с базами данных в языке «python»

Работа с базами данных предполагает использование структурированного языка запросов – SQL (Structured Query Language), который ориентирован на выполнение операций над данными.

Для выполнения SQL-запросов применяется приложение «sqlite3.exe», позволяющее работать с SQLite из командной строки

Содержимое разработки

ТЕМА 5: РАБОТА С БАЗАМИ ДАННЫХ  В ЯЗЫКЕ «PYTHON»

ТЕМА 5: РАБОТА С БАЗАМИ ДАННЫХ В ЯЗЫКЕ «PYTHON»

Приложение «sqlite3.exe»    Работа с базами данных предполагает использование структурированного языка запросов – SQL (Structured Query Language) ,  который ориентирован на выполнение операций над данными. Для выполнения SQL-запросов применяется приложение «sqlite3.exe» ,  позволяющее работать с SQLite из командной строки Указанное приложение загружается с сайта: http://www.sqlite.org/download.html , где в разделе «Precompiled Binaries for Windows» необходимо выбрать архив, соответствующий разрядности установленной на компьютер операционной системы, загрузить его и распаковать. После чего нужно скопировать хранящийся в распакованном архиве файл «sqlite3.exe» в каталог, предназначенный для дальнейшей работы, в данном случае таковым является предварительно созданный каталог «C:\lesson». Вменю «Пуск» в строке поиска следует ввести команду «cmd» и кликнуть по появившейся иконке, в результате чего откроется окно с приглашением для ввода команд.

Приложение «sqlite3.exe»

Работа с базами данных предполагает использование структурированного языка запросов – SQL (Structured Query Language) , который ориентирован на выполнение операций над данными.

Для выполнения SQL-запросов применяется приложение «sqlite3.exe» , позволяющее работать с SQLite из командной строки

Указанное приложение загружается с сайта: http://www.sqlite.org/download.html , где в разделе «Precompiled Binaries for Windows» необходимо выбрать архив, соответствующий разрядности установленной на компьютер операционной системы, загрузить его и распаковать.

После чего нужно скопировать хранящийся в распакованном архиве файл «sqlite3.exe» в каталог, предназначенный для дальнейшей работы, в данном случае таковым является предварительно созданный каталог «C:\lesson».

Вменю «Пуск» в строке поиска следует ввести команду «cmd» и кликнуть по появившейся иконке, в результате чего откроется окно с приглашением для ввода команд.

» . По умолчанию в консоли используется кодировка «ср 866» . Для изменения кодировки на «ср 1251» нужно ввести команду:   chcp 1251   2. Необходимо изменить название шрифта, поскольку точечные шрифты не поддерживают кодировку «Windows-1251» . Для этого следует кликнуть правой кнопкой мыши на заголовке окна и из контекстного меню выбрать пункт «Свойства» . Перейти на вкладку «Шрифт» открывшегося окна и выбрать пункт «Lucida Console» , также можно изменить размер шрифта. После чего нужно нажать на кнопку «OK» , для сохранения всех изменений. Проверить правильность установки кодировки можно посредством команды «chcp» . Результат выполнения должен иметь следующий вид: С:\lessonchcp Текущая кодовая страница: 1251 После выполнения всех указанных действий можно переходить к созданию новой базы данных, что осуществляется командой:   С:\lessonsqlite3.exe onedb.db" width="640"

Создание базы данных

1. Нужно перейти в каталог «C:\lesson» , выполнив команду «cd C:\lesson» . В командной строке появится приглашение: «С:\lesson» . По умолчанию в консоли используется кодировка «ср 866» . Для изменения кодировки на «ср 1251» нужно ввести команду:

 

chcp 1251  

2. Необходимо изменить название шрифта, поскольку точечные шрифты не поддерживают кодировку «Windows-1251» . Для этого следует кликнуть правой кнопкой мыши на заголовке окна и из контекстного меню выбрать пункт «Свойства» . Перейти на вкладку «Шрифт» открывшегося окна и выбрать пункт «Lucida Console» , также можно изменить размер шрифта. После чего нужно нажать на кнопку «OK» , для сохранения всех изменений. Проверить правильность установки кодировки можно посредством команды «chcp» . Результат выполнения должен иметь следующий вид:

С:\lessonchcp

Текущая кодовая страница: 1251

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

 

С:\lessonsqlite3.exe onedb.db

» здесь является приглашением для ввода команд. Каждая команда завершается точкой с запятой. SQLite позволяет использовать однострочные и многострочные комментарии:   sqlite -- Это однострочный комментарий sqlite /* Это многострочный комментарий */" width="640"

Создание базы данных

Если файл «onedb.db» не существует, то будет создана и открыта для дальнейшей работы база данных с таким именем. В случае, если такая база данных уже существует, то она просто откроется без удаления содержимого.

Строка «sqiite» здесь является приглашением для ввода команд. Каждая команда завершается точкой с запятой.

SQLite позволяет использовать однострочные и многострочные комментарии:

 

sqlite -- Это однострочный комментарий

sqlite /* Это многострочный комментарий */

Создание таблиц базы данных   СОЗДАТЬ ТАБЛИЦУ БАЗЫ ДАННЫХ МОЖНО С ПОМОЩЬЮ СЛЕДУЮЩЕЙ КОМАНДЫ :   CREATE [TEMP/TEMPORARY] TABLE [IF NOT EXISTS]  (  ,   , . . . , (  , ); КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 1. Если в рассмотренной команде после ключевого слова CREATE указано слово TEMP  или  TEMPORARY , то это свидетельствует о том, что создается временная таблица. Которая после закрытия базы данных автоматически будет удалена. Пример создания временной таблицы «day» ,  содержащей столбец «number» (в рассмотренном примере команда «.tables» выводит список всех таблиц из базы данных):  

Создание таблиц базы данных

СОЗДАТЬ ТАБЛИЦУ БАЗЫ ДАННЫХ МОЖНО С ПОМОЩЬЮ СЛЕДУЮЩЕЙ КОМАНДЫ :

 

CREATE [TEMP/TEMPORARY] TABLE [IF NOT EXISTS] ( , , . . . , ( , );

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

1. Если в рассмотренной команде после ключевого слова CREATE указано слово TEMP или TEMPORARY , то это свидетельствует о том, что создается временная таблица. Которая после закрытия базы данных автоматически будет удалена. Пример создания временной таблицы «day» , содержащей столбец «number» (в рассмотренном примере команда «.tables» выводит список всех таблиц из базы данных):  

DROP TABLE day;" width="640"

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

2. Применение необязательного словосочетания IF NOT EXISTS означает, что если таблица уже создана, то создавать ее вновь не нужно, в случае, если таблица уже существует, а словосочетание IF NOT EXISTS не указано, то будет выведено сообщение об ошибке:

Команда «PRAGMA table_info ()» позволяет получить информацию о полях таблицы, результат работы указанной команды свидетельствует о том, что структура временной таблицы «day» не изменилась после выполнения запроса на создание таблицы с таким же названием.

Созданную таблицу базы данных можно удалить из базы, применяя при этом команду DROP TABLE :

 

sqlite DROP TABLE day;

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 3. В параметрах  и  указывается идентификатор или строка.  ВАЖНО ПОМНИТЬ: имена, начинающиеся с префикса «sqlite_», зарезервированы для служебного использования. Если в параметрах  и  указывается идентификатор, то НАЗВАНИЕ НЕ ДОЛЖНО СОДЕРЖАТЬ ПРОБЕЛОВ , а также НЕ ДОЛЖНО СОВПАДАТЬ С КЛЮЧЕВЫМИ СЛОВАМИ SQL , поскольку будет выведено сообщение об ошибке.

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

3. В параметрах и указывается идентификатор или строка.

ВАЖНО ПОМНИТЬ: имена, начинающиеся с префикса «sqlite_», зарезервированы для служебного использования.

Если в параметрах и указывается идентификатор, то НАЗВАНИЕ НЕ ДОЛЖНО СОДЕРЖАТЬ ПРОБЕЛОВ , а также НЕ ДОЛЖНО СОВПАДАТЬ С КЛЮЧЕВЫМИ СЛОВАМИ SQL , поскольку будет выведено сообщение об ошибке.

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: При этом, если после INTEGER указаны ключевые слова PRIMARY KEY  (ситуация, когда поле является первичным ключом), то в это поле можно вставить только целые числа или значение NULL . При указании значения NULL будет вставлено число, на единицу большее максимального числа в столбце: 4. Значение, указанное в параметре  может быть отнесено к одному из пяти типов данных: 1) NULL – значение null; 2) INTEGER – целые числа; 3) REAL – вещественные числа; 4) TEXT – строки; 5) BLOB – бинарные данные.

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

При этом, если после INTEGER указаны ключевые слова PRIMARY KEY (ситуация, когда поле является первичным ключом), то в это поле можно вставить только целые числа или значение NULL . При указании значения NULL будет вставлено число, на единицу большее максимального числа в столбце:

4. Значение, указанное в параметре может быть отнесено к одному из пяти типов данных:

1) NULL – значение null;

2) INTEGER – целые числа;

3) REAL – вещественные числа;

4) TEXT – строки;

5) BLOB – бинарные данные.

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: Кроме того, следует отметить, что при работе с типами данных может иметь место следующее преобразование типов данных: если строку, содержащую вещественное число, преобразовать в класс INTEGER , то дробная часть будет отброшена: 4. Значение, указанное в параметре  может быть отнесено к одному из пяти типов данных: 1) NULL – значение null; 2) INTEGER – целые числа; 3) REAL – вещественные числа; 4) TEXT – строки; 5) BLOB – бинарные данные.

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

Кроме того, следует отметить, что при работе с типами данных может иметь место следующее преобразование типов данных: если строку, содержащую вещественное число, преобразовать в класс INTEGER , то дробная часть будет отброшена:

4. Значение, указанное в параметре может быть отнесено к одному из пяти типов данных:

1) NULL – значение null;

2) INTEGER – целые числа;

3) REAL – вещественные числа;

4) TEXT – строки;

5) BLOB – бинарные данные.

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

5. В параметре могут быть указаны следующие конструкции:

1) NOT NULL [] – означает, что поле обязательно должно иметь значение при вставке новой записи, если опция не указана, поле может содержать значение NULL , необходимо отметить, что необязательный параметр [] здесь, и далее задает способ разрешения конфликтных ситуаций, при этом форма конструкции имеет вид:

ON CONFLICT

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

ROLLBACK – при ошибке транзакция завершается с откатом всех измененных ранее записей, дальнейшее выполнение прерывается, и выводится сообщение об ошибке, если активной транзакции нет, то используется алгоритм ABORT ;

ABORT – при возникновении ошибки аннулируются все изменения, произведенные текущей командой, и выводится сообщение об ошибке, все изменения, сделанные в транзакции предыдущими командами, сохраняются, алгоритм ABORT используется по умолчанию;

FAIL – при возникновении ошибки все изменения, произведенные текущей командой, сохраняются, а не аннулируются, как в алгоритме ABORT , дальнейшее выполнение команды прерывается, и выводится сообщение об ошибке, а все изменения, сделанные в транзакции предыдущими командами, сохраняются;

IGNORE – проигнорировать ошибку и продолжить выполнение без вывода сообщения об ошибке;

REPLACE – при нарушении условия UNIQUE существующая запись удаляется, а новая вставляется, сообщение об ошибке не выводится, при нарушении условия NOT NULL значение NULL заменяется значением по умолчанию, если значение по умолчанию для поля не задано, то используется алгоритм ABORT , если нарушено условие CHECK , применяется алгоритм IGNORE :

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 5. В параметре  могут быть указаны следующие конструкции:

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

5. В параметре могут быть указаны следующие конструкции:

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 5. В параметре  могут быть указаны следующие конструкции: 2) DEFAULT  – задает для поля значение, которое будет использовано, если при вставке записи для этого поля не было явно указано значение: в данном параметре могут быть указаны следующие специальные значения: – CURRENT_TIME – текущее время в формате чч: мм: сс; – CURRENT_DATE – текущая дата в формате гггг-мм-дд; – CURRENT_TIMESTAMP – текущая дата и время в формате гггг-мм-дц чч:мм:СС:

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

5. В параметре могут быть указаны следующие конструкции:

2) DEFAULT – задает для поля значение, которое будет использовано, если при вставке записи для этого поля не было явно указано значение:

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

CURRENT_TIME – текущее время в формате чч: мм: сс;

CURRENT_DATE – текущая дата в формате гггг-мм-дд;

CURRENT_TIMESTAMP – текущая дата и время в формате гггг-мм-дц чч:мм:СС:

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 5. В параметре  могут быть указаны следующие конструкции: 3) COLLATE  – задает функцию сравнения  для класса text, здесь могут быть указаны следующие функции: – BINARY – обычное сравнение, значение  по умолчанию); – NOCASE – сравнение без учета регистра (не учитывает регистр только латинских букв, однако, при использовании русских букв возникают проблемы с регистром); – RTRIM – предварительное удаление лишних пробелов справа:

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

5. В параметре могут быть указаны следующие конструкции:

3) COLLATE – задает функцию сравнения для класса text, здесь могут быть указаны следующие функции:

BINARY – обычное сравнение, значение по умолчанию);

NOCASE – сравнение без учета регистра (не учитывает регистр только латинских букв, однако, при использовании русских букв возникают проблемы с регистром);

RTRIM – предварительное удаление лишних пробелов справа:

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 5. В параметре  могут быть указаны следующие конструкции: 4) UNIQUE [] – указывает, что поле может содержать только уникальные значения; 5) CHECK () – значение поля, должно удовлетворять указанному условию:

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

5. В параметре могут быть указаны следующие конструкции:

4) UNIQUE [] – указывает, что поле может содержать только уникальные значения;

5) CHECK () – значение поля, должно удовлетворять указанному условию:

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 5. В параметре  могут быть указаны следующие конструкции: 6) PRIMARY KEY [] – указывает, что поле является первичным ключом таблицы, если полю назначен класс INTEGER , то в это поле можно вставить только целые числа или значение NULL , при указании значения NULL будет вставлено число, на единицу большее максимального из хранящихся в поле чисел:

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

5. В параметре могут быть указаны следующие конструкции:

6) PRIMARY KEY [] – указывает, что поле является первичным ключом таблицы, если полю назначен класс INTEGER , то в это поле можно вставить только целые числа или значение NULL , при указании значения NULL будет вставлено число, на единицу большее максимального из хранящихся в поле чисел:

Создание таблиц базы данных   КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ: 6. В необязательном параметре  могут быть указаны следующие конструкции: 1) PRIMARY KEY () [] – позволяет задать первичный ключ для нескольких полей таблицы; 2) UNIQUE () [] – указывает, что заданные поля могут содержать только уникальный набор значений; 3) CHECK () – значение должно удовлетворять указанному условию

Создание таблиц базы данных

КОМПОНЕНТЫ УКАЗАННОЙ КОМАНДЫ:

6. В необязательном параметре могут быть указаны следующие конструкции:

1) PRIMARY KEY () [] – позволяет задать первичный ключ для нескольких полей таблицы;

2) UNIQUE () [] – указывает, что заданные поля могут содержать только уникальный набор значений;

3) CHECK () – значение должно удовлетворять указанному условию

Вставка записей в таблицу   ДОБАВИТЬ ЗАПИСЬ В ТАБЛИЦУ БАЗЫ ДАННЫХ МОЖНО С ПОМОЩЬЮ СЛЕДУЮЩЕЙ КОМАНДЫ:   INSERT [OR ] INTO  (, , . . . , ); VALUES (, , . . . , )/DEFAULT VALUES; В рассмотренной конструкции параметр OR  ЯВЛЯЕТСЯ НЕОБЯЗАТЕЛЬНЫМ , он применяется для задания алгоритма обработки ошибок. Если в таблице существуют поля, которым в инструкции INSERT не присваивается значение, то они получат значения по умолчанию. В случае если список полей не указан, то значения задаются в том порядке, в котором поля перечислены в инструкции CREATE TABLE. Конструкция VALUES () может быть заменена на DEFAULT VALUES . В этом случае будет создана новая запись, все поля которой получат значения по умолчанию или NULL , если таковые не были заданы при создании таблицы.

Вставка записей в таблицу

ДОБАВИТЬ ЗАПИСЬ В ТАБЛИЦУ БАЗЫ ДАННЫХ МОЖНО С ПОМОЩЬЮ СЛЕДУЮЩЕЙ КОМАНДЫ:

 

INSERT [OR ] INTO (, , . . . , ); VALUES (, , . . . , )/DEFAULT VALUES;

В рассмотренной конструкции параметр OR ЯВЛЯЕТСЯ НЕОБЯЗАТЕЛЬНЫМ , он применяется для задания алгоритма обработки ошибок.

Если в таблице существуют поля, которым в инструкции INSERT не присваивается значение, то они получат значения по умолчанию. В случае если список полей не указан, то значения задаются в том порядке, в котором поля перечислены в инструкции CREATE TABLE.

Конструкция VALUES () может быть заменена на DEFAULT VALUES . В этом случае будет создана новая запись, все поля которой получат значения по умолчанию или NULL , если таковые не были заданы при создании таблицы.

Вставка записей в таблицу   Создание таблиц: «buyer» (покупатель), «supplier» (поставщик)  и «product» (товар):

Вставка записей в таблицу

Создание таблиц: «buyer» (покупатель), «supplier» (поставщик) и «product» (товар):

Вставка записей в таблицу   Заполнение таблиц связанными данными: В таблице «buyer» указано только одно поле «name_ buyer» , в данном случае полю «id_ buyer» присваивается значение по умолчанию. В таблице «supplier» поле «id_supplier»  объявлено как первичный ключ, поэтому туда будет вставлено значение, на единицу большее максимального значения в поле. Такого же эффекта можно достичь, если в качестве значения передать NULL . В таблице «product» значения полей  «id_ buyer»  и «id_supplier»  должны содержать идентификаторы соответствующих записей из таблиц «buyer» и «supplier» .  Для этого сначала следует выполнить запрос на выборку данных из родительских таблиц «buyer» и «supplier» .

Вставка записей в таблицу

Заполнение таблиц связанными данными:

В таблице «buyer» указано только одно поле «name_ buyer» , в данном случае полю «id_ buyer» присваивается значение по умолчанию.

В таблице «supplier» поле «id_supplier» объявлено как первичный ключ, поэтому туда будет вставлено значение, на единицу большее максимального значения в поле. Такого же эффекта можно достичь, если в качестве значения передать NULL .

В таблице «product» значения полей «id_ buyer» и «id_supplier» должны содержать идентификаторы соответствующих записей из таблиц «buyer» и «supplier» . Для этого сначала следует выполнить запрос на выборку данных из родительских таблиц «buyer» и «supplier» .

Обновление и удаление записей   На практике довольно часто встречаются ситуации, когда предпринимается попытка добавления записи с уже существующим в таблице идентификатором, или при условии того, что значение индекса UNIQUE не уникально, в результате указанных действий программа выведет сообщение об ошибке. Если необходимо, чтобы имеющиеся неуникальные записи обновлялись без вывода сообщения об ошибке, можно применять следующую инструкцию: Аналогичный результат может быть получен с помощью следующей инструкции: Пример замены значения  поля  «name_ buyer» , идентификатор которого равен 1:

Обновление и удаление записей

На практике довольно часто встречаются ситуации, когда предпринимается попытка добавления записи с уже существующим в таблице идентификатором, или при условии того, что значение индекса UNIQUE не уникально, в результате указанных действий программа выведет сообщение об ошибке. Если необходимо, чтобы имеющиеся неуникальные записи обновлялись без вывода сообщения об ошибке, можно применять следующую инструкцию:

Аналогичный результат может быть получен с помощью следующей инструкции:

Пример замены значения поля «name_ buyer» , идентификатор которого равен 1:

Обновление и удаление записей   Выполнить обновление записи в таблице также позволяет инструкция UPDATE , имеющая следующий формат: Параметр OR  ЯВЛЯЕТСЯ НЕОБЯЗАТЕЛЬНЫМ , он применяется для задания алгоритма обработки ошибок. После ключевого слова SET указываются названия полей и их новые значения, следующие за знаком равенства. Для ограничения набора изменяемых записей, применяется инструкция WHERE . Если не указано конкретное  ,  то в таблице будут обновлены все записи: Пример изменения значения поля «name_buyer» ,  идентификатор которого равен 1:

Обновление и удаление записей

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

Параметр OR ЯВЛЯЕТСЯ НЕОБЯЗАТЕЛЬНЫМ , он применяется для задания алгоритма обработки ошибок.

После ключевого слова SET указываются названия полей и их новые значения, следующие за знаком равенства.

Для ограничения набора изменяемых записей, применяется инструкция WHERE . Если не указано конкретное , то в таблице будут обновлены все записи:

Пример изменения значения поля «name_buyer» , идентификатор которого равен 1:

Обновление и удаление записей   Удаление записи может быть достигнуто через применение инструкции DELETE : Пример удаления значения  поля  «name_buyer» , идентификатор которого равен 1: В случае, когда не указано конкретное  , то из таблицы будут удалены все записи.

Обновление и удаление записей

Удаление записи может быть достигнуто через применение инструкции DELETE :

Пример удаления значения поля «name_buyer» , идентификатор которого равен 1:

В случае, когда не указано конкретное , то из таблицы будут удалены все записи.

Преобразование  структуры таблицы Для выполнения изменений структуры таблиц баз данных в SQLite применяется инструкция ALTER TABLE , которая позволяет осуществлять следующие действия: 1) переименование таблицы; 2) добавление поля. Формат данной инструкции имеет вид: При этом параметр  , в зависимости  от предназначения, может быть представлен в одной из следующих форм: 1) RENAME TO  ; – применяется для переименования таблиц, в качестве примера переименуем таблицу «product» в «items» , и в качестве результата выведем названия всех таблиц базы данных:

Преобразование структуры таблицы

Для выполнения изменений структуры таблиц баз данных в SQLite применяется инструкция ALTER TABLE , которая позволяет осуществлять следующие действия:

1) переименование таблицы;

2) добавление поля.

Формат данной инструкции имеет вид:

При этом параметр , в зависимости от предназначения, может быть представлен в одной из следующих форм:

1) RENAME TO ; – применяется для переименования таблиц, в качестве примера переименуем таблицу «product» в «items» , и в качестве результата выведем названия всех таблиц базы данных:

Преобразование  структуры таблицы Для выполнения изменений структуры таблиц баз данных в SQLite применяется инструкция ALTER TABLE , которая позволяет осуществлять следующие действия: 1) переименование таблицы; 2) добавление поля. Формат данной инструкции имеет вид: *** В новом поле нужно задать значение по умолчанию, или же значение NULL должно быть допустимым, кроме того, вновь добавляемое поле не может быть объявлено как PRIMARY KEY или UNIQUE . ПРИМЕР добавления поля «quantity» (количество) в таблицу «items» и вывода информации о полях таблицы: При этом параметр  ,  в зависимости от предназначения, может быть представлен в одной из следующих форм: 2) ADD COLUMN   ; – применяется для добавления нового поля, которое будет размещено после всех существующих полей таблицы.

Преобразование структуры таблицы

Для выполнения изменений структуры таблиц баз данных в SQLite применяется инструкция ALTER TABLE , которая позволяет осуществлять следующие действия:

1) переименование таблицы;

2) добавление поля.

Формат данной инструкции имеет вид:

*** В новом поле нужно задать значение по умолчанию, или же значение NULL должно быть допустимым, кроме того, вновь добавляемое поле не может быть объявлено как PRIMARY KEY или UNIQUE .

ПРИМЕР добавления поля «quantity» (количество) в таблицу «items» и вывода информации о полях таблицы:

При этом параметр , в зависимости от предназначения, может быть представлен в одной из следующих форм:

2) ADD COLUMN ; – применяется для добавления нового поля, которое будет размещено после всех существующих полей таблицы.

Извлечение данных из таблицы Извлекать данные из таблицы позволяет инструкция SELECT , которая записывается в следующем формате: После ключевого слова SELECT можно указать слово ALL   или DISTINCT . При этом, ALL является значением по умолчанию  и говорит, что выводятся все записи, а применение слова DISTINCT позволяет вывести только уникальные значения. SQL-команда SELECT находит в указанной таблице все записи, удовлетворяющие условию инструкции WHERE . Если инструкция WHERE не указана, то из таблицы будут выведены все записи.

Извлечение данных из таблицы

Извлекать данные из таблицы позволяет инструкция SELECT , которая записывается в следующем формате:

После ключевого слова SELECT можно указать слово ALL или DISTINCT . При этом, ALL является значением по умолчанию и говорит, что выводятся все записи, а применение слова DISTINCT позволяет вывести только уникальные значения.

SQL-команда SELECT находит в указанной таблице все записи, удовлетворяющие условию инструкции WHERE . Если инструкция WHERE не указана, то из таблицы будут выведены все записи.

Извлечение данных из таблицы ПРИМЕР получения всех записей из таблицы «supplier» : ПРИМЕР вывода записи с идентификатором, равным единице из таблицы «supplier»: ПРИМЕР SQL-команда SELECT позволяет вместо перечисления полей указывать математическое выражение, которое будет вычислено и выведено в качестве результата: ПРИМЕР облегчения обращения к результату выполненного выражения через псевдоним, указать который нужно после выражения через ключевое слово AS :

Извлечение данных из таблицы

ПРИМЕР получения всех записей из таблицы «supplier» :

ПРИМЕР вывода записи с идентификатором, равным единице из таблицы «supplier»:

ПРИМЕР SQL-команда SELECT позволяет вместо перечисления полей указывать математическое выражение, которое будет вычислено и выведено в качестве результата:

ПРИМЕР облегчения обращения к результату выполненного выражения через псевдоним, указать который нужно после выражения через ключевое слово AS :

Извлечение данных из таблицы ПРИМЕР замены индекса поставщика (id_ supplier) в таблице «items» на соответствующее название (name_ supplier) из таблицы «supplier» : Инструкция GROUP BY  позволяет осуществлять группировку нескольких записей. ПРИМЕР вывода количества товаров, предоставленных каждым из поставщиком: ПРИМЕР вывода идентификаторов поставщиков, предоставивших более одного наименования товара: При условии необходимости ограничения сгруппированного набора записей следует воспользоваться инструкцией HAVING , которая выполняет те же функции, что и инструкция WHERE , но только для сгруппированного набора.

Извлечение данных из таблицы

ПРИМЕР замены индекса поставщика (id_ supplier) в таблице «items» на соответствующее название (name_ supplier) из таблицы «supplier» :

Инструкция GROUP BY позволяет осуществлять группировку нескольких записей.

ПРИМЕР вывода количества товаров, предоставленных каждым из поставщиком:

ПРИМЕР вывода идентификаторов поставщиков, предоставивших более одного наименования товара:

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

Извлечение данных из таблицы В качестве агрегатной функции могут применяться следующие: 1) COUNT (/*) – выводит количество записей  в указанном поле; 2) MIN () – выводит минимальное значение в указанном поле; 3) MAX () – выводит максимальное значение в указанном поле; 4) AVG () – выводит среднюю величину значений в указанном поле; 5) SUM () – выводит сумму значений в указанном поле в виде целого числа; 6) TOTAL () – сумму значений в указанном поле в виде в виде числа с плавающей точкой; 7) GROUP_CONCAT (, ) – выводит строку, которая содержит все значения из указанного поля, разделенные указанным разделителем, при этом, если разделитель не указан, то используется запятая.

Извлечение данных из таблицы

В качестве агрегатной функции могут применяться следующие:

1) COUNT (/*) – выводит количество записей в указанном поле;

2) MIN () – выводит минимальное значение в указанном поле;

3) MAX () – выводит максимальное значение в указанном поле;

4) AVG () – выводит среднюю величину значений в указанном поле;

5) SUM () – выводит сумму значений в указанном поле в виде целого числа;

6) TOTAL () – сумму значений в указанном поле в виде в виде числа с плавающей точкой;

7) GROUP_CONCAT (, ) – выводит строку, которая содержит все значения из указанного поля, разделенные указанным разделителем, при этом, если разделитель не указан, то используется запятая.

Извлечение данных из таблицы Записи таблиц можно сортировать, применяя при этом инструкцию ORDER BY . Возможна сортировка сразу по нескольким полям. 1) по возрастанию с помощью значения ASC , важно отметить,  что сортировка по возрастанию выполняется по умолчанию; 2) по убыванию посредством применения значения DESC . ПРИМЕР  имена поставщиков по возрастанию и убыванию:

Извлечение данных из таблицы

Записи таблиц можно сортировать, применяя при этом инструкцию ORDER BY . Возможна сортировка сразу по нескольким полям.

1) по возрастанию с помощью значения ASC , важно отметить, что сортировка по возрастанию выполняется по умолчанию;

2) по убыванию посредством применения значения DESC .

ПРИМЕР имена поставщиков по возрастанию и убыванию:

Извлечение данных из таблицы В случае, если требуется, чтобы по результатам поиска выводились не все найденные записи, а лишь их часть, то следует использовать инструкцию LIMIT . 1) LIMIT  (задает количество записей от начальной позиции, которая имеет индекс, равный нулю); 2) LIMIT , ; 3) LIMIT  OFFSET .

Извлечение данных из таблицы

В случае, если требуется, чтобы по результатам поиска выводились не все найденные записи, а лишь их часть, то следует использовать инструкцию LIMIT .

1) LIMIT (задает количество записей от начальной позиции, которая имеет индекс, равный нулю);

2) LIMIT , ;

3) LIMIT OFFSET .

Извлечение данных из таблицы Выборка данных из нескольких таблиц Применение команды SELECT позволяет осуществлять выборку данных одновременно из нескольких таблиц. Для этого достаточно перечислить нужные таблицы через запятую в инструкции FROM и указать в инструкции WHERE через запятую пары полей, являющиеся для этих таблиц связующими. При этом в условии и перечислении полей сначала указывается название таблицы или ее псевдоним, а затем через точку название поля. ПРИМЕР вывода товары из таблицы «items» ,  где  вместо «id_buyer» указывается «name_buyer» , а «id_supplier» заменено «name_ supplier» : ПРИМЕР вывода товары из таблицы «items» ,  где  вместо «id_buyer» указывается «name_buyer» , а «id_supplier» заменено «name_ supplier» :

Извлечение данных из таблицы

Выборка данных из нескольких таблиц

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

Для этого достаточно перечислить нужные таблицы через запятую в инструкции FROM и указать в инструкции WHERE через запятую пары полей, являющиеся для этих таблиц связующими. При этом в условии и перечислении полей сначала указывается название таблицы или ее псевдоним, а затем через точку название поля.

ПРИМЕР вывода товары из таблицы «items» , где вместо «id_buyer» указывается «name_buyer» , а «id_supplier» заменено «name_ supplier» :

ПРИМЕР вывода товары из таблицы «items» , где вместо «id_buyer» указывается «name_buyer» , а «id_supplier» заменено «name_ supplier» :

Извлечение данных из таблицы Выборка данных из нескольких таблиц Инструкция WHERE может быть заменена на инструкцию ON , помимо этого в инструкции WHERE можно указывать условие. ПРИМЕР вывода товаров, предоставленных поставщиком, идентификатор которого равен двум: Связать таблицы возможно, применив оператор JOIN . ПРИМЕР применения данного оператора:

Извлечение данных из таблицы

Выборка данных из нескольких таблиц

Инструкция WHERE может быть заменена на инструкцию ON , помимо этого в инструкции WHERE можно указывать условие.

ПРИМЕР вывода товаров, предоставленных поставщиком, идентификатор которого равен двум:

Связать таблицы возможно, применив оператор JOIN .

ПРИМЕР применения данного оператора:

Извлечение данных из таблицы Выборка данных из нескольких таблиц Оператор JOIN объединяет все записи, которые существуют  во всех связующих полях. ПРИМЕР если вывести количество товаров, поставленных каждым из поставщиков, то поставщики,  не предоставившие товар, выведены не будут: В случае, если названия связующих полей в таблицах являются одинаковыми, то вместо инструкции ON можно применять инструкцию USING :

Извлечение данных из таблицы

Выборка данных из нескольких таблиц

Оператор JOIN объединяет все записи, которые существуют во всех связующих полях.

ПРИМЕР если вывести количество товаров, поставленных каждым из поставщиков, то поставщики, не предоставившие товар, выведены не будут:

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

Извлечение данных из таблицы Выборка данных из нескольких таблиц В рассмотренном примере не выведено количество товаров, которые предоставили другие поставщики из таблицы «supplier» .  Чтобы получить количество товаров, полученных от каждого из поставщиков необходимо использовать левостороннее объединение, которое имеет следующий формат: Применение левостороннего объединения позволяет выводить записи, соответствующие условию, а также записи из таблицы  ,  которым нет соответствия в таблице  (при этом поля из таблицы  будут иметь нулевые значение). ПРИМЕР применения левостороннего объединения:

Извлечение данных из таблицы

Выборка данных из нескольких таблиц

В рассмотренном примере не выведено количество товаров, которые предоставили другие поставщики из таблицы «supplier» . Чтобы получить количество товаров, полученных от каждого из поставщиков необходимо использовать левостороннее объединение, которое имеет следующий формат:

Применение левостороннего объединения позволяет выводить записи, соответствующие условию, а также записи из таблицы , которым нет соответствия в таблице (при этом поля из таблицы будут иметь нулевые значение).

ПРИМЕР применения левостороннего объединения:

Извлечение данных из таблицы Работа с условиями в инструкциях WHERE и HAVING Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения: 1. Условие равенства, выполняемое с помощью символов «=» или «==» : Результат сравнения двух строк зависит от применяемой функции сравнения, которую можно задать с помощью ранее рассмотренной функции COLLATE  . ПРИМЕР

Извлечение данных из таблицы

Работа с условиями в инструкциях WHERE и HAVING

Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения:

1. Условие равенства, выполняемое с помощью символов «=» или «==» :

Результат сравнения двух строк зависит от применяемой функции сравнения, которую можно задать с помощью ранее рассмотренной функции COLLATE . ПРИМЕР

» ; 5. Условие «меньше либо равно», выполняемое с помощью символа « ; 6. Условие «больше либо равно», выполняемое с помощью символа «=» ; 7. Условие на наличие нулевого значения, выполняемое с помощью «IS NOT NULL» , «NOT NULL» или «NOTNULL» ; 8. Условие на отсутствие нулевого значения, выполняемое с помощью «IS NULL» или «ISNULL» ;" width="640"

Извлечение данных из таблицы

Работа с условиями в инструкциях WHERE и HAVING

Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения:

2. Условие неравенства, выполняемое с помощью символов «!=» или «» :

3. Условие «меньше», выполняемое с помощью символа « ;

4. Условие «больше», выполняемое с помощью символа «» ;

5. Условие «меньше либо равно», выполняемое с помощью символа « ;

6. Условие «больше либо равно», выполняемое с помощью символа «=» ;

7. Условие на наличие нулевого значения, выполняемое с помощью «IS NOT NULL» , «NOT NULL» или «NOTNULL» ;

8. Условие на отсутствие нулевого значения, выполняемое с помощью «IS NULL» или «ISNULL» ;

Извлечение данных из таблицы Работа с условиями в инструкциях WHERE и HAVING Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения: 9. Условие на проверку вхождения в диапазон значений, выполняемое с помощью «BETWEEN  AND » , при этом начало и конец указанного диапазона тоже учитывается: 10. Условие на проверку наличия значения в определенном наборе, выполняемое с помощью «IN ()» , при данном сравнении учитывается регистр букв:

Извлечение данных из таблицы

Работа с условиями в инструкциях WHERE и HAVING

Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения:

9. Условие на проверку вхождения в диапазон значений, выполняемое с помощью «BETWEEN AND » , при этом начало и конец указанного диапазона тоже учитывается:

10. Условие на проверку наличия значения в определенном наборе, выполняемое с помощью «IN ()» , при данном сравнении учитывается регистр букв:

Извлечение данных из таблицы Работа с условиями в инструкциях WHERE и HAVING Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения: 11. Условие на проверку соответствия шаблону, выполняемое с помощью «LIKE » , при этом в шаблоне применяются следующие специальные символы, которые могут быть размещены  в любом месте шаблона: 1) «%» – любое количество символов или полное  их отсутствие; 2) «_» – любой одиночный символ. ПРИМЕР , который позволяет определить наличие вхождения слова «среда» в шаблон: Также следует отметить, что шаблон для поиска может иметь сложную структуру:

Извлечение данных из таблицы

Работа с условиями в инструкциях WHERE и HAVING

Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения:

11. Условие на проверку соответствия шаблону, выполняемое с помощью «LIKE » , при этом в шаблоне применяются следующие специальные символы, которые могут быть размещены в любом месте шаблона:

1) «%» – любое количество символов или полное их отсутствие;

2) «_» – любой одиночный символ.

ПРИМЕР , который позволяет определить наличие вхождения слова «среда» в шаблон:

Также следует отметить, что шаблон для поиска может иметь сложную структуру:

Извлечение данных из таблицы Работа с условиями в инструкциях WHERE и HAVING Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения: На практике возникают ситуации, когда необходимо найти символы «%» и «_» , которые являются специальными. Сделать это позволяет функция ESCAPE  : Как уже было отмечено ранее, при сравнении с шаблоном букв латинского алфавита регистр символов не учитывается. Для того, чтобы такой учет выполнялся необходимо параметру «case_sensitive_like» в SQL-команде PRAGMA присвоить одно из значений: «true», «1», «yes», «on» :

Извлечение данных из таблицы

Работа с условиями в инструкциях WHERE и HAVING

Инструкции WHERE и HAVING позволяют ограничить набор выводимых, изменяемых или удаляемых записей с помощью некоторого условия внутри которого могут быть указаны соответствующие операторы сравнения:

На практике возникают ситуации, когда необходимо найти символы «%» и «_» , которые являются специальными. Сделать это позволяет функция ESCAPE :

Как уже было отмечено ранее, при сравнении с шаблоном букв латинского алфавита регистр символов не учитывается. Для того, чтобы такой учет выполнялся необходимо параметру «case_sensitive_like» в SQL-команде PRAGMA присвоить одно из значений: «true», «1», «yes», «on» :

Извлечение данных из таблицы Работа с индексами В целях ускорения выполнения запросов применяются индексы, или ключи. В SQLite существуют следующие виды индексов: 1) первичный ключ (для создания такого индекса используется ключевое слово PRIMARY KEY  ); 2) уникальный индекс (когда применяется составной первичный ключ); 3) обычный индекс. Для того, чтобы посмотреть, каким образом будет выполняться запрос и какие индексы при этом будут использоваться, позволяет SQL-команда EXPLAIN , которая имеет следующий формат: Выполним поиск в поле, являющемся первичным ключом: Выполним поиск в обычном поле, не являющемся первичным ключом:

Извлечение данных из таблицы

Работа с индексами

В целях ускорения выполнения запросов применяются индексы, или ключи. В SQLite существуют следующие виды индексов:

1) первичный ключ (для создания такого индекса используется ключевое слово PRIMARY KEY );

2) уникальный индекс (когда применяется составной первичный ключ);

3) обычный индекс.

Для того, чтобы посмотреть, каким образом будет выполняться запрос и какие индексы при этом будут использоваться, позволяет SQL-команда EXPLAIN , которая имеет следующий формат:

Выполним поиск в поле, являющемся первичным ключом:

Выполним поиск в обычном поле, не являющемся первичным ключом:

Извлечение данных из таблицы Работа с индексами Для создания индекса применяется SQL-команда CREATE INDEX , которая имеет следующий формат записи: *** Если указывается ключевое слово UNIQUE , то создается уникальный индекс, что обеспечивает отсутствие дублирования данных в поле. Если слово UNIQUE не указано, то создается обычный индекс. ПРИМЕР создание обычного индекса для номера поставщика и его проверка с помощью SQL-команды EXPLAIN :

Извлечение данных из таблицы

Работа с индексами

Для создания индекса применяется SQL-команда CREATE INDEX , которая имеет следующий формат записи:

*** Если указывается ключевое слово UNIQUE , то создается уникальный индекс, что обеспечивает отсутствие дублирования данных в поле. Если слово UNIQUE не указано, то создается обычный индекс.

ПРИМЕР создание обычного индекса для номера поставщика и его проверка с помощью SQL-команды EXPLAIN :

Извлечение данных из таблицы Работа с индексами Над индексами можно выполнять следующие операции: 1) удаление обычного или уникального индекса, что выполняет SQL-команда DROP INDEX , имеющая следующий формат: 2) получение статистической информации об индексах, которая помещается в специальную таблицу «sqiite_stat1» ,  изначально указанная таблица пуста, для сбора и помещения статистических данных в таблицу «sqiite_stat1» применяется команда ANALYZE , формат записи которой имеет вид:

Извлечение данных из таблицы

Работа с индексами

Над индексами можно выполнять следующие операции:

1) удаление обычного или уникального индекса, что выполняет SQL-команда DROP INDEX , имеющая следующий формат:

2) получение статистической информации об индексах, которая помещается в специальную таблицу «sqiite_stat1» , изначально указанная таблица пуста, для сбора и помещения статистических данных в таблицу «sqiite_stat1» применяется команда ANALYZE , формат записи которой имеет вид:

Извлечение данных из таблицы Создание вложенных запросов При создании таблицы с помощью вложенного запроса применяется следующий формат записи: ПРИМЕР создания временной копии таблицы «supplier» и вывода ее содержимого:

Извлечение данных из таблицы

Создание вложенных запросов

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

ПРИМЕР создания временной копии таблицы «supplier» и вывода ее содержимого:

Извлечение данных из таблицы Создание вложенных запросов Вложенные запросы можно использовать  и в инструкции INSERT , структура записи которой имеет следующий вид: ПРИМЕР удаления всех данных  из созданной ранее временной таблицы «supplier1» ,  а затем  ее наполнение с помощью вложенного запроса:

Извлечение данных из таблицы

Создание вложенных запросов

Вложенные запросы можно использовать и в инструкции INSERT , структура записи которой имеет следующий вид:

ПРИМЕР удаления всех данных из созданной ранее временной таблицы «supplier1» , а затем ее наполнение с помощью вложенного запроса:

Извлечение данных из таблицы Создание вложенных запросов Инструкция WHERE  также позволяет  использовать вложенные запросы. При этом вложенный запрос размещается в операторе IN . ПРИМЕР вывода товаров, предоставленных поставщиком по фамилии Зайцев:

Извлечение данных из таблицы

Создание вложенных запросов

Инструкция WHERE также позволяет использовать вложенные запросы. При этом вложенный запрос размещается в операторе IN .

ПРИМЕР вывода товаров, предоставленных поставщиком по фамилии Зайцев:

Сохранить у себя:
Работа с базами данных в языке «python»

Получите свидетельство о публикации сразу после загрузки работы



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