Простые SQL запросы - короткая справка и примеры. Примеры условий запроса Вопросы и задания


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

Запрос на изменение - это запрос, который за одну операцию вносит изменения в несколько записей. Существует четыре типа запросов на изменение: на удаление, на обновление, добавление записей, на создание таблицы.

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

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

Последовательность действий:

1. В режиме конструктора запросов войти в меню «Запрос» и выбрать команду «Удаление». Появится дополнительная строка «Удаление».

2. В строке «Условие отбора» указать, какие записи должны удаляться.

Ни рис 4.22 показано окно конструктора, в котором из состава студентов, получающих стипендию, будут исключены те, кто сдал экзамены на два. Обратите внимание, в той версии, которая реализована у нас, стипендии лишаются студенты, получившие двойки по трем экзаменам, если бы условия сдачи на два по английскому языку мы перенесли на одну строку ниже (строка «или»), а двойка по математике была бы записана еще ниже, то это означало бы поиск студентов, получивших двойку хотя бы по одному экзамену.

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

Допустим, первоначально студентам была назначена стипендия в размере 34 р. (рис. 4.23). Затем стипендию решили увеличить на 50р. Это можно сделать с помощью запроса на обновление. Чтобы создать запрос на обновление, в режиме Конструктора запросов следует выбрать команду меню «Запрос»/ «Обновление». В нижней части бланка появится новая строка «Обновление», в которую следует ввести выражение для расчета (рис. 4.24).

Рис. 4.22. Окно конструктора запроса на удаление

Рис. 4.23. Исходная таблица данных

Рис. 4.24. Окно конструктора запроса на обновление

При запуске запроса на выполнение появится сообщение, которое следует подтвердить. После того, как Вы подтвердите обновление записей, внешний вид экрана не изменится, все изменения происходят только с таблицей. Чтобы просмотреть их, откройте таблицу. Значения величин в поле «Стипендия» должны увеличиться.

Запросы на обновление позволяют внести изменения не только во все записи таблицы, но и в отдельные записи, которые находят по определенным условиям. В этом случае в строке «Условие отбора» вводят условия, определяющие какие записи выбрать для изменения, а в строке «Обновление» указывают, как их следует изменить.

После сдачи экзамена в деканате постановили лишить стипендии всех студентов, которые получили хотя бы одну двойку в сессии. Был составлен запрос и…. Следует обратить внимание на то, что напечатанный 0 в строке «Обновление» означает, что стипендия будет равна 0, но не во всех записях, а в тех, которые удовлетворяют приведенным в соседнем столбце условиям (рис. 4.25).

Рис. 4.25. Окно конструктора запроса на обновление

Условия объединяются словом ИЛИ (или ВТ=2, или Математика=2, или английский язык=2).

Добавим в таблицу новое поле «Общежитие», однако не будем его заполнять вручную, оставив пустым. Определим, кому требуется общежитие, считая, что, если студент проживает в Донецке, общежитие не требуется, а при проживании в других городах - требуется (рис. 4.26).

Запустим запрос на выполнение, щелкнув мышкой по кнопке, а затем откроем таблицу. В целях наглядности скрыты все столбцы, кроме столбца «Фамилия» и «Общежитие» (рис. 4.27).

Как видите, запрос на обновление очень удобен, позволяя автоматически изменять устаревшую информацию на новую, менять содержимое таблиц по определенным условиям.

Рис. 4.26. Окно конструктора запроса на обновление

Рис. 4.27. Результат выполнения запроса на обновление

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

Допустим, требуется создать две таблицы на основании уже существующей, но в первую таблицу перенести информацию о студентах, которым требуется общежитие, а во вторую - проживающих в Донецке. Такая операция выполняется с помощью запроса на создание таблицы (рис. 4.28).

Для этого:

~ перенести в запрос те поля, которые должны быть в таблице;

~ указать условия отбора;

~ войти в меню «Запрос» / «Создание таблицы», в появившемся окне ввести имя создаваемой таблицы, в нашем случае она называется «Иногородние»;

~ Запустить запрос на выполнение. Дать согласие на создание новой таблицы;

Таблица появится в списке существующих таблиц .


Рис. 4.28. Окно конструктора запроса на создание таблицы



Другие новости

Для поиска интересующей вас информации необходимо указать браузеру адрес Web-страницы, на которой она находится. Это самый быстрый и надежный вид поиска. Для быстрого доступа к ресурсу достаточно запустить браузер и набрать адрес страницы в строке адреса.

