metoda / Ml_ITIn_2013
.pdf
211
Рис. 3.207. Состав пакетного файла Insmysql.bat.
Заметьте, что содержимое файла, например в Блокноте, будет представлено в виде одной строки (конец строки на рис. 3.208 не виден).
Рис. 3.208. Изображение пакетного файла Insmysql.bat в Блокноте.
Использовать командный файл Insmysql.bat можно, указав его в командной строке менеджера файлов (например, Total Commander рис. 3.209).
Рис. 3.209. Вызов пакетного файла Insmysql.bat.
Вызов пакетного файла Insmysql.bat приведет к окну (рис. 3.210), указав в котором пароль, получим сообщение о составе таблицы customers
(рис. 3.211).
212
Рис. 3.210. Этап работы пакетного файла Insmysql.bat.
В файле Insmysql.bat (рис. 3.207) использована команда перенаправления
, приказывающая вызвать на обработку файл сценарий
Обратите внимание на путь к файлу сценарию, он может у Вас отличаться от использованного в примере.
В файле сценария (рис. 3.204) использована команда
,
которая осуществляет выборку (и вывод на экран в данном случае) всей информации из таблицы customers (рис. 3.211).
Заметьте, что строка с номером 6 (рис. 3.211) соответствует строке с номером 5 на этом же рисунке.
Рис. 3.211. Результат работы пакетного файла Insmysql.bat.
Проанализировать информацию, показанную на рис. 3.211, достаточно трудно, т.к. она только промелькнет на экране и окно с ней закроется автоматически. Чтобы увидеть и проанализировать информацию можно воспользоваться средствами PhpMyAdmin или прочитать ее через монитор
MySQL.
Однако, если модифицировать файл Insmysql.bat (рис. 3.207) и вставить
в нем команду вывода результатов во внешний файл
(рис. 3.212), то результат работы (рис. 3.211) становится доступен через любой редактор.
213
Рис. 3.212. Модификация пакетного файла Insmysql.bat.
Далее (рис. 3.218) будет показано, как следует модифицировать
пакетный файл (рис. 3.212), чтобы имя файла
являлось в нем формальным параметром.
Ниже приводится листинг сценария lab13_03.sql (рис. 3.215), выполняющий действия по вставке информации в базу данных, схема которой представлена на рис. 3.212 и для удобства продублирована ниже
(рис. 3.214).
Для продолжения работы очистите таблицу Customers. Для этого перейдите в монитор MySQL (CmySql.bat) и выполните команды USE BOOKS и DELETE FROM customers (рис. 3.213).
Рис. 3.213. Использование команды Delete - чистки таблицы базы.
Customers (CustomerId, Name, Address, City) |
- Клиент |
|
Оrders (ОrderId, CustomerId, Аmount, Date) |
- |
Заказ |
Books (ISBN, Author, Title, Price) |
- |
Книга |
Оrder_items (ОrderId, ISBN, Quantity ) |
- |
Покупка |
Рис. 3.214. Схема тестовой базы. |
|
|
Листинг (lab13_03.sql) ввода данных в таблицы базы данных для схемы рис. 3.214.
use books;
SET NAMES cp1251;
insert into customers values
214
(1, "Петр Петров", "пр. Мира д.7", "Москва"), (2, "Юлия Вонг", "ул. Шевченко д.1, кв 5", "Киев"),
(3, "Ян Дрибас", "пр. Зорь д.5, кв. 12 ", "Минск");
insert into orders values
(NULL, 3, 69.98, "2009-12-02"), (NULL, 1, 49.00, "2009-12-15"), (NULL, 2, 74.98, "2009-12-19"), (NULL, 3, 24.99, "2010-02-01");
insert into books values
("0-672", "Люк Морган", "Java 2 для профессионалов", 34.99),
("0-673", "Дж. Даун", "Инсталляция GNU/Linux", 24.99), ("0-674", "В. Дрибас", "Основы баз данных", 24.99), ("0-675", "М. Цаленко", "Алгебра баз данных", 49.99);
insert into order_items values (1, "0-672", 2), (2, "0-675", 1), (3, "0-675", 1), (3, "0-674", 1), (4, "0-673", 3);
SET NAMES cp866; select * from customers; select * from orders; select * from books; select * from order_items;
Рис. 3.215. Исходные данные для вставки в базу данных books.
Для ввода данных, представленных на рис. 3.215, создадим пакетный файл с именем
. Местоположение файла показано на рис. 3.216.
Рис. 3.216. Местоположение командного файла INSxSQL.bat.
215
Состав файла
приведен ниже (рис. 3.217 или рис. 3.218)
Рис. 3.217. Отображение файла INSxSQL.bat в редакторе Scite.
Рис. 3.218. Состав файла INSxSQL.bat.
Обратите внимание, что состав файла INSxSQL.bat и файла
соответствует файлу Insmysql.bat, за исключением элемента
, который подменяет имя вызываемого SQL-сценария.
Использование подобного механизма подмены, позволяет вызывать сценарий Lab13_03.sql в работу с командной строки менеджера файлов следующим образом (рис. 3.219).
Рис. 3.219. Вызов INSxSQL.bat с параметром исполняемого файла.
Исполнение
занесет информацию в таблицы базы данных Books, но на экране промелькнет только Dos окно.
216
Посмотреть результат проделанной работы пакетного файла можно либо средствами PhpMyAdmin, либо через монитор MySql.
Например, щелкнув мышкой на имени пакетного файла
в окне менеджера файлов (см. рис. 3.219) мы получим приглашение в Mysql, после которого укажем команду открытия базы данных (use books;), установки кодировки CP866 (set names cp866) и команду показа содержимого таблицы (например, SELECT * FROM customers;)
(рис. 3.220).
Рис. 3.220. Вызов монитора MySQL и открытие базы.
Естественно, что в команде SELECT может быть указана любая необходимая нам таблица базы данных.
Для выполнения следующих тестов выйдите из Mysql, используя команду Exit.
Следующий пример показывает реакцию MySQL, если оператор ошибочно повторит ввод в командной строке информации
, показанной на рис. 3.219.
По определению схемы (рис. 3.214) атрибут CustomerId в таблице Customers является ключевым (т.е. не допускает дубликатов хранимых значений атрибута), поэтому СУБД MySQL выдаст следующее сообщение:
Приведенное сообщение промелькнет в окне и прочитать его очень трудно. Чтобы увидеть и проанализировать данное сообщение необходимо вызвать командный процессор Cmd.exe (рис. 3.221).
217
Рис. 3.221. Вызов командного процессора.
Окно командного процессора представлено на рис. 3.222.
Рис. 3.222. Окно командного процессора с приглашением для ввода информации.
Если в приглашении
ввести имя командного файла с параметром имени исполняемого SQL сценария:
,
то ошибка, обнаруженная Mysql, останется на экране (рис. 3.223).
Рис. 3.223. Окно командного процессора с ошибкой ввода информации.
Следующий прием показывает применение текстового файла для контроля вводимой информации. Для удобства вычистим все таблицы базы данных, воспользовавшись средствами PhpMyadmin.(рис. 3.224).
218
Рис. 3.224. Окно PhpMyadmin с таблицей books базы данных books.
Используя кнопку
(рис. 3.224) последовательно удалим все записи из четырех таблиц базы данных.
Далее воспользовавшись командным процессором (см. рис. 3.221), введем в полученное приглашение следующую информацию:
insxsql.bat lab13_03ins.sql >1.txt
Рис. 3.225. Использование перенаправления в командной строке.
Содержимое файла 1.txt (имя может быть любое) (рис. 3.226) можно посмотреть через любой текстовый редактор.
219
Рис. 3.226. Результат работы командного файла в текстовом файле.
Как видно из рис. 3.226 содержимое файла 1.txt соответствует информации приведенной на рис. 3.215.
220
Тема № 13. Извлечение данных из базы данных Цель. Практическое использование конструкций SQL.
Задание 1. Оператор выборки данных SELECT
Оператор SELECT языка SQL извлекает данные из базы данных, выбирая из таблицы строки, которые отвечают заданному критерию поиска.
Основная форма оператора SELECT следующая (полное описание и использование языка SQL приведено в [7], в этой теме будут рассматриваться наиболее употребимые):
SELECT items FROM tables
[ WHERE condition ]
[ GROUP BY group_type ]
[ HAVING wnere_definition ] [ ORDER BY order_type ]
[ LIMIT Iimit_criteria ] ;
Рассмотрим каждую конструкцию, используя схему базы данных представленную на рис. 3.214. Выполнение данной темы предполагает, что
MySQL запущен 
.
Простейшим вариантом выборки данных Вы уже неоднократно пользовались, используя конструкцию SELECT * FROM tables (см. например рис. 3.220). Символ ―*‖ использовался для вывода всех столбцов искомой таблицы tables.
Если взамен символа ―*‖ использовать (через запятую) имена столбцов, то в результате подобного запроса Вы получите информацию только по тем столбцам, которые указаны в качестве элементов items.
Например, запрос (поиск):
SELECT name, city FROM customers ;
запрашивает данные столбцов name (имя) и city (город) таблицы Customers: Если воспользоваться монитором MySQL (вызов через пакетный файл
CmySql.bat - рис. 3.188), то ввод необходимых команд даст следующий результат, показанный на рис. 3.227.
Если воспользоваться средствами PhpMyAdmin для реализации этого запроса, то результат будет такой же, но изображение естественно будет другим (рис. 3.229).
Можно указывать столько столбцов таблицы, сколько необходимо, главное — вписать их по порядку после ключевого слова select. Кроме того, можно указывать и другие элементы, уточняющие выборку данных.
