PHP 4 на практике

       

Что такое SQL?


SQL обычно описывается как стандартный язык, используемый для взаимодействия с реляционными базами данных (см. ниже). Однако SQL не является языком программирования, как С, C++ или РНР. Скорее, это интерфейсное средство для выполнения различных операций с базами данных, предоставляющее в распоряжение пользователя стандартный набор команд. Возможности SQL не ограничиваются выборкой данных из базы. В SQL поддерживаются разнообразные возможности для взаимодействия с базой данных, в том числе:

  • определение структуры данных
  • — определение конструкций, используемых при хранении данных;

  • выборка данных
  • — загрузка данных из базы и их представление в формате, удобном для вывода;

  • обработка данных
  • — вставка, обновление и удаление информации;

  • контроль доступа
  • — возможность разрешения/запрета выборки, вставки, обновления и удаления данных на уровне отдельных пользователей;

  • контроль целостности данных
  • — сохранение структуры данных при возникновении таких проблем, как параллельные обновления или системные сбои.

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



    Рис. 11.1.

    Пример реляционной базы данных

    Как видно из рис. 11.1, каждая таблица состоит из строк (записей) и столбцов (полей). Каждому полю присваивается уникальное (в рамках данной таблицы) имя. Обратите внимание на связь между таблицами customer и orders, обозначенную стрелкой. В информацию о заказе включается короткий идентификатор клиента, что позволяет избежать избыточного хранения имени и прочих реквизитов клиента. В изображенной базе данных существует еще одна связь — между таблицами orders и products. Эта связь устанавливается по полю prod_id, в котором хранится идентификатор товара, заказанного данным клиентом (определяемого полем custjd). Наличие этих связей позволяет легко ссылаться на полные данные клиента и товара по простым идентификаторам. Правильно организованная база данных превращается в мощное средство организации и эффективного хранения данных с минимальной избыточностью. Запомните эту базу данных, я буду часто ссылаться на нее в дальнейших примерах.


    Итак, как же выполняются операции с реляционными базами данных? Для этого в SQL существует специальный набор общих команд — таких, как SELECT, INSERT, UPDATE и DELETE. Например, если вам потребуется получить адрес электронной почты клиента с идентификатором 2001cu (см. рис. 11.1), достаточно выполнить следующую команду SQL:

    SELECT cust_email FROM customers WHERE custjd = '2001cu'

    Все вполне логично, не правда ли? В обобщенном виде команда выглядит так:

    SELECT имя_поля FROM имя_таблицы [ WHERE условие ]

    Квадратные скобки означают, что завершающая часть команды является необязательной. Например, для получения адресов электронной почты всех клиентов из таблицы customers достаточно выполнить следующий запрос:

    SELECT cust_email FROM customers

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

    INSERT into products VALUES ('1009pr', 'Red Tomatoes', '1.43');

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

    DELETE FROM products WHERE prod_id = 1009r';

    Существует много разновидностей команд SQL, и полное их описание выходит за рамки этой книги. На эту тему вполне можно написать отдельную книгу! Я постарался сделать так, чтобы команды SQL, используемые в примерах, были относительно простыми, но достаточно реальными. В Web существует много учебной информации и ресурсов, посвященных SQL. Некоторые ссылки приведены в конце этого раздела.

    Записывать команды SQL символами верхнего регистра необязательно. Впрочем, я предпочитаю именно такую запись, поскольку она помогает различать компоненты запроса.

    Раз вы читаете эту книгу, вероятно, вас интересует вопрос, как же организуется работа с базами данных в среде Web? Как правило, сначала при помощи какого-

    либо интерфейсного языка (РНР, Java или Perl) создается соединение с базой данных, после чего программа обращается к базе с запросами, используя стандартный набор средств. Интерфейсный язык можно рассматривать как своего рода «клей», связывающий базу данных с Web. Я перехожу к своему любимому интерфейсному языку — РНР.

    Дополнительные ресурсы

    Ниже перечислены некоторые ресурсы Интернета, посвященные 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 (применительно к MySQL): http://www.devshed.com/Server_side/MySQL/Intro.



    • Содержание раздела