Адреса Web-страниц приводятся в специальных справочниках, печатных изданиях, звучат в эфире популярных радиостанций и с экранов телевизора.

Если вы не знаете адреса, то для поиска информации в сети Интернет существуют поисковые системы, которые содержат информацию о ресурсах Интернета.

Каждая поисковая система – это большая база ключевых слов, связанных с Web-страницами, на которых они встретились. Для поиска адреса сервера с интересующей вас информацией надо ввести в поле поисковой системы ключевое слово, несколько слов или фразу. Тем самым вы посылаете поисковой системе запрос. Результаты поиска выдаются в виде списка адресов Web-страниц, на которых встретились эти слова.

Как правило, поисковые системы состоят из трех частей: робота, индекса и программы обработки запроса.

Робот (Spider, Robot или Bot) - это программа, которая посещает веб-страницы и считывает (полностью или частично) их содержимое.

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

Индекс - это хранилище данных, в котором сосредоточены копии всех посещенных роботами страниц.

Индексы в каждой поисковой системе различаются по объему и способу организации хранимой информации. Базы данных ведущих поисковых машин хранят сведения о десятках миллионов документов, а объемы их индекса составляют сотни гигабайт. Индексы периодически обновляются и дополняются, поэтому результаты работы одной поисковой машины с одним и тем же запросом могут различаться, если поиск производился в разное время.

Программа обработки запроса - это программа, которая в соответствии с запросом пользователя «просматривает» индекс на предмет наличия нужной информации и возвращает ссылки на найденные документы.

Множество ссылок на выходе системы распределяется программой в порядке убывания от наибольшей степени соответствия ссылки запросу к наименьшей.

В России наиболее распространенными поисковыми системами являются:

    Рамблер (www.rambler.ru);

    Яндекс (www.yandex.ru);

    Мэйл (www.mail.ru).

За рубежом поисковых систем гораздо больше. Самыми популярными являются:

    Alta Vista (www.altavista.com);

    Fast Search (www.alltheweb.com);

    Google (www.google.com).

Яндекс является пожалуй наилучшей поисковой системой в российском Интернете. Эта база данных содержит около 200 000 серверов и до 30 миллионов документов, которые система просматривает в течение нескольких секунд. На примере этой системы покажем как осуществляется поиск информации.

Поиск информации задается введением ключевого слова в специальную рамку и нажатием кнопки «Найти», справа от рамки.

Результаты поиска появляются в течение нескольких секунд, причем ранжированные по значимости – наиболее важные документы размещаются в начале списка. При этом ранг найденного документа определяется тем, в каком месте документа находится ключевое слово (в заглавии документа важнее, чем в любом другом месте) и числом упоминаний ключевого слова (чем больше упоминаний, тем ранг выше).

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

Содержательную часть сайта можно косвенно оценить по краткому его описанию, размещаемому Поисковой системой под адресом Сайта. Некоторые недобросовестные авторы сайтов, для того, чтобы повысить вероятность появления своей Web-страницы на первых местах Поисковой системы, умышленно включают в документ бессмысленные повторы ключевого слова. Но как только поисковая система обнаруживает такой «замусоренный» документ, она автоматически исключает его из своей базы данных.

Даже ранжированный список документов, предлагаемый поисковой системой в ответ на ключевую фразу или слово, может оказаться практически необозримым. В связи с этим в Яндекс (как и других мощных Поисковых Машинах) предоставлена возможность в рамках первого списка, выбрать документы, которые точнее отражают цель поиска, то есть уточнить или улучшить результаты поиска. Например, на ключевое слово список из 34 899 Веб-страниц. После ввода в команду «Искать в найденном» уточняющего ключевого слова список сокращается до 750 страниц, а после ввода в эту команду еще одного уточняющего слова этот список сокращается до 130 Веб-страниц.

Ключевой запрос (key search; key words, ключевик, ключевая фраза, ключевое слово) — это запрос (слово, словосочетание или фраза), который пользователь поисковой системы вводит в строку поиска, стремясь найти информацию (товары),наиболее точно соответствующую этому запросу.

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

Виды ключевых запросов

Все ключевые запросы, которые входят в состав семантического ядра сайта или интернет-магазина, подразделяются на различные группы. В свою очередь эти группы делятся на:

