Какая инструкция языка sql используется для создания запроса на выборку

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

Синтаксис оператора SELECT использует следующие основные предложения:

SELECT <список столбцов>
FROM <список таблиц>
[WHERE <условие выбора строк>]
[GROUP BY <условие группировки>]
[HAVING <условие выбора групп>]
[ORDER BY <условие сортировки>]

Кратко пояснить смысл предложений оператора SELECT можно следующим образом:

  • SELECT — выбрать данные из указанных столбцов и (если необходимо) выполнить перед выводом их преобразование в соответствии с указанными выражениями и (или) функциями
  • FROM — из перечисленных таблиц, в которых расположены эти столбцы
  • WHERE — где строки из указанных таблиц должны удовлетворять указанному перечню условий отбора строк
  • GROUP BY — группируя по указанному перечню столбцов с тем, чтобы получить для каждой группы единственное значение
  • HAVING — имея в результате лишь те группы, которые удовлетворяют указанному перечню условий отбора групп
  • ORDER BY — сортируя по указанному перечню столбцов

Как видно из синтаксиса рассматриваемого оператора, обязательными являются только два первых предложения: SELECT и FROM.

Рассмотрим каждое предложение оператора SELECT.

Спонсор поста

База данных для примеров

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

Постановка задачи: пусть требуется разработать БД для предметной области «Поставка деталей»!

Требуется хранить следующую информацию:

  • О поставщиках (P) pnum, pname
  • О деталях (D) pnum, dname, dprice
  • О поставках (PD) volume

Значения таблицы P

pnum pname
1 Иванов
2 Петров
3 Сидоров
4 Кузнецов

Значения таблицы D

pnum dname dprice
1 Болт 10
2 Гайка 20
3 Винт 30

Значения таблицы PD

pnum dnum volume
1 1 100
1 2 100
1 3 300
2 1 150
1 2 250
3 1 1000

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

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

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

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

Предложение FROM

В предложении FROM перечисляются имена таблиц, которые содержат столбцы, указанные после слова SELECT.

Пример 1.
Вывести список наименований деталей из таблицы D (“Детали”).

SELECT dname
FROM D

Пример 2.
Получить всю информацию из таблицы D (“Детали”).

Получить результат можно двумя способами:

  • Явным указанием всех столбцов таблицы.

    SELECT dnum, dname, dprice
    FROM D
    
  • Полный список столбцов таблицы заменяет символ *.

    SELECT *
    FROM D
    

В результате и первого и второго запроса получаем новую таблицу, представляющую собой полную копию таблицы D (“Детали”).

Можно осуществить выбор отдельных столбцов и их перестановку.

Пример 3.
Получить информацию о наименовании и номере поставщика.

SELECT pname, pnum
FROM P

Пример 4.
Определить номера поставщиков, которые поставляют детали в настоящее время (то есть номера тех поставщиков, которые присутствуют в таблице PD (“Поставки”)).

SELECT pnum
FROM PD

Результат:

pnum
1
1
1
2
2
3

Дополнительно о SELECT

Теперь, когда мы научились делать простые запросы с SELECT и FROM, можно ненадолго снова вернуться к SELECT.

Агрегатные функции

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

Агрегатная функция записывается в следующем виде: <имя функции>(<имя столбца>)

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

  • SUM ‑ вычисляет сумму множества значений указанного столбца;
  • COUNT ‑ вычисляет количество значений указанного столбца;
  • MIN / MAX ‑ определяет минимальное/максимальное значение в указанном столбце;
  • AVG ‑ вычисляет среднее арифметическое значение множества значений столбца;
  • FIRST / LAST ‑ определяет первое/последнее значение в указанном столбце.

Пример 5.
Определить общий объем поставляемых деталей.

SELECT SUM(volume)
FROM PD
Expr1000
2000

Вычисляемые столбцы

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

При вычислении результатов любой агрегатной функции СУБД сначала исключает все NULL-значения, после чего требуемая операция применяется к оставшимся значениям.

Для функции COUNT возможен особый вариант использования — COUNT(*). Его назначение состоит в подсчете всех строк в результирующей таблице, включая NULL-значения.

Следует запомнить, что агрегатные функции нельзя вкладывать друг в друга. Такая конструкция работать не будет: MAX(SUM(VOLUME))

Переименование столбца

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

Например, присвоить новое имя вычисляемому столбцу в предыдущем примере позволит выполнение следующего запроса.

SELECT SUM(volume) AS SUM
FROM PD
Sum
2000

Пример 6.
Определить количество поставщиков, которые поставляют детали в настоящее время.

SELECT COUNT(pnum) AS COUNT
FROM PD
Count
6

Несмотря на то, что реальное число поставщиков деталей в таблице PD равно 3, СУБД возвращает число 6. Такой результат объясняется тем, что СУБД подсчитывает все строки в таблице PD, не обращая внимание на то, что в строках есть одинаковые значения.

Операция DISTINCT

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

SELECT COUNT(DISTINCT pnum) AS COUNT
FROM PD
Count
3

DISTINCT можно задать только один раз для одного предложения SELECT.

Противоположностью DISTINCT является операция ALL. Она имеет противоположное действие «показать все строки таблицы» и предполагается по умолчанию.

Операция TOP

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

Для этого используется операция TOP, которая записывается в предложении SELECT следующим образом: SELECT TOP N [PERCENT] <список столбцов>

Пример 7.
Определить номера первых двух деталей таблицы D.

SELECT TOP 2 dnum
FROM D

Стандарт SQL требует, чтобы при сортировке NULL-значения трактовались либо как превосходящие, либо как уступающие по сравнению со всеми остальными значениями. Так как конкретный вариант стандартом не оговаривается, то в зависимости от используемой СУБД при сортировке NULL-значения следуют до или после остальных значений. В MS SQL Server NULL-значения считаются уступающими по сравнению с остальными значениями.

Предложение WHERE

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

