metoda / Ml_ITIn_2013
.pdf191
также будет находиться и созданная база данных с именем books (если Вы раскроете список ).
Если возникает необходимость создать таблицы базы данных не используя средства PhpMyAdmin, то можно подготовить в любом текстовом редакторе SQL-код, показанный на рис. 3.169 (тема №12. Задание 2.) и использовать командный файл Hmysql.bat представленный на рис. 3.171, который используя содержимое файла Lab13_00.sql создает таблицы в базе данных автоматически.
Рис. 3.166. Окно браузера PhpMyAdmin после создания базы books. Обратите внимание, что база данных не содержит таблиц.
Создать таблицы внутри базы можно непосредственно средствами
PhpMyAdmin.
Однако цель, в данном задании, научиться работать с MySQL через ее монитор (через строку приглашение mysql> монитора MySQL).
Пусть например, Вы решили создать в базе таблицу с именем customers, атрибуты которой описываются следующими именами:
Customers (CustomerId, Name, Address, City) - Клиент
Каждому столбцу таблицы необходимо присвоить тип и другие характеристики, определяющие поведение создаваемого объекта как в СУБД,
192
так и в реальном мире, фрагмент которого Вы описываете (моделируете) в таблицах (отношениях) базы данных.
Первый столбец в схеме модели CustomerId - это первичный ключ (m key), позволяющий однозначно отделять объекты, подлежащие хранению в базе данныъх друг от друга. Пусть это будет целое (int) беззнаковое (unsigned) число, которое должно присутствовать в каждой записи таблицы (not null). Учитывая, что значение должно быть уникально и автоматически формироваться системой MySQL, укажем для него характеристику - auto_increment.
Все остальные столбцы будут содержать данные строкового типа, который в нашем случае обозначен типом char. В скобках после типа укажем максимальное количество символов, отводимое для значений каждого столбца.
Ниже (рис. 3.167) приведены характеристики столбцов таблицы.
Customers
( customerid int unsigned not null auto_increment primary key, name char(50) not null,
address char(100) not null, city char(30) not null)
Рис. 3.167. Состав таблицы Customers.
Создание таблицы производится с помощью SQL-команды CREATE TABLE, которая указывается в строке монитора.
Рис. 3.168. Окно монитора Mysql c командами создании базы books и создания в ней таблицы с именем Customers.
Обратите внимание, что перед созданием таблицы CREATE TABLE CUSTOMERS база данных должна быть открыта командой USE BOOKS;.
Если посмотреть в PhpMyAdmin созданную базу и таблицу, то увидим
следующее описание (рис. 3.169 и рис. 3.170).
193
Рис. 3.169. Часть окна PhpMyAdmin c базой данных books.
Рис. 3.170. Часть окна PhpMyAdmin c описанием таблицы Customers базы данных books.
Посмотреть список таблиц в базе можно командой SHOW TABLES если вурнуться в окно монитора MySQL.
194
Рис. 3.171. Окно монитора с списком таблиц базы BOOKS.
.
Если возникает необходимость удалить созданную таблицу через монитор системы, то после приглашения mysql> необходимо указать команду DROUP TABLE CUSTOMERS; (удалить таблицу с именем
CUSTOMERS).
Рис. 3.172. Окно монитора MySQL с командой удаления таблицы
CUSTOMERS из базы BOOKS.
195
Задание 2. Создание таблиц базы данных через командную строку.
Существует более удобный способ создания баз данных и таблиц ее составляющих, если их описание вынесено в отдельный файл (Lab13_00.sql) с расширением *.SQL (рис. 3.174).
Пусть в базе данных BOOKS (см. задание 1, тема 12) решено хранить следующие таблицы. Т.е. схема базы представлена в виде нормализованных
таблиц (рис. 3.171 12.12). |
|
|
Customers (CustomerId, Name, Address, City) |
- Клиент |
|
Оrders (ОrderId, CustomerId, Аmount, Date) |
- |
Заказ |
Books (ISBN, Author, Title, Price) |
- |
Книга |
Оrder_items (ОrderId, ISBN, Quantity ) |
- |
Покупка |
Рис. 3.171. Схема базы данных books.
Ниже на рис. 3.174 12. 15 приведен код Lab13_00.sql (наберите его в любом редакторе или скопируйте его из этого файла) создания таблиц. Учтите, что база данных books в нашем примере уже должна быть создана, но в ней не должно быть таблиц и она должна быть открыта.
База данных должна быть открыта командой USE BOOKS:
Рис. 3.172. Окно монитора с использованием команды открытия базы данных с именем books.
Рис. 3.173 12.14. Окно PhpMyAdmin после создания базы books.
Выполните следующие действия:
1.Укажите CMD команду в командной строке (рис. 3.176 12.17).
2.В полученном Dos окне введите имя командника Hmysql.bat (рис. 12.19).
3.Используя команду Exit завершите работу в Dos окне CMD.exe.
Листинг SQL-кода создания таблиц базы, указанных в файле Lab13_00.sql.
196
create table customers
( customerid int unsigned not null auto_increment primary key, name char(50) not null,
address char(100) not null, city char(30) not null
);
create table orders
( orderid int unsigned not null auto_increment primary key, customerid int unsigned not null,
amount float(6,2), date date not null
);
create table books
( isbn char(13) not null primary key, author char(50),
title char(100), price float(4,2)
);
create table order_items
( orderid int unsigned not null, isbn char(13) not null, quantity tinyint unsigned, primary key (orderid, isbn)
);
Рис. 3.174. Листинг Lab13_00.sql создания схемы базы данных books.
Обратите внимание на расширение (.SQL) в имени программы Lab13_00.sql, использованное в данной лабораторной работе.
Листинг командного файла Hmysql.bat.
CLS
rem Hmysql.bat Запуск с любого места диска c:\Webservers\usr\local\mysql5\bin\mysql -h localhost -u root -D books -p -- character-sets-dir="c:\Webservers\usr\local\mysql5\share\charsets" < lab13_00.sql
Рис. 3.175. Состав BAT файла для работы с командной строки Hmysql.bat.
Символ < перед именем файла сценария lab13_00.sql для построения таблиц базы данных Books на рис. 3.175 обозначает операцию перенаправления для операционной системы. Монитор MySQL запустится из адреса:
c:\Webservers\usr\local\mysql5\bin\mysql.exe.
197
В качестве параметров запуска ему будет передана строка:
-h localhost -u root -D books –p.
Ключ –h используется для указания хоста, к которому надо подключиться (в нашем случае сервер Mysql находится на текущей машине).
Ключ –u указывает на имя пользователя, который подключается к серверу (в нашем случае сервер установлен на вашем собственном компьютере – поэтому имя его root, что обозначает привилигированного пользователя). Если Mysql используется на компьютере, администратором которого является кто-либо другой, применяйте имя пользователя выданное Вам администратором.
Ключ -D указвыает что будет проводится работа с базой данных books. Ключ –p сообщает серверу о том, что Вы хотите соедениться с ним с использование пароля.
Строка character-sets-
dir="c:\Webservers\usr\local\mysql5\share\charsets"
необходима из-за того тем, что используется Денвер и путь к MySQL не указан в пути поиска машины.
Если Вы будете использовать командный файл Hmysql.bat. то прежде чем будут созданы таблицы базы данных (указанные в листинге 3.174) Вам необходимо ответить на вопрос следующего вида:
(см. рис. 3.179).
Рис. 3.176. Вызов командного процессора CMD.exe из командной строки файлового менеджера Total Commander.
Подтверждение команды на рис. 3.176 приведет к следующему
Dos окну (рис. 3.177):
198
Рис. 3.177. Результат использования команды CMD.
Обратите внимание, что запуск CMD произведен из папки в которой находится командный файл HMYSQL.bat (рис. 3.175). Если в Dos приглашении указать имя этого файла (рис. 3.178), то его исполнение (Enter) приведет к созданию таблиц, указанных в сценарии файла lab13_00.sql (рис. 3.174).
Рис. 3.178. Уназание файла HMySQL.bat в Dos приглашении.
Если база данных с именем books открыта, то нажатие Enter в окне рис. 3.178 приведет к следующему окну Cmd.exe.
Рис. 3.179. Использование команды CMD и файла HMYSQL.bat в командной строке.
Правильное указание пароля приведет к следующему приглашению для ввода команды Dos (рис. 3.180) (создание таблиц будет выполнено).
Рис. 3.180. Окно Cmd.exe после исполнения сценария lab13_00.sql.
Выход из Cmd.exe возможен через команду
Рис. 3.181. Окно Cmd.exe после исполнения сценария lab13_00.sql.
Ниже (рис. 3.182) представлено окно PhpMyadmin с результатом работы HMYSQL.bat, т.е. с набором вновь созданных таблиц (рис. 3.183).
199
Рис. 3.182. Окно PhpMyadmin.
Если посмотреть (рис. 3.183) состав таблиц в базе данных, то Вы увидете именно перечень тех таблиц, которые указаны в файле lab13_00.sql
(рис. 3.174).
Интересна таблица
Используя пиктограмму |
( |
) проанализируйте ее состав (рис. |
3.184). |
|
|
Рис. 3.183. Окно PhpMyAdmin c составом таблиц базы BOOKS.
200
Рис. 3.184. Окно PhpMyAdmin c составом таблицы ORDER_ITEMS базы BOOKS.
Таблица ORDER_ITEMS является примером применения первичных ключей из других таблиц для формирования первичного ключа на двух атрибутах для самой таблицы ORDER_ITEMS. Таким способом поддерживается семантическое ограничение предметной области, что в покупке может быть несколько книг одного наименования.
Использованный тип tinyint unsigned для столбца Quantity указывает, что значения в нем могут принимать значения от 0 до 255.
Если перейти в монитор MySQL, то набор следующих команд (рис. 3.185) дает состав таблиц интересующей нас базы данных.
Рис. 3.185. Окно монитора с составом таблиц базы BOOKS. Отметьте что в базе BOOKS содержится одноименная таблица books. Команда DESCRIBE дает возможность увидеть подробную
информацию о конкретной таблице хранимой в базе.