Типы ключевых запросов по содержанию:

    Информационные ключевые запросы

    это запросы информативного характера, т.е. те запросы, вводя которые в поисковик пользователи рассчитывают найти информацию того или иного рода. Пример информационных запросов — «как выбрать телевизор», «результаты тестирования iPad-2», “новости Москвы” и т.д.

    Навигационные ключевые запросы

    это запросы,вводя в поисковую систему которые пользователи хотят найти ответ на вопросы типа “Как это найти?”, «Где это может быть?», “В каком магазине купить?” а так же, например, — «вакансии менеджера», «газонокосилка.ру», “погода”

    Транзакционные ключевые запросы

    этот тип запросов обычно задается поисковой системе в том случае, когда пользователь точно знает и хочет купить определенный товар, например: «купить газовый котел отопления», “купить телефон”

    Общие ключевые запросы

    все остальные ключевые запросы, которые невозможно отнести ни к одной из вышеперечисленных категорий, обычно это ключевые слова, состоящие из одного слова, например: «линолеум», «машина», «новинки»).

Виды ключевых запросов по частоте использования в месяц:

  1. Высокочастотные запросы — Это запросы, имеющие наибольшую частоту спроса у пользователей сети интернет, т.е. это такие запросы, которые вводятся в поисковую строку десятки или даже сотни тысяч раз в течение месяца. Как правило, это ключевые слова довольно общих понятий или, скажем, обобщающих. Например: «автомобиль», «кондиционеры», «купить телевизор».
  2. Среднечастотные ключевые запросы — более конкретизированные, содержащие обычно не менее трех слов ключевые фразы: «купить жк телевизор», «как продвинуть сайт», «тур в Испанию». Такие запросы делаются от нескольких тысяч до десятка тысяч раз в месяц.
  3. Низкочастотными запросами являются ключевые слова и фразы, довольно редко используемые пользователями Интернета: «купить жк телевизор самсунг», «лучший автомобильный телевизор». Количество таких запросов в месяц может составлять менее тысячи.

Степени конкуренции по ключевым запросам:

Высоко-конкурентные, средней конкуренции и низко-конкурентные. Определяется это тем, насколько весомые, информативные, качественные и большие сайты, интернет-магазины или блоги находятся на первой странице поисковой выдачи по этим запросам. Также конкуренция по определенному запросу зависит от активности владельцев этих самых сайтов, магазинов и блогов и от тех действий, которые они предпринимают для продвижения своих ресурсов.

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

Географическому распределению ключевых запросов:

По географическому признаку поисковые запросы можно разделить на «геозависимые» и «геонезависимые» запросы. Например: «купить киприч» или “стоматология москва”скорее будет привязан к определенной местности ввиду экономической целесообразности его приобретения или заказа определенной услуги пользователем. А вот для такого запроса, как «скачать видео», география абсолютно не имеет никакого значения.

Подбор ключевых слов для продвижения

Подбор ключевых слов для продвижения сайта или интернет-магазина - ответственный этап продвижения всего ресурса. Подбор ключевых слов (другими словами - составление семантического ядра) - это процесс составления списка ключевых слов и(или) фраз, которые раскрывают наиболее подробно содержание сайта или интернет-магазина.

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

Как правильно подобрать ключевые слова для интернет-магазина?

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

  • Выбирайте для вашего интернет-магазина ключевые запросы и фразы транзакционного типа - ведь вам наиболее интересны именно те посетители, которые уже готовы купить товар, продающийся в вашем магазине, и осуществляющие целенаправленный поиск в интернете именно этого товара
  • Старайтесь использовать ключевые слова, наиболее точно отражающие содержание страницы вашего интернет-магазина, для которой вы их подбираете. Не стоит использовать наиболее высокочастотные слова и ключевики - так как это приведет лишь к излишней трате бюджета при последующей раскрутке и не обязательно приведет к росту продаж. Эти слова обычно информационного типа и по ним на ваш сайт придет большое число посетителей, но, как показывает опыт, большого количества продаж не будет.
  • Используйте только одно - два ключевых запроса на продвигаемую страницу. Это позволит наиболее точно провести оптимизацию содержания страницы именно под эти запросы.

Язык запросов Direct Commander Query Language позволяет создавать сложные критерии для отбора объектов: накладывать различные условия на значения полей и комбинировать их с помощью логических операторов.

Запрос вводится в строке текстового фильтра внизу любой панели Коммандера. Запрос с использованием логических операторов начинается с символа = .

  • Составление запроса
  • Запросы из нескольких условий
  • Операторы языка запросов