Типы условий выбора:

  • Сравнение значений атрибутов со скалярными выражениями, другими атрибутами или результатами вычисления выражений.
  • Проверка значения на принадлежность множеству.
  • Проверка значения на принадлежность диапазону.
  • Проверка строкового значения на соответствие шаблону.
  • Проверка на наличие null-значения.

Сравнение

В языке SQL используются традиционные операции сравнения =,<>,<,<=,>,>=.

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

Пример 8.
Определить номера деталей, поставляемых поставщиком с номером 2.

SELECT dnum
FROM PD
WHERE pnum = 2

Пример 9.
Получить информацию о поставщиках Иванов и Петров.

SELECT *
FROM P
WHERE pname='Иванов' OR pname='Петров'

Строковые значения атрибутов заключаются в апострофы.

Проверка на принадлежность множеству

Операция IN проверяет, принадлежит ли значение атрибута заданному множеству.

Пример 10.
Получить информацию о поставщиках ‘Иванов’ и ‘Петров’.

SELECT *
FROM P
WHERE pname IN ('Иванов','Петров')

Пример 11.
Получить информацию о деталях с номерами 1 и 2.

SELECT *
FROM D
WHERE dnum IN (1, 2)

Проверка на принадлежность диапазону

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

Пример 12.
Определить номера деталей, с ценой от 10 до 20 рублей.

SELECT dnum
FROM D
WHERE dprice BETWEEN 10 AND 20

Пример 13.
Вывести наименования поставщиков, начинающихся с букв от ‘К’ по ‘П’.

SELECT pname
FROM P
WHERE pname BETWEEN 'К' AND 'Р'

Сравнение символов

Буква Р в условии запроса объясняется тем, что строки сравниваются посимвольно. Для каждого символа при этом определяется код. Для нашего случая справедливо условие: П < Петров < Р

Проверка строкового значения на соответствие шаблону

Операция LIKE используется для поиска подстрок. Значения столбца, указываемого перед служебным словом LIKE сравниваются с задаваемым после него шаблоном. Форматы шаблонов различаются в конкретных СУБД.

Для СУБД MS SQL Server:

  • Символ % заменяет любое количество любых символов.
  • Символ _ заменяет один любой символ.
  • [<множество символов>] ‑ вместо символа строки может быть подставлен один любой символ из множества возможных, указанных в ограничителях.
  • [^<множество символов>] ‑ вместо символа строки может быть подставлен любой из символов кроме символов из множества, указанного в ограничителях.

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

Пример 14.
Вывести фамилии поставщиков, начинающихся с буквы И.

SELECT pname
FROM P
WHERE pname LIKE 'И%'

Пример 15.
Вывести фамилии поставщиков, начинающихся с букв от К по П.

SELECT pname
FROM P
WHERE dname LIKE '[К-П]%'

Проверка на наличие null-значения

Операции IS NULL и IS NOT NULL используются для сравнения значения атрибута со значением NULL.

Пример 16.
Определить наименования деталей, для которых не указана цена.

SELECT dname
FROM D
WHERE dprice IS NULL

Пример 17.
Определить номера поставщиков, для которых указано наименование.

SELECT pnum
FROM P
WHERE pname IS NOT NULL

Предложение GROUP BY

Использование GROUP BY позволяет разбивать таблицу на логические группы и применять агрегатные функции к каждой из этих групп. В результате получим единственное значение для каждой группы.

Обычно предложение GROUP BY применяют, если формулировка задачи содержит фразу «для каждого…», «каждому..» и т.п.

Пример 18.
Определить суммарный объем деталей, поставляемых каждым поставщиком.

SELECT pnum, SUM(VOLUME) AS SUM
FROM PD
GROUP BY pnum
pnum sum
1 600
2 400
3 1000

Выполнение запроса можно описать следующим образом: СУБД разбивает таблицу PD на три группы, в каждую из групп помещаются строки с одинаковым значением номера поставщика. Затем к каждой из полученных групп применяется агрегатная функция SUM, что дает единственное итоговое значение для каждой группы.

Рассмотрим два похожих примера. В примере 19 определяется минимальный объем поставки каждого поставщика. В примере 20 определяется объем минимальной поставки среди всех поставщиков.

Пример 19:

SELECT pnum, MIN(VOLUME) AS MIN
FROM PD
GROUP BY pnum

Пример 20:

SELECT MIN(VOLUME) AS MIN
FROM P

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

pnum min max
1 100 100
2 150
3 1000

Следует обратить внимание, что в первом примере мы можем вывести номера поставщиков, соответствующие объемам поставок, а во втором примере – не можем.

Все имена столбцов, перечисленные после ключевого слова SELECT должны присутствовать и в предложении GROUP BY, за исключением случая, когда имя столбца является аргументом агрегатной функции.

Однако в предложении GROUP BY могут быть указаны имена столбцов, не перечисленные в списке вывода после ключевого слова SELECT.

Если предложение GROUP BY расположено после предложения WHERE, то группы создаются из строк, выбранных после применения WHERE.

Пример 21.
Для каждой из деталей с номерами 1 и 2 определить количество поставщиков, которые их поставляют, а также суммарный объем поставок деталей.

SELECT dnum, COUNT(pnum) AS COUNT, SUM(volume) AS SUM
FROM PD
WHERE dnum=1 OR dnum=2
GROUP BY dnum

Результат запроса:

dnum COUNT SUM
1 3 1250
2 2 450

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

Предложение HAVING

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

Выполнение предложения HAVING сходно с выполнением предложения WHERE. Но предложение WHERE исключает строки до того, как выполняется группировка, а предложение HAVING — после. Поэтому предложение HAVING может содержать агрегатные функции, а предложение WHERE — не может.

Пример 22.
Определить номера поставщиков, поставляющих в сумме более 500 деталей.

SELECT pnum, SUM(volume) AS SUM
FROM PD
GROUP BY pnum
HAVING SUM(volume) > 500
pnum SUM
1 600
3 1000

Пример 23.
Определить номера поставщиков, которые поставляют только одну деталь.

