Чат PHP-разработчиков
Запросы к базе данных MySQL

Выполнение запросов в MySQL

Бестолку хранить данные в таблицах, если у вас нет возможности просматривать их. Данные извлекают с помощью команды SELECT, которой передаются имя таблицы и условия для выборки строк.

Синтаксис команды SELECT:

Код доступен только после покупки курса MySQL с нуля.

Здесь столбцы – перечень имен полей, значения которых будут отбираться из таблиц. Необязательное ключевое слово WHERE задает ограничение на отбор строк, другими словами, ключевое слово WHERE ограничивает результаты, возвращаемые запросом. Например, строки могут быть отвергнуты запросом, если некоторое их поле не равно какому-либо значению, либо больше или меньше его. Ключевое слово ORDER BY позволяет определить требуемый порядок сортировки информации, возвращаемой запросом.

Самый простой запрос, позволяющий просмотреть содержимое таблицы, выглядит так:

Код доступен только после покупки курса MySQL с нуля.

В нашем случае он выведет структуру и данные таблицы. Иногда в запросе вместо символа звездочки удобнее перечислить отбираемые столбцы:

Код доступен только после покупки курса MySQL с нуля.

Ограничение результатов с помощью WHERE

Если вас интересует только какие-то определенные поля таблицы, вы можете ограничить набор возвращаемых данных с помощью ключевого слова WHERE, например:

Код доступен только после покупки курса MySQL с нуля.

Условные выражения должны следовать за ключевым словом WHERE. C помощью логических операторов AND и OR в конструкции WHERE можно определить сразу несколько условий. Порядок исполнения логических операторов изменяется с помощью круглых скобок ().

Определение порядка сортировки

Как уже говорилось, изменить порядок сортировки результирующего набора данных позволяет ключевое слово ORDER BY. По умолчанию ORDER BY задает сортировку в порядке возрастания, поэтому для сортировки пользователей в алфавитном порядке можно просто указать ORDER BY name. Чтобы назначить противоположный порядок сортировки, следует добавить ключевое слово DESC после имени поля name. Например, получить список пользователей, отсортированный в алфавитном порядке по убыванию, можно следующим запросом:

Код доступен только после покупки курса MySQL с нуля.

Соединение таблиц

Инструкция SELECT позволяет выполнять запросы сразу к нескольким таблицам. В примере ниже создается таблица purchases (покупки), в которую добавляются несколько строк для примера. Затем формируется запрос для получения списка всех купленных товаров с указанием идентификатора покупателя:

Код доступен только после покупки курса MySQL с нуля.

В результате вы получите:
Запрос в две таблицы

Часть запроса users_data., product сообщает о необходимости выбрать все поля из таблицы users_data и единственное поле product из таблицы purchases. Часть связывает таблицы. Вы могли бы определить список отбираемых столбцов как (), тогда в результирующий набор попали бы все поля обеих таблиц.

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

Код доступен только после покупки курса MySQL с нуля.

Получим результат аналогичный предыдущему.

Конструкция JOIN ON похожа на инструкцию естественного соединения, но предоставляет возможность явно определить поля, по которым следует выполнять соединение, не полагаясь на автоматический выбор по их именам. Эта конструкция имеет следующий синтаксис:

Код доступен только после покупки курса MySQL с нуля.

Псевдонимы

Перечисляя таблицы в запросе, используйте псевдонимы (aliases). Чтобы определить псевдоним таблицы, нужно после ее полного имени поставить ключевое слово AS и затем указать псевдоним. Например, присвоим в запросе таблице users_data псевдоним "u", а таблице purchases псевдоним "p":

Код доступен только после покупки курса MySQL с нуля.

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

Модификация данных в базе данных

Если вы допустили ошибку при вводе данных, например указали неверное имя пользователя, ошибку можно исправить с помощью команды UPDATE. Для внесения изменений в таблицы есть много причин, например изменение пароля пользователя. В команде UPDATE используется то же ключевое слово WHERE, что и в инструкции SELECT, но в ней присутствует команда SET, с помощью которой определяется новое значение столбца. Если вы забудете включить ключевое слово WHERE в команду UPDATE, она изменит все записи в таблице.

Например, обновим таблицу user_data:

Код доступен только после покупки курса MySQL с нуля.

Данный запрос изменит значение поля year для всех пользователей с именем 'Александр' в таблице users_data, установив его равным значению '1980'. Этот прием позволяет исправлять ошибочные данные и вносить изменения.

Удаление данных из базы

Команда DELETE удаляет строки или записи из таблицы. В команде DELETE используется то же ключевое слово WHERE, что и в инструкции UPDATE: удаляются все строки, соответствующие условию. В случае отсутствия ключевого слова WHERE будут удалены все записи в таблице.

Прежде чем воспользоваться командой DELETE, не забудьте создать резервные копии своих данных, в противном случае вы рискуете потерять все данные, нажив кучу неприятностей. В следующем примере из базы данных будет удален пользователь с id = 2:

Код доступен только после покупки курса MySQL с нуля.

Функции поиска

Как вы заметили в предыдущих примерах, MySQL обладает возможностью отыскивать конкретные данные. Однако мы пока еще не рассматривали синтаксис поиска. В MySQL роль шаблонного символа исполняет символ (%), используемый совместно с ключевым словом LIKE. То есть этим символом можно буквально представить все, что угодно. Это напоминает поиск файлов в проводнике Windows по строке *.doc – будут найдены все файлы документов, независимо от имен. По умолчанию поиск выполняется без учета регистра букв.

Например, выполнить общий поиск можно с помощью следующего синтаксиса:

Код доступен только после покупки курса MySQL с нуля.

Результат поиска

Этот запрос нашел все записи, у которых в значении поля name есть символ (р). Заметим, что здесь мы использовали два символа (%), окружив ими символ (р) – (%р%). Это означает, что до и после искомого символа может быть что угодно. Если хотите, можете использовать только один шаблонный символ – жесткого правила на этот счет нет.

Символ (%), помещенный в любое место строки в инструкции LIKE, означает, что на этом месте в строке может быть что угодно. Еще один шаблонный символ – символ подчеркивания (_). Он соответствует любому единственному символу. С использованием этого шаблонного символа можно выполнить такой поиск:

Код доступен только после покупки курса MySQL с нуля.

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

К настоящему моменту получены все необходимые начальные сведения о командах MySQL. В следующей статье мы рассмотрим основные принципы оптимизации проектирования баз данных, способы резервного копирования и расширенные возможности языка SQL.

Читайте также
Комментарии (0)
Популярное за сутки
Сейчас читают
Логические задачи с собеседований