Лек_2_MySQL.pptx
- Количество слайдов: 18
БАЗЫ ДАННЫХ Средства эффективного хранения и выборки больших объемов информации внесли огромный вклад в успешное развитие Интернета. Обычно для хранения информации используются базы данных. Работа сайтов в значительной степени зависит от надежности баз данных, хранящих громадные объемы информации. Конечно, поддержка баз данных ориентирована не только на интересы гигантских корпораций — в распоряжении web-программистов имеется несколько мощных реализаций баз данных, распространяемых по относительно низкой цене (а то и бесплатно). Правильная организация базы данных обеспечивает более быстрые и гибкие возможности выборки данных. Она существенно упрощает реализацию средств поиска и сортировки, а проблемы прав доступа к информации решаются при помощи средств контроля за привилегиями, присутствующими во многих системах управления базами данных (СУБД). Кроме того, упрощаются процессы репликации и архивации данных.
ЧТО ТАКОЕ SQL? Прежде чем переходить к обсуждению My. SQL, я хочу сказать несколько слов об SQL — самом распространенном языке для работы с базами данных. Язык SQL заложен в основу практически всех существующих СУБД. Чтобы перейти к рассмотрению примеров работы с базами данных, необходимо хотя бы в общих чертах представлять, как работает SQL обычно описывается как стандартный язык, используемый для взаимодействия с реляционными базами данных (см. ниже). Однако SQL не является языком программирования, как С, C++ или РНР. Скорее, это интерфейсное средство для выполнения различных операций с базами данных, предоставляющее в распоряжение пользователя стандартный набор команд. Возможности SQL не ограничиваются выборкой данных из базы. В SQL поддерживаются разнообразные возможности для взаимодействия с базой данных, в том числе:
ЧТО ТАКОЕ SQL? (ПРОДОЛЖ. ) - определение структуры данных — определение конструкций, используемых при хранении данных; - выборка данных — загрузка данных из базы и их представление в формате, удобном для вывода; - обработка данных — вставка, обновление и удаление информации; - контроль доступа — возможность разрешения/запрета выборки, вставки, обновления и удаления данных на уровне отдельных пользователей; - контроль целостности данных — сохранение структуры данных при возникновении таких проблем, как параллельные обновления или системные сбои.
ПОНЯТИЕ О РЕЛЯЦИОННЫХ БАЗАХ ДАННЫХ. Обратите внимание: в определении SQL было сказано, что этот язык предназначен для работы с реляционными базами данных. В реляционных СУБД данные организуются в виде набора взаимосвязанных таблиц. Связи между таблицами реализуются в виде ссылок на данные других таблиц. Таблицу можно представить себе как двухмерный массив, в котором расположение каждого элемента характеризуется определенными значениями строки и столбца. Пример реляционной базы данных изображен на рис. 1.
ПОНЯТИЕ О РЕЛЯЦИОННЫХ БАЗАХ ДАННЫХ. (ПРОДОЛЖ. ) Обратите внимание: в определении SQL было сказано, что этот язык предназначен для работы с реляционными базами данных. В реляционных СУБД данные организуются в виде набора взаимосвязанных таблиц. Связи между таблицами реализуются в виде ссылок на данные других таблиц. Таблицу можно представить себе как двухмерный массив, в котором расположение каждого элемента характеризуется определенными значениями строки и столбца. Пример реляционной базы данных изображен на рис. 1.
ПОНЯТИЕ О РЕЛЯЦИОННЫХ БАЗАХ ДАННЫХ. (ПРОДОЛЖ. )
ПОЯСНЕНИЯ К ТАБЛИЦАМ. Как видно из рис. 1, каждая таблица состоит из строк (записей) и столбцов (полей). Каждому полю присваивается уникальное (в рамках данной таблицы) имя. Обратите внимание на связь между таблицами customer и orders, обозначенную стрелкой. В информацию о заказе включается короткий идентификатор клиента, что позволяет избежать избыточного хранения имени и прочих реквизитов клиента. В изображенной базе данных существует еще одна связь — между таблицами orders и products. Эта связь устанавливается по полю prod_id, в котором хранится идентификатор товара, заказанного данным клиентом (определяемого полем custjd). Наличие этих связей позволяет легко ссылаться на полные данные клиента и товара по простым идентификаторам. Правильно организованная база данных превращается в мощное средство организации и эффективного хранения данных с минимальной избыточностью.
ЯЗЫК ЗАПРОСОВ SQL (ОПЕРАТОРЫ ЯЗЫКА) Итак, как же выполняются операции с реляционными базами данных? Для этого в SQL существует специальный набор общих команд — таких, как SELECT, INSERT, UPDATE и DELETE. Например, если вам потребуется получить адрес электронной почты клиента с идентификатором 2001 cu (см. рис. 11. 1), достаточно выполнить следующую команду SQL: SELECT cust_email FROM customers WHERE custjd = '2001 cu' Все вполне логично, не правда ли? В обобщенном виде команда выглядит так: SELECT имя_поля FROM имя_таблицы [ WHERE условие ] Квадратные скобки означают, что завершающая часть команды является необязательной. Например, для получения адресов электронной почты всех клиентов из таблицы customers достаточно выполнить следующий запрос: SELECT cust_email FROM customers
ЯЗЫК ЗАПРОСОВ SQL (ОПЕРАТОРЫ ЯЗЫКА) (ПРОДОЛЖ. ) Предположим, вы хотите включить в таблицу products новую запись. Простейшая команда вставки выглядит так: INSERT into products VALUES ('1009 pr', 'Red Tomatoes', '1. 43'); Если позднее эти данные потребуется удалить, воспользуйтесь следующей командой: DELETE FROM products WHERE prod_id = 1009 r'; Существует много разновидностей команд SQL, и полное их описание выходит за рамки лекции. На эту тему вполне можно написать отдельную книгу! Я постарался сделать так, чтобы команды SQL, используемые в примерах, были относительно простыми, но достаточно реальными. В Web существует много учебной информации и ресурсов, посвященных SQL. Записывать команды SQL символами верхнего регистра необязательно. Впрочем, я предпочитаю именно такую запись, поскольку она помогает различать компоненты запроса.
ЯЗЫК ЗАПРОСОВ SQL (ОПЕРАТОРЫ ЯЗЫКА) (ПРОДОЛЖ. ) … вероятно, вас интересует вопрос, как же организуется работа с базами данных в среде Web? Как правило, сначала при помощи какоголибо интерфейсного языка (РНР, Java или Perl) создается соединение с базой данных, после чего программа обращается к базе с запросами, используя стандартный набор средств. Интерфейсный язык можно рассматривать как своего рода «клей» , связывающий базу данных с Web.
ЯЗЫК ЗАПРОСОВ SQL (ОПЕРАТОРЫ ЯЗЫКА) (ПРОДОЛЖ. ) Дополнительные ресурсы Ниже перечислены некоторые ресурсы Интернета, посвященные SQL. Они пригодятся как новичкам, так и опытным программистам. Учебники по SQL: http: //perl. about. com/compute/perl/cs/beginningsql/index. htm. SQLCourse. com (с примером базы данных): http: //www. sqlcourse. com. SQL для вундеркиндов Web: http: //www. arsdigita. com/books/sql. Введение в SQL (применительно к My. SQL): http: //www. devshed. com/Server_side/My. SQL/Intro.
MYSQL My. SQL (http: //www. mysql. com) — надежная СУБД на базе SQL, разработанная и сопровождаемая фирмой Т. с. Х Data. Konsult. AB (Стокгольм, Швеция). Начиная с 1995 года, My. SQL стала одной из самых распространенных СУБД в мире, что отчасти обусловлено ее скоростью, надежностью и гибкой лицензионной политикой (см. ниже). Благодаря хорошим характеристикам и обширному набору стандартных интерфейсных функций, очень простых в использовании, My. SQL стала самым популярным средством для работы с базами данных в РНР. My. SQL распространяется на условиях общей лицензии GNU (GPL, GNU Public License). Полное описание текущей лицензионной политики My. SQL приведено на сайте My. SQL (http: //www. mysql. com).
MYSQL Установка Одна из причин популярности My. SQL среди пользователей РНР заключается в том, что поддержка этого сервера автоматически включается в поставку РНР. Таким образом, вам остается лишь проследить за правильной установкой пакета My. SQL СУБД My. SQL совместима практически с любой серьезной операционной системой, включая Free. BSD, Solaris, UNIX, Linux и различные верии Windows. Хотя лицензионная политика My. SQL отличается большей гибкостью в сравнении с другими серверами баз данных.
MYSQL Настройка My. SQL После успешной установки сервер My. SQL необходимо настроить. Процесс настройки в основном состоит из создания новых баз данных и редактирования таблиц привилегий My. SQL. Таблицы привилегий управляют доступом к базам данных My. SQL. Правильная настройка таблиц играет чрезвычайно важную роль в безопасности ваших баз данных, поэтому перед запуском сайта в рабочем режиме необходимо полностью освоить систему привилегий. На первый взгляд, таблицы привилегий My. SQL выглядят устрашающе, но если в них как следует разобраться, дальнейшее сопровождение становится очень простой задачей. Полное описание таблиц привилегий выходит за рамки этой книги. Впрочем, в Web существует немало ресурсов, предназначенных для помощи начинающим пользователям My. SQL. За дополнительной информацией обращайтесь на сайт My. SQL (http: //www. mysql. com). После успешной установки и настройки пакета My. SQL можно начинать эксперименты с базами данных в среде Web!
MYSQL Стандартные функции РНР для работы с My. SQL Итак, вы успешно создали и протестировали все необходимые разрешения; все готово для работы с сервером My. SQL. Общая последовательность действий при взаимодействии с сервером My. SQL выглядит так: 1. Установить соединение с сервером My. SQL. Если попытка завершается неудачей, вывести соответствующее сообщение и завершить процесс. 2. Выбрать базу данных сервера My. SQL. Если попытка выбора завершается неудачей, вывести соответствующее сообщение и завершить процесс. Допускается одновременное открытие нескольких баз данных для обработки запросов. 3. Обработать запросы к выбранной базе (или базам). 4. После завершения обработки запросов закрыть соединение с сервером баз данных.
MYSQL Итак, начнем с самого начала — то есть с подключения к серверу My. SQL. 1. mysql_connect() Функция mysql_connect( ) устанавливает связь с сервером My. SQL После успешного подключения к My. SQL можно переходить к выбору баз данных, обслуживаемых этим сервером. Синтаксис функции mysql_connect( ): 2. mysql_select_db( ) После успешного соединения с My. SQL необходимо выбрать базу данных, находящуюся на сервере. Для этого используется функция mysql_select_db( ). Синтаксис функции mysql_select_db( ): int mysql_select_db (string имя_базы_данных [, int идентификатор_соединения]) Параметр имя_базы_данных определяет выбираемую базу данных, идентификатор которой возвращается функцией mysql_select_db( ). Обратите внимание: параметр идентификатор_соединения необязателен лишь при одном открытом соединении ссервером My. SQL. При наличии нескольких открытых соединений этот параметр должен указываться.
MYSQL Если в программе выбирается только одна база данных, сохранять ее идентификатор не обязательно. Однако при выборе нескольких баз данных возвращаемые идентификаторы сохраняются, чтобы вы могли сослаться на нужную базу при обработке запроса. Если идентификатор не указан, используется последняя выбранная база данных. 3. mysql_close( ) После завершения работы с сервером My. SQL соединение необходимо закрыть. Функция mysql_close( ) закрывает соединение, определяемое необязательным параметром. Если параметр не задан, функция mysql_close( ) закрывает последнее открытое соединение. Синтаксис функции mysql_close( ): int mysql_close ([int идентификатор_соединения])
MYSQL mysql_query( ) Функция mysql_query( ) обеспечивает интерфейс для обращения с запросами к Базам данных. Синтаксис функции mysql_query( ): int mysql_query (string запрос [, int идентификатор_соединения]) Параметр запрос содержит текст запроса на языке SQL. Запрос передается либо соединению, определяемому необязательным параметром идентификатор_соедине-ния, либо, при отсутствии параметра, последнему открытому соединению. Неопытные программисты часто ошибочно думают, что функция mysql_query( ) результаты обработки запроса. Это не так — в зависимости от типа запроса вызов mysql_query( ) может приводить к разным последствиям. При успешном выполнении команды SQL SELECT возвращается идентификатор результата, который впоследствии передается функции mysql_result( ) для последующего форматирования и отображения результатов запроса. Если обработка запроса завершилась неудачей, функция возвращает FALSE. Функция mysql_result( ) описана в одном из следующих разделов. Количество записей, участвующих в запросе, определяется при помощи функции mysql_num_rows( ). Эта функция также описана далее.
Лек_2_MySQL.pptx