SELECT pnum, COUNT(dnum) AS COUNT
FROM PD
GROUP BY pnum
HAVING COUNT(dnum) = 1
pnum SUM
3 1

Предложение ORDER BY

При выполнении запроса СУБД возвращает строки в случайном порядке. Предложение ORDER BY позволяет упорядочить выходные данные запроса в соответствии со значениями одного или нескольких выбранных столбцов.

Можно задать возрастающий — ASC (от слова Ascend) или убывающий — DESC (от слова Descend) порядок сортировки. По умолчанию принят возрастающий порядок сортировки.

Пример 24.
Отсортировать таблицу PD в порядке возрастания номеров поставщиков, а строки с одинаковыми значениями pnum отсортировать в порядке убывания объема поставок.

SELECT pnum, volume, dnum
FROM PD
ORDER BY pnum ASC, volume DESC
pnum volume dnum
1 300 3
1 200 2
1 100 1
2 250 2
2 150 1
3 1000 1

Операцию TOP удобно применять после сортировки результирующего набора с помощью предложения ORDER BY.

Пример 25.
Определить номера первых двух деталей с наименьшей стоимостью.

SELECT TOP 2 dnum
FROM D
ORDER BY dprice ASC

Следует отметить, что если в таблице D будут две детали без указания цены, то именно их и отобразит предыдущий запрос. Поэтому при наличии NULL-значений их необходимо исключать с помощью предложения WHERE.

SELECT TOP 2 dnum
FROM D
WHERE dprice IS NOT NULL
ORDER BY dprice ASC

Заключение

В статье было рассмотрен оператор выборки SELECT. Знание оператора SELECT является ключевым при написании любых SQL-запросов. Он позволяет производить выборку данных из таблиц и преобразовывать результаты в соответствии с нужными выражениями и функциями.

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

Синтаксис оператора SELECT содержит несколько предложений, из которых обязательными являются только SELECT и FROM. Остальные предложения, такие как WHERE, GROUP BY, HAVING и ORDER BY, могут использоваться по желанию для уточнения выборки данных.

Для
выборки информации из таблиц базы данных
используется SQL-инструкций SELECT (выбрать)
языка SQL.

Упрощенный
синтаксис SQL-инструкций SELECT
в общем случае выглядит следующим
образом:

SELECT
[DISTINCT]
<СПИСОК АТРИБУТОВ>

FROM
<список таблиц> [WHERE
<условие выборки >]

[ORDER
BY
<СПИСОК АТРИБУТОВ>]

[GROUP
BY
<список атрибутов>]

[HAVING
<условие>]

[UNION
<выражение с оператором SELECT>];

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

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

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

3. Содержание работы

Задание
№1.
Создать запрос на выборку в режиме SQL
всех значений полей ИМЯ и ФАМИЛИЯ из
таблицы СПИСОК.

Перейдите
на вкладку Запросы,
щелкнув в Окне базы данных кнопку

Запросы.

Нажмите
кнопку Создать
и
в открывшемся окне Новый
запрос

выберите
Конструктор.
Нажмите
кнопку ОК, в открывшемся окне Добавление
таблицы
кнопку
Закрыть.

Щелкните
на раскрывающемся списке кнопки Вид на
панели инструментов и выберите режим
SQL.

В
открывшемся окне Запрос
1: запрос
на
выборку наберите:

SELECT
ИМЯ, ФАМИЛИЯ

FROM
СПИСОК;

Для
запуска запроса нажмите кнопку Запуск
на
панели инструментов.

Задание
№2.
Создать запрос на выборку в режиме SQL
всех столбцов таблицы СПИСОК.

Вместо
перечисления имен столбцов можно
использовать символ «*» (звездочка).

SELECT
*

FROM
СПИСОК;

Результатом
выполнения запроса будет вся таблица
СПИСОК.

Задание
№3.

Создать запрос на выборку в режиме SQL
названий городов, где проживают студенты,
сведения о которых находятся в таблице
ЛИЧНЫЕ_ДАННЫЕ.

SELECT
ГОРОД

FROM
ЛИЧНЫЕ_ДАННЫЕ
;

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

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

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

Предыдущий
запрос можно записать в следующем виде.

SELECT
DISTINCT
ГОРОД

FROM
ЛИЧНЫЕ_ДАННЫЕ
;

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

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

Задание
№4.

Создать запрос на выборку в режиме SQL,
выполняющий выборку имен всех студентов
с фамилией Воробьёв, сведения о которых
находятся в таблице СПИСОК.

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

Запрос
будет выглядеть следующим образом:

SELECT
ФАМИЛИЯ,
ИМЯ

FROM
СПИСОК

WHERE
ФАМИЛИЯ=’Воробьёв’;

Задание
№5
.
Создать запрос на выборку в режиме SQL
для получения имен и фамилий студентов,
обучающихся в группе УИТ-41 и получающих
стипендию (размер стипендии больше
нуля).

В
задаваемых в предложении WHERE
условиях могут использоваться операции
сравнения, определяемые операторами
= (равно), > (больше), < (меньше), >=
(больше или равно), < = (меньше или
равно), <>
(не
равно), а также логические операторы
AND,
OR
и NOT.

SQL-запрос
будет выглядеть таким образом:

SELECT
ИМЯ,
ФАМИЛИЯ

FROM
СПИСОК

WHERE
ГРУППА
=’УИТ-41’
AND
СТИПЕНДИЯ> 0;

Задание
№6
.
Создать запрос в режиме SQL.
на выборку из таблицы ЛИЧНЫЕ_ДАННЫЕ
сведении о студентах, имеющих оценки
по физике только 4 и 5.

При
задании логического условия в предложении
WHERE
могут быть использованы операторы IN,
BETWEEN,
LIKE,
IS
NULL.

Операторы
IN
(равен любому из списки) и NOT
IN
(не равен ни одному из списка) используются
для сравнения проверяемого значения
поля с заданным списком. Этот список
значений указывается в скобках справа
от оператора IN.