Составление запроса

Простой запрос состоит из трех частей:

Поле Оператор Значение

Например, запрос заголовок ~ сухари покажет все объявления, у которых в столбце Заголовок содержится слово «сухари» .

Начните вводить запрос с символа = . При этом в строке ввода появляется значок Названия полей и операторы можно выбирать из всплывающих подсказок.

При вводе значения обратите внимание:

Если запрос составлен неправильно, значок в строке ввода меняется на и появляется сообщение об ошибке.

Запросы из нескольких условий

Для составления комбинированных запросов можно использовать операторы & (логическое И) и | (логическое ИЛИ).

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

Пример 1

Слова ~ спички | Слова ~ сахар

По этому запросу отбираются фразы, в которых есть ключевое слово «спички» или «сахар» .

Пример 2

Слова ~ спички | Слова ~ сахар & Ставка > 1

По этому запросу отбираются фразы, которые отвечают одновременно двум условиям:

    Имеют ставку на поиске больше 1.

Пример 3

Слова ~ спички | (Слова ~ сахар & Ставка > 1)

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

Операторы языка запросов

В зависимости от поля в DCQL применяются следующие типы операторов.

Оператор Значение Пример Результат
~ Содержит = геотаргетинг ~ австр
!~ Не содержит = геотаргетинг!~ австр
= Модерация!~ [Ожидает]
= Равно/совпадает = геотаргетинг = Австралия
= Номер =
!= Не равно/не совпадает = геотаргетинг!= Австралия
= Номер!=
> Больше = ctr > 0.5
< Меньше = ctr < 0.5
>= Больше либо равно = Ставка >= 1
<= Меньше либо равно = Ставка <= 1
&
|
Оператор Значение Пример Результат
~ Содержит = геотаргетинг ~ австр Отбираются группы объявлений, у которых в столбце Геотаргетинг указано «Австралия» или «Австрия»
= \"Имя изображения\" ~ Отбираются объявления, у которых в столбце Имя изображения указано имя, содержащее подстроку «black» или «white»
= Модерация ~ [Принято; Черновик] Отбираются объявления, у которых в столбце Модерация указано значение «Принято» или «Черновик»
!~ Не содержит = геотаргетинг!~ австр Отбираются группы объявлений, кроме тех, у которых указан геотаргетинг «Австралия» или «Австрия»
= заголовок!~ [спички сухари] Отбираются объявления, у которых значение в столбце Заголовок не содержит подстрок «спички» и «сухари»
= Модерация!~ [Ожидает] Отбираются объявления, у которых в столбце Модерация указано любое значение, кроме «Ожидает» .
= Равно/совпадает = геотаргетинг = Австралия Отбираются только те группы, у которых указан геотаргетинг «Австралия»
= Номер = Отбираются объявления с номерами 111111 и 222222.
!= Не равно/не совпадает = геотаргетинг!= Австралия Отбираются группы, кроме тех, у которых указан геотаргетинг «Австралия»
= Номер!= Отбираются объявления с номерами, отличными от 111111 и 222222.
> Больше = ctr > 0.5 Отбираются фразы с CTR больше 0,5
< Меньше = ctr < 0.5 Отбираются фразы с CTR меньше 0,5
>= Больше либо равно = Ставка >= 1 Отбираются фразы, у которых ставка на поиске больше либо равна 1
<= Меньше либо равно = Ставка <= 1 Отбираются фразы, у которых ставка на поиске меньше либо равна 1
& Логическое «И» в сложных запросах = номер ~ 123 & состояние = \"идут показы\" Отбираются объявления, которые в номере содержат цифры 123 И находятся в состоянии «Идут показы»
| Логическое «ИЛИ» в сложных запросах = название ~ спички | название ~ сахар Отбираются объявления, в названии которых содержится слово «спички» ИЛИ слово «сахар»

Внимание.

Операторы > , >= , < и <= можно использовать только для столбцов с числовыми значениями.

Запросы написаны без экранирующих кавычек, так как у MySQL , MS SQL и PostGree они разные.

SQL запрос: получение указанных (нужных) полей из таблицы

SELECT id, country_title, count_people FROM table_name

Получаем список записей: ВСЕ страны и их население. Название нужных полей указываются через запятую.

SELECT * FROM table_name

* обозначает все поля. То есть, будут показы АБСОЛЮТНО ВСЕ поля данных.

