Как известно, с помощью базы данных можно проделать две операции: можно поместить туда данные и можно данные оттуда взять. И чаще всего инструментом решения этих задач является язык, известный как язык структурированных запросов (Structured Query Language, SQL).
Как любая реляционная СУБД, удовлетворяющая стандартам, MySQL "понимает" достаточно хорошо стандартный язык SQL, кроме того, он предлагает интересные дополнения к стандарту SQL. Для эффективного использования MySQL необходимо полностью овладеть языком SQL, который является вашим основным средством взаимодействия с сервером базы данных и играет очень важную роль в быстрой и эффективной выборке данных.
В процессе ознакомления с этой главой мы научимся пользоваться основными SQL-командами для создания баз данных и ввода информации в базу данных. Повествование будет сопровождаться соответствующими примерами. В случае если вы никогда не имели дела с базами данных или мысль об изучении других языков для вас невыносима, не волнуйтесь - язык SQL значительно проще других языков программирования и он довольно прост в изучении.

Краткая история языка SQL
Перед тем как углубиться в хитросплетения синтаксиса команд SQL, давайте разберемся с тем, как возник язык SQL.
Язык SQL "начал свою биографию" как язык SEQUEL1, или структурированный английский язык запросов, являвшийся компонентом исследовательского проекта компании IBM, известного под названием System/R. Проект System/R заключался в разработке прототипа первой реляционной СУБД и разрабатывался лабораторией IBM в Сан-Хосе в 1974 году, а язык SEQUEL являлся первым языком запросов, поддерживающим работу сразу нескольких таблиц и пользователей. В конце 1970-х годов язык SQL впервые вышел на сцену в качестве языка запросов, который использовался в реляционной СУБД Oracle. Затем очень скоро появилась реляционная СУБД Ingres, в которой также использовался SQL, чтобы в 1980-х годах стать стандартом "де-факто" для всей быстрорастущей индустрии реляционных СУБД. В 1989 году язык SQL стал стандартом ANSI, или SQL89, чтобы в 1992 году привело к появлению стандарта SQL92 или SQL2. Вот он собственно и стал стандартом для большинства используемых сейчас коммерческих СУБД (включая и MySQL).
Пренебрегая правилами
Несмотря на то, что большинство современных коммерческих СУБД поддерживают стандарт SQL92, многие из них поступают довольно вольно со спецификациями стандарта, дополняя стан­дартный SQL своими дополнениями и расширениями. (Примером такого вольного обращения со стандартом служит и MySQL.) Чаще всего эти расширения рассчитаны на улучшение рабочих ха­рактеристик или добавление функциональных возможностей в систему; но они могут вызвать оп­ределенные затруднения при миграции базы данных с одной СУБД на другую.
Полный перечень отклонений, допущенных в MySQL от спецификаций стандарта SQL, можно найти на Web-узлеhttp://www.mysql.com/doc/en/Compatibility.html.

Обзор языка SQL
Большая часть команд языка SQL напоминает разговорный английский язык, благодаря чему значительно упрощается его чтение, понимание и изучение. Команды формулируются в виде операторов, а каждый оператор начинается со слова, обозначающего определенное действие. Это иллюстрирует следующий пример.
Листинг 4.1.
CREATE DATABASE toys; USE toys;
SELECT id FROM toys WHERE target > 3;
DELETE FROM catalog WHERE productionStatus = "Revoked";
Очевидно, что очень просто понять функциональную нагрузку, которую несет каждый оператор. Эта простота является одной из причин популярности языка SQL.
Операторы SQL можно разделить на три основные категории, каждая из которых соответствует определенному аспекту управления базами данных.
■ Операторы, предназначенные для определения структуры базы данных. Эти
операторы определяют взаимосвязь между различными частями данных: определяют базы данных, таблицы, типы столбцов и индексов баз данных. В спецификациях SQL этот компонент называется языком определения данных (Data Definition Language, DDL); ему посвящена глава 8, "Обработка баз данных и таблиц".
■ Операторы, предназначенные для манипулирования данными. Эти операторы управляют добавлением и удалением записей, запросами и объединением таблиц, проверкой целостности данных. В спецификациях языка SQL этот компонент называется языком манипулирования данными (Data Manipulation Language, DML); ему посвящена глава 9, "Обработка данных".
■ Операторы, предназначенные для управления уровнем доступа к различным фрагментам данных. Эти операторы задают уровень доступа и привилегии безопасности для баз данных, таблиц и полей, которые можно задавать для пользователя или узла. В спецификации языка SQL этот компонент называется языком управления данными (Data Control Language, DML); ему посвящена глава 14, "Безопасность, управление доступом и привилегии".
Обычно оператор SQL завершается точкой с запятой, а пробелы, табуляции и символ "возврат каретки" SQL-процессором игнорируются. Следующие два оператора являются эквивалентными, даже несмотря на то, что первый занимает только одну строку, а второй растянут на несколько строк.
Основы SQL