Построенный
с использованием IN
предикат (условие) считается истинны,
если значение поля, имя которого указано
слева от IN,
совпадает (подразумевается точное
совпадение) с одним из значений,
перечисленных в списке, указанном в
скобках справа от IN.

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

Запрос
будет выглядеть следующим образом:

SELECT
*

FROM
ЛИЧНЫЕ_ДАННЫЕ

WHERE
ФИЗИКА
IN
(4,
5)
;

Задание
№7.

Coздать
зanpoc
и режиме SQL
на выборку сведений о студентах, не
имеющих ни одной экзаменационной оценки
по физике и математике, равной 4 и 5.

SELECT
*

FROM
ЛИЧНЫЕ_ДАННЫЕ

WHERE
ФИЗИКА
NOT
IN
(4, 5) AND
МАТЕМАТИКА
NOT
IN
(4, 5);

Задание
№8.

Создать запрос в режиме SQL
на выборку записей о преподавателях,
часы которых находятся в пределах между
30 и 40.

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

Оператор
BETWEEN
может использоваться как для числовых,
так и для символьных типов полей.

Зanpoc
будет иметь вид:

SELECT
*

FROM
ГРУППЫ

WHERE
ЧАСЫ
BETWEEN
30
AND
40;

Граничные
значения, в данном случае значения
30 и 40, входят во множество значений,
с которыми производится сравнение.

Задание
№9.

Создать запрос в режиме SQL
на выборку из таблицы СПИСОК сведений
о студентах, фамилии которых начинаются
на букву «В».

Опеpamop
LIKE
применим только к символьным полям.
Этот оператор просмаmpueaem
строковые значения полей с целью
определения, входит ли

Заданная
в операторе LIKE
подстрока (образец поиска) в символьную
строку-значение проверяемого поля.

SELECT*

FROM
СПИСОК

WHERE
ФАМИЛИЯ
LIKE
В*’;

SELECT Name SQL, SQL запрос SELECT WHERE, выбор столбца, упорядочивание и другие практические примеры использования оператора.

SELECT SQL — оператор запроса, который возвращающает определённый набор данных из базы данных. Список столбцов выборки задаётся в части оператора, которая называется предложением оператора SELECT.

  1. Синтаксис SELECT SQL
  2. Примеры использования SELECT SQL

Синтаксис SELECT SQL

			SELECT column1, column2, ...
FROM table_name;
		

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

На данный момент этот блок не поддерживается, но мы не забыли о нём!Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

На уроке будет рассмотрен язык запросов: оператор SELECT sql — на выборку данных

Содержание:

  • Оператор SELECT sql
    • Сортировка в SQL
    • Удаление повторяющихся значений в SQL
  • Язык sql: where условие
    • Несколько условий в SQL
    • Between в SQL (между)
    • Предикат IN
    • Предикат IN с подзапросом
    • Язык SQL запрос LIKE

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

Синтаксис оператора SELECT

SELECT * FROM имя_таблицы;

Это самый простой вариант работы с оператором, когда мы выбираем все записи из таблицы БД.

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

Рассмотрим примеры sql запросов select:

Пример БД «Институт»: если вы создали локальную базу данных и заполнили таблицы, как в рассмотренном ранее уроке (или же воспользовались сервисом sqlFiddle), то выполним следующий пример.
Необходимо выбрать все записи из таблицы teachers

sql запрос select

Чтобы ограничить количество выбранных записей используется служебное слово LIMIT:

SELECT * FROM имя_таблицы LIMIT 2,3;

В примере происходит выборка 3 записей из таблицы, начиная со 2 записи.
Этот запрос особо необходим при создании блока страниц навигации.

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

SELECT name, zarplata
FROM teachers;

Выберет все значения полей name и zarplata в том же порядке (сначала name, затем zarplata)

примеры sql запросов select

Сортировка в SQL

Чтобы выполнить сортировку по любому из полей, указанных в предложении SELECT, используется предложение ORDER BY:

SELECT name, zarplata, premia
FROM teachers ORDER BY name;

Выберет значения полей name, zarplata, premia и отсортирует по полю name (по алфавиту)

sql order by

Пример: БД «Компьютерный магазин». Выбрать данные о скорости и памяти компьютеров. Требуется упорядочить результирующий набор по скорости процессора в порядке возрастания.

SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC

Или

SELECT `Скорость`,`Память` FROM `pc` ORDER BY 1 ASC

Результат:
sql ORDER BY пример

Сортировку можно выполнять по двум полям:

SELECT `Скорость`,`Память` FROM `pc` ORDER BY `Скорость` ASC, `Память` ASC

Задание sql select 1_1. База данных Компьютерный магазин: Получить информацию только о скорости процессора и объеме оперативной памяти компьютеров.

Задание sql select 1_2. База данных Компьютерный магазин: Требуется упорядочить результирующий набор по объему оперативной памяти в порядке убывания.

Сортировку можно производить по возрастанию, тогда добавляется параметр ASC (он же применяется по умолчанию) или по убыванию (в таком случае добавляется параметр DESC):

SELECT name, zarplata, premia
FROM teachers ORDER BY name DESC;

Выберет значения полей name, zarplata, premia и отсортирует по полю name по убыванию

sql asc и sesc сортировка

Задание 1_3. БД «Компьютерные курсы». Вывести информацию о фамилиях и годах рождения. Упорядочить результирующий набор по году рождения в порядке убывания.

Удаление повторяющихся значений в SQL

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

DISTINCT (в переводе с английского ОТЛИЧИЕ) — аргумент, который устраняет двойные значения:

Пример БД «Институт»: требуется узнать возможные варианты размера премий. Если не использовать Distinct, в результате будет выдаваться два одинаковых значения. Удалить в sql повторяющиеся значения можно при введении Distinct — в результате дублирующиеся значения не повторяются.

  1. SELECT premia  
    FROM teachers;
  2. SELECT DISTINCT premia  
    FROM teachers;
  1. sql повторяющиеся значения
  2. sql повторяющиеся значения