SQL запрос: вывод записей из таблицы исключая дубликаты

SELECT DISTINCT country_title FROM table_name

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

SQL запрос: вывод записей из таблицы по заданному условию

SELECT id, country_title, city_title FROM table_name WHERE count_people>100000000

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

SQL запрос: вывод записей из таблицы с упорядочиванием

SELECT id, city_title FROM table_name ORDER BY city_title

Получаем список записей: города в алфавитном порядке. В начале А, в конце Я.

SELECT id, city_title FROM table_name ORDER BY city_title DESC

Получаем список записей: города в обратном (DESC ) порядке. В начале Я, в конце А.

SQL запрос: подсчет количества записей

SELECT COUNT(*) FROM table_name

Получаем число (количество) записей в таблице. В данном случае НЕТ списка записей.

SQL запрос: вывод нужного диапазона записей

SELECT * FROM table_name LIMIT 2, 3

Получаем 2 (вторую) и 3 (третью) запись из таблицы. Запрос полезен при создании навигации на WEB страницах.

SQL запросы с условиями

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

SQL запрос: конструкция AND (И)

SELECT id, city_title FROM table_name WHERE country="Россия" AND oil=1

Получаем список записей: города из России И имеют доступ к нефти. Когда используется оператор AND , то должны совпадать оба условия.

SQL запрос: конструкция OR (ИЛИ)

SELECT id, city_title FROM table_name WHERE country="Россия" OR country="США"

Получаем список записей: все города из России ИЛИ США. Когда используется оператор OR , то должно совпадать ХОТЯ БЫ одно условие.

SQL запрос: конструкция AND NOT (И НЕ)

SELECT id, user_login FROM table_name WHERE country="Россия" AND NOT count_comments<7

Получаем список записей: все пользователи из России И сделавших НЕ МЕНЬШЕ 7 комментариев.

SQL запрос: конструкция IN (В)

SELECT id, user_login FROM table_name WHERE country IN ("Россия", "Болгария", "Китай")

Получаем список записей: все пользователи, которые проживают в (IN ) (России, или Болгарии, или Китая)

SQL запрос: конструкция NOT IN (НЕ В)

SELECT id, user_login FROM table_name WHERE country NOT IN ("Россия","Китай")

Получаем список записей: все пользователи, которые проживают не в (NOT IN ) (России или Китае).

SQL запрос: конструкция IS NULL (пустые или НЕ пустые значения)

SELECT id, user_login FROM table_name WHERE status IS NULL

Получаем список записей: все пользователи, где status не определен. NULL это отдельная тема и поэтому она проверяется отдельно.

SELECT id, user_login FROM table_name WHERE state IS NOT NULL

Получаем список записей: все пользователи, где status определен (НЕ НОЛЬ).

SQL запрос: конструкция LIKE

SELECT id, user_login FROM table_name WHERE surname LIKE "Иван%"

Получаем список записей: пользователи, у которых фамилия начинается с комбинации «Иван». Знак % означает ЛЮБОЕ количество ЛЮБЫХ символов. Чтобы найти знак % требуется использовать экранирование «Иван\%».

SQL запрос: конструкция BETWEEN

SELECT id, user_login FROM table_name WHERE salary BETWEEN 25000 AND 50000

Получаем список записей: пользователи, которые получает зарплату от 25000 до 50000 включительно.

Логических операторов ОЧЕНЬ много, поэтому детально изучите документацию по SQL серверу.

Сложные SQL запросы

SQL запрос: объединение нескольких запросов

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Получаем список записей: пользователи, которые зарегистрированы в системе, а также те пользователи, которые зарегистрированы на форуме отдельно. Оператором UNION можно объединить несколько запросов. UNION действует как SELECT DISTINCT, то есть отбрасывает повторяющиеся значения. Чтобы получить абсолютно все записи, нужно использовать оператор UNION ALL.

SQL запрос: подсчеты значений поля MAX, MIN, SUM, AVG, COUNT

Вывод одного, максимального значения счетчика в таблице:

SELECT MAX(counter) FROM table_name

Вывод одного, минимальный значения счетчика в таблице:

SELECT MIN(counter) FROM table_name

Вывод суммы всех значений счетчиков в таблице:

SELECT SUM(counter) FROM table_name

Вывод среднего значения счетчика в таблице:

SELECT AVG(counter) FROM table_name

Вывод количества счетчиков в таблице:

SELECT COUNT(counter) FROM table_name

Вывод количества счетчиков в цехе №1, в таблице:

SELECT COUNT(counter) FROM table_name WHERE office="Цех №1"

Это самые популярные команды. Рекомендуется, где это возможно, использовать для подсчета именно SQL запросы такого рода, так как ни одна среда программирования не сравнится в скорости обработки данных, чем сам SQL сервер при обработке своих же данных.

SQL запрос: группировка записей

SELECT continent, SUM(country_area) FROM country GROUP BY continent

Получаем список записей: с названием континента и с суммой площадей всех их стран. То есть, если есть справочник стран, где у каждой страны записана ее площадь, то с помощью конструкции GROUP BY можно узнать размер каждого континента (на основе группировки по континентам).

SQL запрос: использование нескольких таблиц через алиас (alias)

SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS с WHERE o.custno=c.custno AND c.city="Тюмень"

Получаем список записей: заказы от покупателей, которые проживают только в Тюмени.

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

SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno=o.custno)

Вложенные подзапросы

SELECT * FROM table_name WHERE salary=(SELECT MAX(salary) FROM employee)

Получаем одну запись: информацию о пользователе с максимальным окладом.

Внимание! Вложенные подзапросы являются одним из самых узких мест в SQL серверах. Совместно со своей гибкостью и мощностью, они также существенно увеличивают нагрузку на сервер. Что приводит к катастрофическому замедлению работы других пользователей. Очень часты случаи рекурсивных вызовов при вложенных запросах. Поэтому настоятельно рекомендую НЕ использовать вложенные запросы, а разбивать их на более мелкие. Либо использовать вышеописанную комбинацию LEFT JOIN. Помимо этого данного вида запросы являются повышенным очагом нарушения безопасности. Если решили использовать вложенные подзапросы, то проектировать их нужно очень внимательно и первоначальные запуски сделать на копиях баз (тестовые базы).

SQL запросы изменяющие данные

SQL запрос: INSERT

Инструкция INSERT позволяют вставлять записи в таблицу. Простыми словами, создать строчку с данными в таблице.

Вариант №1. Часто используется инструкция:

INSERT INTO table_name (id, user_login) VALUES (1, "ivanov"), (2, "petrov")

В таблицу «table_name » будет вставлено 2 (два) пользователя сразу.

Вариант №2. Удобнее использовать стиль:

INSERT table_name SET id=1, user_login="ivanov"; INSERT table_name SET id=2, user_login="petrov";

В этом есть свои преимущества и недостатки.

Основные недостатки:

  • Множество мелких SQL запросов выполняются чуть медленнее, чем один большой SQL запрос, но при этом другие запросы будут стоять в очереди на обслуживание. То есть, если большой SQL запрос будет выполняться 30 минут, то в все это время остальные запросы будут курить бамбук и ждать своей очереди.
  • Запрос получается массивнее, чем предыдущий вариант.

Основные преимущества:

  • Во время мелких SQL запросов, другие SQL запросы не блокируются.
  • Удобство в чтении.
  • Гибкость. В этом варианте, можно не соблюдать структуру, а добавлять только необходимые данные.
  • При формировании подобным образом архивов, можно легко скопировать одну строчку и запустить ее через командную строку (консоль), тем самым не восстанавливая АРХИВ целиком.
  • Стиль записи схож с инструкцией UPDATE, что легче запоминается.

SQL запрос: UPDATE

UPDATE table_name SET user_login="ivanov", user_surname="Иванов" WHERE id=1

В таблице «table_name » в записи с номером id=1, будет изменены значения полей user_login и user_surname на указанные значения.

SQL запрос: DELETE

DELETE FROM table_name WHERE id=3

В таблице table_name будет удалена запись с id номером 3.

  1. Все названия полей рекомендуются писать маленькими буквами и если надо, разделять их через принудительный пробел «_» для совместимости с разными языками программирования, таких как Delphi, Perl, Python и Ruby.
  2. SQL команды писать БОЛЬШИМИ буквами для удобочитаемости. Помните всегда, что после вас могут читать код и другие люди, а скорее всего вы сами через N количество времени.
  3. Называть поля с начала существительное, а потом действие. Например: city_status, user_login, user_name.
  4. Стараться избегать слов резервных в разных языках которые могут вызывать проблемы в языках SQL, PHP или Perl, типа (name, count, link). Например: link можно использовать в MS SQL, но в MySQL зарезервировано.

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