Рассмотрим другой пример из базы данных «Компьютерный магазин»:

Пример: База данных «Компьютерный магазин»: требуется получить информацию только о скорости процессора и объеме оперативной памяти компьютеров

SELECT Скорость, Память FROM PC;

Результат:
sql distinct пример

В таблице PC первичным ключом является поле code. Поскольку это поле отсутствует в запросе, в приведенном выше результирующем наборе имеются дубликаты строк.

Когда требуется получить уникальные строки (например, нас интересуют только различные комбинации скорости процессора и объема памяти, а не характеристики всех имеющихся компьютеров), то нужно использовать Distinct:

SELECT DISTINCT Скорость, Память FROM PC;

Результат:
sql distinct пример

Задание sql select 1_3. База данных Компьютерный магазин: Из таблицы Продукты выбрать различные страны-производители.

Задание sql select 1_1. БД «Институт» Выполните запрос на выборку id и name из таблицы учителей. Отсортируйте фамилии учителей по убыванию

Задание sql select 1_2. БД «Институт» Выведите возможные варианты длины курсов (length) из таблицы курсов (courses), удалив повторяющиеся значения

Задание 1_4. БД «Компьютерные курсы». Из таблицы личные данные вывести поля Word и Excell. Получить уникальные строки

Язык sql: where условие

Условие выполняется предложением
WHERE <предикат>
которое записывается после предложения FROM.

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

Пример БД «Институт»: Выводить данные преподавателя из таблицы teachers, фамилия которого Иванов

SELECT * FROM `teachers` WHERE `name` = 'Иванов'

sql where условие

Задание sql select 1_4. База данных Компьютерный магазин: Получить информацию о частоте процессора и объеме оперативной памяти для компьютеров с ценой ниже 6000

Задание sql select 1_5. База данных Компьютерный магазин: Вывести производителей принтеров

Задание 1_5. БД «Компьютерные курсы». Получить информацию по полям Фамилия, Имя, Отчество из таблицы Список, о студентках, имя которых Ольга

Несколько условий в SQL

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

  • AND,
  • OR
  • или NOT
  • Пример БД «Институт»: вывести код преподавателя, зарплата которого составляет 10000, а премия 500

    SELECT * FROM `teachers` WHERE `zarplata`=10000 AND `premia`=500

    Задание sql select 1_2. БД «Институт» Из таблицы courses вывести длину курса (length), название которого — «Программирование SQL»

    Реляционные операторы, встречающиеся в условиях:
    = Равный
    > Больше чем
    < Меньше чем
    >= Больше чем или равно
    <= Меньше чем или равно
    <> Не равно

    Задание sql select 1_6. База данных «Компьютерный магазин»: Получить информацию о компьютерах, имеющих частоту процессора не менее 500 Мгц и цену ниже 25000

    Задание sql select 1_7. База данных «Компьютерный магазин»: Получить информацию обо всех принтерах, которые не являются струйными и стоят меньше 5000

    Задание 1_6. БД «Компьютерные курсы». Получить информацию о студентах:
    — год рождения которых выше 1983 и обучающихся на первом курсе;
    — год рождения которых не 1980 или обучающихся на курсе старше второго.

    Between в SQL (между)

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

    Синтаксис:

    <Проверяемое выражение> [NOT] BETWEEN <Начальное выражение> AND 
    <Конечное выражение>

    Пример БД «Институт»: Вывести фамилию и зарплату преподавателя, зарплата которого между 5000 и 10000.

    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata BETWEEN 5000 AND 10000);

    between sql

    Пример БД «Институт»: Вывести фамилию и зарплату преподавателя, зарплата которого не находится в диапазоне от 5000 до 10000.

    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata NOT BETWEEN 5000 AND 10000);

    between sql

    Задание sql select 1_8. База данных «Компьютерный магазин»: Требуется найти номер и частоту процессора компьютеров стоимостью от 25000 до 35000

    Предикат IN

    Предикат IN определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который явно определен.

    Синтаксис:

    <Проверяемое выражение> [NOT] IN (<набор значений>)

    Пример БД «Институт»: вывести имена преподавателей, зарплата которых составляет 5000, 10000 или 11000

    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata IN (5000,10000,11000));

    sql in

    Пример БД «Институт»: вывести имена преподавателей, зарплата которых не находится среди значений: 5000, 10000 или 11000

    SELECT name, zarplata
    FROM teachers
    WHERE (zarplata NOT IN (5000,10000,11000));

    sql select in

    Задание sql select 1_3. БД «Институт» Вывести фамилию, зарплату и премию учителей, премия которых от 2000 до 5000 рублей.

    Задание sql select 1_9. База данных «Компьютерный магазин»: Требуется найти номер, частоту процессора и объем жесткого диска тех компьютеров, которые комплектуются жесткими дисками 500 или 1000Гб.

    Предикат IN с подзапросом

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

    Синтаксис:

    <Проверяемое выражение> [NOT] IN (<подзапрос>)

    Пример: БД «Компьютерный магазин». Найти номер, частоту процессора и объем жесткого диска тех компьютеров, которые имеют частоту процессора 1000, 2000 и 3000 МГц и выпускаются производителем Америка

    SELECT `Номер`,`Скорость`,`HD` FROM `pc` 
      WHERE `Скорость` IN (1000,2000,3000) 
      AND `Номер` IN (SELECT `Номер` FROM product 
                     WHERE Производитель = "Америка")

    Результат:
    sql подзапрос

    Задание sql select 10. База данных «Компьютерный магазин»: Найти производителей компьютеров, с частотой процессора не менее 2000 МГц

    Задание sql select. База данных Институт: Вывести зарплату тех преподавателей, у которых уже стоят уроки (есть записи в таблице lessons)

    Язык SQL запрос LIKE

    Предикат LIKE сравнивает проверяемое значение с шаблоном в выражении.

    Синтаксис:

    <Проверяемое значение>[NOT] LIKE <Выражение>

    Пример: Вывести все данные о преподавателях, фамилии которых заканчиваются на "а"

    SELECT * FROM teachers
    WHERE (name LIKE "%а");

    Символ % заменяет любую последовательность символов.

    Важно: При работе с СУБД Access символ % заменяется на символ *

    sql запрос like

    Задание sql select 14. База данных «Компьютерные курсы». Вывести данные о преподавателях, фамилия которых начинается с м. Упорядочить значения по возрастанию зарплаты

    Задание sql select 11. База данных «Компьютерный магазин»: Найти все номера компьютеров, производитель которых начинается на букву «Я»

    Задание sql select 12. База данных «Компьютерный магазин»: Найти все номера компьютеров, производитель которых заканчивается на букву «Я» и не начинается с буквы «Р»

    Задание 1_10. БД «Компьютерные курсы». Из таблицы Личные данные вывести Адрес студента, номер телефона которого заканчивается цифрами 33

    Задание 1_11. БД «Компьютерные курсы». Вывести сведения по студентам из таблицы Список, фамилия которых не заканчивается на «ин»

    #статьи


    • 0

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

    Иллюстрация: Оля Ежак для Skillbox Media

    Дмитрий Зверев

    Любитель научной фантастики и технологического прогресса. Хорошо сочетает в себе заумного технаря и утончённого гуманитария. Пишет про IT и радуется этому.

    SQL — это язык запросов для управления реляционными базами данных. «Реляционные» означает, что все данные хранятся в виде взаимосвязанных таблиц. А SQL как раз используют для того, чтобы как-то влиять на элементы внутри этих таблиц: добавлять, удалять, изменять и так далее.

    Язык SQL лежит в основе систем управления реляционными базами данных, таких как MySQL, PostgreSQL, Oracle и т.д. Таким образом, чтобы работать, скажем, с базой данных MySQL, нужно сперва изучить язык запросов SQL.

    По синтаксису SQL-запросы максимально похожи на обычные предложения:

    SELECT (Name, Age) FROM Clients WHERE Age > 20

    Если перевести на русский, получится что-то вроде:

    Выбрать Имя и Возраст из Таблицы с клиентами, где Возраст больше 20

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

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

    Перед тем как писать команды, разберёмся, какие есть виды запросов в SQL. Всего их четыре — DDL, DML, DCL и TCL. Каждый из них выполняет определённые действия — давайте разберём каждую категорию подробнее.

    DDL, или data definition language, нужен, чтобы определять данные. Эти запросы позволяют настраивать базу данных — создавать с нуля и прописывать её структуру.

    Примеры DDL-запросов: CREATE, DROP, RENAME, ALTER.

    DML, или data manipulation language, нужен, чтобы управлять данными в таблицах. Эти запросы помогают добавлять, обновлять, удалять и выбирать данные.

    Примеры DML-запросов: SELECT, UPDATE, DELETE, INSERT.

    DCL, или data control language, нужен, чтобы выдавать или отзывать права доступа для пользователей.

    Примеры DCL-запросов: GRANT, REVOKE, DENY.

    TCL, или transaction control language, нужен, чтобы управлять транзакциями. Это могут быть запросы, связанные с подтверждением или откатом изменений в базе данных.

    Примеры TCL-запросов: COMMIT, ROLLBACK, BEGIN.

    Вроде бы несложно — всего четыре вида запросов, даже меньше, чем времён в английском языке
    Инфографика: Оля Ежак для Skillbox Media

    Теперь перейдём к тому, как SQL-запросы составляются и из каких элементов состоят.

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

    • SELECT — выбирает отдельные столбцы или всю таблицу целиком (обязательный);
    • FROM — из какой таблицы получить данные (обязательный);
    • WHERE — условие, по которому SQL выбирает данные;
    • GROUP BY — столбец, по которому мы будут группироваться данные;
    • HAVING — условие, по которому сгруппированные данные будут отфильтрованы;
    • ORDER BY — столбец, по которому данные будут отсортированы;

    Давайте разберём каждую из частей этого запроса по порядку.

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

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

    В качестве примера выберем столбцы Name и Age из таблицы Clients:

    SELECT (Name, Age) FROM Clients

    На выходе будут все строки таблицы, принадлежащие столбцам Name и Age.

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

    Например, ранее мы уже выбирали данные из таблицы Clients:

    SELECT (Name, Age) FROM Clients

    В SQL всё построено на таблицах. Поэтому, если нужно получить данные из другого места — указываем другую таблицу.

    Если нужно отфильтровать данные, используем слово WHERE. После него указывается условие, которому должны удовлетворять строки, чтобы они попали в результат выполнения запроса.

    Например, этот запрос вернёт все строки из таблицы, где значения Age больше 20:

    SELECT (Name, Age) FROM Clients WHERE Age > 20

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

    Например, сгруппируем результат предыдущего запроса по городам:

    SELECT (Name, Age) FROM Clients WHERE Age > 20 GROUP BY City

    Запрос вернёт клиентов старше 20 лет и сгруппирует их по городам. Главное — чтобы столбец City присутствовал в таблице.

    Нужен, чтобы собирать группы по определённым условиям. Его обычно используют в паре с GROUP BY, а по своей функциональности он похож на WHERE.

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

    SELECT (Name, PaymentAmount, Age) 
    FROM Clients 
    WHERE Age > 20 
    GROUP BY City 
    HAVING PaymentAmount > 1000

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

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

    Допустим, если хотим отсортировать клиентов по возрасту — от младшего к старшему, — добавляем команду ORDER BY Age:

    SELECT (Name, PaymentAmount, Age) 
    FROM Clients 
    WHERE Age > 20 
    GROUP BY City 
    HAVING PaymentAmount > 1000
    ORDER BY Age

    А чтобы отсортировать по убыванию, просто добавляем слово DESC:

    SELECT (Name, PaymentAmount, Age) 
    FROM Clients 
    WHERE Age > 20 
    GROUP BY City 
    HAVING PaymentAmount > 1000
    ORDER BY Age DESC

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

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

    Первым делом создаём базу данных. Делается это с помощью команды CREATE DATABASE:

    CREATE DATABASE CatsCatsCats;

    Внутри пока ничего нет. Но это пока.

    Запрос создаёт таблицу в базе данных. В общем виде команда выглядит так:

    CREATE TABLE table_name (
        column1 datatype,
        column2 datatype,
        column3 datatype
    );

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

    В SQL много типов данных. Вот примеры самых популярных:

    • INT — целое число;
    • DATETIME — дата;
    • VARCHAR — строка;
    • FLOAT — десятичное число.

    В нашей таблице используется два типа: строки (VARCHAR) и целые числа (INT):

    CREATE TABLE CatsAndOwners (
    CatID int(6) NOT NULL,
    CatName varchar(255) NOT NULL,
    CatAge int(6) NOT NULL,
    CatColor varchar(255) NOT NULL,
    CatOwnerName varchar(255) NOT NULL
    );

    В примере выше мы добавили пять столбцов: уникальный номер кота CatID, его имя CatName, возраст CatAge, цвет CatColor и имя владельца CatOwnerName. А ещё задали, чтобы ни одно из полей не было пустым — NOT NULL.

    Цифры рядом с типами данных обозначают, сколько бит выделяется для поля. Например, varchar (255) значит, что строка может принимать размер от 0 до 255 бит — по объёму данных это приблизительно соответствует фразе «Я люблю язык SQL».

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

    CatID CatName CatAge CatColor CatOwnerName

    Если вдруг забыли добавить столбец во время создания таблицы — ничего страшного. Новые колонки можно добавлять с помощью команды ALTER TABLE. Давайте добавим город проживания кота:

    ALTER TABLE CatsAndOwners
    ADD City varchar(255);

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

    Теперь таблица выглядит так:

    CatID CatName CatAge CatColor CatOwnerName City

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

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

    INSERT INTO CatsAndOwners(CatID, CatName, CatAge, CatColor, CatOwnerName, City) 
    VALUES
    (1, 'Мурка', 3, 'Чёрная', 'Дмитрий', 'Москва');
    
    INSERT INTO CatsAndOwners(CatID, CatName, CatAge, CatColor, CatOwnerName, City) 
    VALUES
    (2, 'Белла', 7, 'Белая', 'Максим', 'Саратов');
    
    INSERT INTO CatsAndOwners(CatID, CatName, CatAge, CatColor, CatOwnerName, City) 
    VALUES
    (3, 'Симба', 5, 'Рыжий', 'Екатерина', 'Санкт-Петербург');
    
    INSERT INTO CatsAndOwners(CatID, CatName, CatAge, CatColor, CatOwnerName, City) 
    VALUES
    (4, 'Лео', 2, 'Полосатый', 'Александр', 'Екатеринбург');
    
    INSERT INTO CatsAndOwners(CatID, CatName, CatAge, CatColor, CatOwnerName, City) 
    VALUES
    (5, 'Мася', 1, 'Серый', 'Анна', 'Москва');

    Обратите внимание: строки указываются в одинарных кавычках, а числа — без них. И, к сожалению, нельзя добавить несколько строк одной командой.

    Блеск! Таблица наконец-то обзавелась данными:

    CatID CatName CatAge CatColor CatOwnerName City
    1 Мурка 3 Чёрная Дмитрий Москва
    2 Белла 7 Белая Максим Саратов
    3 Симба 5 Рыжий Екатерина Санкт-Петербург
    4 Лео 2 Полосатый Александр Екатеринбург
    5 Мася 1 Серый Анна Москва

    Запрос нужен, чтобы доставать данные из таблицы. Ранее мы уже успели познакомиться с этой командой, — давайте немного освежим память. Достанем из таблицы список котов и их владельцев:

    SELECT CatName, CatOwnerName
    FROM CatsAndOwners;

    Результат:

    CatName CatOwnerName
    Мурка Дмитрий
    Белла Максим
    Симба Екатерина
    Лео Александр
    Мася Анна

    Если нужно выбрать все столбцы из таблицы, после слова SELECT добавим символ *. В этом случае на выходе получим всю таблицу целиком.

    SELECT *
    FROM CatsAndOwners;

    Нужен, чтобы задавать условия для фильтрации строк. Например, можем выбрать только те, у которых значение CatAge больше 5:

    SELECT CatName, CatAge
    FROM CatsAndOwners
    WHERE CatAge > 5

    Результатом будет одна строка с двумя столбцами:

    Оператор WHERE интересен тем, что внутри него можно указывать условия — причём сразу несколько. Делается это с помощью логических конструкций AND, OR и BETWEEN.

    AND — это логическое И. Оно означает, что должны выполняться оба условия запроса одновременно. Например, кошка должна быть чёрной И проживать в Москве.

    SELECT CatName
    FROM CatsAndOwners
    WHERE CatColor = 'Чёрная'
        AND City = 'Москва'

    Результат:

    OR — это логическое ИЛИ. Оно означает, что должно выполниться или одно условие, или второе. Например, кошка должна быть ИЛИ старше пяти лет, ИЛИ быть чёрной.

    SELECT CatName
    FROM CatsAndOwners
    WHERE CatAge > 5
        OR CatColor = 'Чёрная'

    Результат:

    BETWEEN — это оператор, который выбирает все элементы внутри заданного диапазона. Например, можно запросить всех кошек в возрасте от двух до шести лет.

    SELECT CatName, CatAge
    FROM CatsAndOwners
    WHERE CatAge BETWEEN 2 AND 6

    Результат:

    CatName CatAge
    Мурка 3
    Симба 5
    Лео 2

    Все вышеуказанные операторы можно использовать одним пакетом:

    SELECT CatName, CatAge
    FROM CatsAndOwners
    WHERE CatAge BETWEEN 2 AND 8
        AND (City = 'Саратов' OR City = 'Санкт-Петербург')
        OR CatName = 'Мурка'

    Результат:

    CatName CatAge
    Мурка 3
    Белла 7
    Симба 5

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

    SELECT CatName, CatAge
    FROM CatsAndOwners
    ORDER BY CatAge DESC

    Результат:

    CatName CatAge
    Белла 7
    Симба 5
    Мурка 3
    Лео 2
    Мася 1

    Чтобы отсортировать записи по возрастанию, нужно просто убрать из запроса параметр DESC:

    SELECT CatName, CatAge
    FROM CatsAndOwners
    ORDER BY CatAge

    Результат:

    CatName CatAge
    Мася 1
    Лео 2
    Мурка 3
    Симба 5
    Белла 7

    Выбранные строки можно сгруппировать по столбцам. Например, можем посмотреть, сколько кошек живёт в разных городах.

    SELECT City, COUNT(*) AS CatCount 
    FROM CatsAndOwners
    GROUP BY City;

    В этом примере мы применили агрегатную функцию COUNT, которая посчитала количество строк в каждой группе. К функциям-агрегаторам мы вернёмся позже, а пока — насладимся результатом:

    CatName CatCount
    Москва 2
    Саратов 1
    Санкт-Петербург 1
    Екатеринбург 1

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

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

    SELECT *
    FROM CatsAndOwners
    LIMIT 2;

    Результат:

    CatID CatName CatAge CatColor CatOwnerName City
    1 Мурка 3 Чёрная Дмитрий Москва
    2 Белла 7 Белая Максим Саратов

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

    UPDATE CatsAndOwners 
    SET CatColor = 'Пурпурный'
    WHERE CatName = 'Симба';

    Всё просто: рядом с командой UPDATE пишем название таблицы, которую нужно обновить, затем рядом с SET указываем, какой именно столбец меняем и на какое значение, а в конце — определяем конкретную ячейку.

    Результат:

    CatID CatName CatAge CatColor CatOwnerName City
    1 Мурка 3 Чёрная Дмитрий Москва
    2 Белла 7 Белая Максим Саратов
    3 Симба 5 Пурпурный Екатерина Санкт-Петербург
    4 Лео 2 Полосатый Александр Екатеринбург
    5 Мася 1 Серый Анна Москва

    Удаляет строку. Например, можем удалить из таблицы всех кошек, которые живут в Саратове:

    DELETE FROM CatsAndOwners 
    WHERE City = 'Саратов';

    Результат:

    CatID CatName CatAge CatColor CatOwnerName City
    1 Мурка 3 Чёрная Дмитрий Москва
    3 Симба 5 Пурпурный Екатерина Санкт-Петербург
    4 Лео 2 Полосатый Александр Екатеринбург
    5 Мася 1 Серый Анна Москва

    Удаляет столбец. Например, можно удалить имена кошачьих хозяев:

    ALTER TABLE CatsAndOwners 
    DROP COLUMN CatOwnerName;

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

    Результат:

    CatID CatName CatAge CatColor City
    1 Мурка 3 Чёрная Москва
    3 Симба 5 Пурпурный Санкт-Петербург
    4 Лео 2 Полосатый Екатеринбург
    5 Мася 1 Серый Москва

    Если таблица больше не нужна, можем удалить её. Сделать это просто:

    DROP TABLE CatsAndOwners;

    Применяйте команду на свой страх и риск. Предварительно советуем всё-таки сохранить таблицу — вдруг пригодится.

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

    В SQL доступны пять агрегатных функций:

    • COUNT — посчитать количество строк;
    • SUM — посчитать сумму значений в столбце;
    • AVG — получить среднее значение в столбце;
    • MIN — получить минимальное значение в столбце;
    • MAX — получить максимальное значение в столбце.

    Попробуем вычислить совокупный возраст всех кошек:

    SELECT SUM(CatAge) AS TotalAge
    FROM CatsAndOwners;

    Результат:

    Теперь найдём наименьший возраст кошки:

    SELECT MIN(CatAge) AS MinAge
    FROM CatsAndOwners;

    Результат:

    А теперь высшая математика — вычислим средний возраст кошек для каждого города:

    SELECT City, AVG(CatAge) AS AverageAge
    FROM CatsAndOwners
    GROUP BY City;

    Результат:

    City AverageAgeCatCount
    Москва 2
    Санкт-Петербург 5
    Екатеринбург 2

    Выделим важные пункты из этой статьи, которые стоит запомнить:

    • SQL — это язык структурированных запросов. Он нужен, чтобы управлять информацией в реляционных базах данных — то есть тех, которые состоят из связанных между собой таблиц.
    • Каждый запрос нацелен на то, чтобы совершать какое-то действие с данными в таблице: выводить на экран, добавлять новые, считать средние значения, удалять и так далее.
    • Все запросы делятся на четыре группы: DDL, DML, DCL и TCL. DDL отвечает за определение данных. DML — за управление данными. DCL — за выдачу прав доступа. TCL — за управление транзакциями.
    • Классический запрос состоит из шести операторов. Два из них обязательные: SELECT и FROM. Остальные четыре — используются в зависимости от задачи: WHERE, GROUP BY, HAVING и ORDER BY.
    • Помимо базовых команд, в SQL существует множество дополнительных — изучить их можно, например, в шпаргалке от W3Schools. А ещё лучше — берите эти команды на вооружение и экспериментируйте, ведь теория без практики мертва.

    Жизнь можно сделать лучше!
    Освойте востребованную профессию, зарабатывайте больше и получайте от работы удовольствие. А мы поможем с трудоустройством и важными для работодателей навыками.

    Посмотреть курсы

    Понравилась статья? Поделить с друзьями:
  • Какая информация обычно выделяется в инструкциях запиши свой ответ
  • Какая инструкция предназначена для описания переменной
  • Какая инструкция удаляет все строки таблицы более быстро чем инструкция delete
  • Какая инструкция оператор является основной при написании оконной функции
  • Какая инструкция позволяет из процедуры вывести на экран сообщение vba