Что выдает следующий запрос select from student where students in

Помогите с тестами.

2. В базе данных имеется таблица Book со следующими столбцами:
— ID – уникальный числовой идентификатор издания, первичный ключ;
— Title – название книги;
— Author – автор книги (принимаем допущение, что у каждой книги только один автор);
— Publisher – издательство, в котором вышла книга;
— Pub_Year – год издания книги.
Что произойдет при выполнении выражения UPDATE Book SET WHERE Publisher = ‘Азбука’, если учесть, что на ниже приведены все строки, присутствующие в таблице?

ID|Title |Author |Publisher |Pub_Year
1 |Война и мир |Толстой Л.Н. |Мысль |1981
2 |Казаки |Толстой Л.Н. |Азбука |1999
3 |Французский язык |Исмаилов Р.А.|Высшая школа |2003
4 |Как это делалось в Одессе|Бабель И. |Азбука |2003

1. Обновление пройдет успешно для всех строк
2. Синтаксис выражения UPDATE некорректен, поэтому оно даже не выполнится
3. Выражение выполнится, но во время выполнения возникнет ошибка и ни одна строка не будет обновлена
4. Обновится только одна строка, соотвествующая книге «Как это делалось в Одессе»

3. В базе данных имеются 2 таблицы – Students и Results.
В таблице Students столбец ID – номер студенческого билета, первичный ключ; столбец Name содержит ФИО студента.
В таблице Results поле ID – номер студенческого билета, внешний ключ, ссылающийся на таблицу Students; Mark – оценка студента за экзамен; первичный ключ таблицы составной, он включает поля ID, Subject.
Из приведенных вариантов запросов выберите те, которые позволяют отобрать ФИО студентов, сдавших хотя бы 1 экзамен на 5.
1. SELECT DISTINCT Name FROM Students Left Join Results On Students.ID=Results.ID WHERE Mark=5;
2. SELECT DISTINCT Name FROM Students, Results WHERE Students.ID=Results.ID AND Mark=5;
3. SELECT DISTINCT Name FROM Students WHERE ID In (Select ID From Results Where Mark=5);
4. SELECT DISTINCT Name FROM Students Inner Join Results On Students.ID=Results.ID WHERE Mark=5;

4. В вашей базе данных имеются две таблицы – Students (информация о студентах) и Mark (информация об оценках студентов). Таблица Students содержит столбцы ID (первичный ключ), Student_Name, Group и другие. Таблица Mark содержит столбцы ID (идентификатор студента), Subject (код предмета), Mark (оценка по 5-балльной шкале), Exam_Date и другие. Никаких ограничений (в том числе и первичного ключа) в таблице Mark не создано. Вы хотите ускорить выполнение запроса
SELECT s.Student_Name, m.Subject, m.Mark
FROM Students s JOIN Mark m
ON m.ID=s.ID
WHERE Student_Name=’Иванов А.М’
Укажите два действия (каждое является частью полного решения), которые позволят вам выполнить задачу.
1. Создать в таблице Mark композитный первичный ключ по столбцам Mark, Subject, ID, перечислив их в указанном порядке
2. Создать в таблице Mark внешний ключ для столбца ID, который будет ссылаться на столбец ID таблицы Students
3. Создать в таблице Mark ограничение UNIQUE по столбцу ID
4. Создать в таблице Students индекс по столбцу Student_Name
5. Создать в таблице Mark индекс по столбцу ID
6. Создать в таблице Students индекс по столбцу IID

5. В базе данных имеются 2 таблицы – Students и Results.
В таблице Students столбец ID – номер студенческого билета, первичный ключ; столбец Name содержит ФИО студента.
В таблице Results поле ID – номер студенческого билета, внешний ключ, ссылающийся на таблицу Students; Mark – оценка студента за экзамен; первичный ключ таблицы составной, он включает поля ID, Subject.
Какой результат будет получен после исполнения следующего запроса, где предмет – это вводимое до выполнения запроса значение (т.е переменная)?
Select Distinct Name From Students
Where Distinct ID from Results WHERE subject = ‘предмет’);
1. ФИО студентов, которые сдавали хотя бы один экзамен
2. Запрос выполнится, но не выдаст ни одной строки
3. Запрос не выполнится, будет выдана ошибка
4. В зависимости от введенного значения будет либо выдана ошибка, либо одна строка с ФИО студента, сдававшего экзамен, либо ни одной строки

6. В базе данных имеется таблица Book со следующими столбцами:
— ID – уникальный числовой идентификатор издания, первичный ключ;
— Title – название книги;
— Author – автор книги (принимаем допущение, что у каждой книги только один автор);
— Publisher – издательство, в котором вышла книга;
— Pub_Year – год издания книги.
Выберите запросы, возвращающие всю информацию о книгах, изданных в издательствах «Азбука» или «Мысль».
1. SELECT * FROM Book WHERE Publisher=’Мысль’ UNION SELECT * FROM Book WHERE Publisher=’Азбука’;
2. SELECT * FROM Book WHERE Publisher IN (‘Мысль’,’Азбука’);
3. SELECT * FROM Book WHERE Publisher =’Мысль’ OR Publisher =’Азбука’;
4. SELECT * FROM Book WHERE Publisher = ‘Мысль’, Publisher =’Азбука’;

7. Имеется таблица Book, в которой есть столбец Author. Ниже приведен запрос на языке SQL. Выберите из приведенного списка ответ, наиболее точно описывающий результат выполнения запроса.
SELECT Author As A, ‘Список авторов’ As D FROM Book
1. Результат выполнения запроса будет содержать 4 столбца
2. Результат выполнения запроса будет содержать 3 столбца
3. Результат выполнения запроса будет содержать 1 столбец
4. Будет получено сообщение о синтаксической ошибке
5. Результат выполнения запроса будет содержать 2 столбца

8. В базе данных имеется таблица Book со следующими столбцами:
— ID – уникальный числовой идентификатор издания, первичный ключ;
— Title – название книги;
— Author – автор книги (принимаем допущение, что у каждой книги только один автор);
— Publisher – издательство, в котором вышла книга;
— Pub_Year – год издания книги.
Была создана таблица Book1 с аналогичной структурой. Необходимо поместить в нее информацию обо всех книгах из Book, которые были изданы до 2000-го года. Выберите правильный вариант SQL-запроса.
1. SELECT * INTO Book1 FROM Book WHERE Pub_Year 1;
2. SELECT Author FROM Book GROUP BY Author, Title HAVING Count(ID)>1;
3. SELECT Author FROM Book WHERE Count(ID)>1;

Источник

SQL SELECT

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

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

С помощью запроса SQL SELECT можно выполнять выборку данных из таблицы. Следующие примеры запросов SQL SELECT используются в таких SQL СУБД как MySQL, Oracle, Access и других.

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

Имя таблицыИмя поляТип поляПримечание
FAKULTETKOD_FIntegerPRIMARY KEY
NAZV_FChar, 30
SPECKOD_SIntegerPRIMARY KEY
KOD_FInteger
NAZV_SChar, 50
STUDENTKOD_STUDIntegerPRIMARY KEY
KOD_SInteger
FAMChar, 30
IMChar, 15
OTChar, 15
STIPDecimal, 3
BALLDecimal, 3

Примеры запросов SELECT на языке SQL:

SQL Пример SELECT №1
Выбрать студентов, получающих стипендию, равную 150.

SELECT fname FROM STUDENT WHERE STIP=150;

С помощью данного SQL запроса SELECT выбираются все значения из таблицы STUDENT, поле STIP которых строго равно 150.

SQL Пример SELECT №2
Выбрать студентов, имеющих балл от 82 до 90. Студенты должны быть отсортированы в порядке убывания балла.

SELECT FAM FROM STUDENT WHERE BALL BETWEEN 81 AND 91 ORDER BY BALL DESC;

Как видно из SQL примера, чтобы выбрать студентов, которые имеют балл от 82 до 90, мы используем условие BETWEEN. Чтобы отсортировать в убывающем порядке DESC.

SQL Пример SELECT №3
Выбрать студентов, фамилии которых начинаются с буквы «А».

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

SQL SELECT Пример №4
Подсчитать средний балл на каждом факультете.

SELECT NAZV_F As Название, ROUND(AVG(BALL), 2) As СредБалл FROM FAKULTET, SPEC, STUDENT WHERE STUDENT.KOD_S=SPEC.KOD_S AND SPEC.KOD_F=FAKULTET.KOD_F GROUP BY NAZV_F;

Пример запроса SQL SELECT показывает нам использование функции SQL AVG для вычисления среднего значения, ROUND для округления значения, раздела GROUP BY для группировки столбцов.

SQL SELECT. Пример №5.
Подсчитать количество студентов, обучающихся на каждом факультете. Вывести в запросе название факультета, комментарий – «обучается», количество студентов, комментарий «человек».

SELECT NAZV_F||’ обучается ‘||COUNT(STUDENT.BALL)||’ человек’ As CountStudOnFakultet FROM FAKULTET, SPEC, STUDENT WHERE STUDENT.KOD_S=SPEC.KOD_S AND SPEC.KOD_F=FAKULTET.KOD_F GROUP BY NAZV_F;

SQL SELECT. Пример №6.
Упорядочить студентов по факультетам, специальностям, фамилиям.

SELECT NAZV_F, NAZV_S, FAM FROM FAKULTET, SPEC, STUDENT WHERE STUDENT.KOD_S=SPEC.KOD_S AND SPEC.KOD_F=FAKULTET.KOD_F ORDER BY NAZV_F, NAZV_S, FAM;

SQL SELECT. Пример №7.
Определить, кто учится на специальности, к которой относится студент «Асанов».

SELECT FAM FROM STUDENT WHERE STUDENT.KOD_S=(SELECT KOD_S FROM STUDENT WHERE FAM=’Асанов’);

В данном SQL примере мы используем подзапрос SQL SELECT, который возвращает код специальности, на которой учится студент по фамилии Асанов.

SQL SELECT. Пример №8.
Показать, какие специальности встречаются в таблице STUDENT. Дубликаты исключить. Вывести в запросе названия специальностей.

SELECT DISTINCT NAZV_S FROM SPEC, STUDENT WHERE STUDENT.KOD_S=SPEC.KOD_S;

Здесь мы с помощью SQL ограничения DISTINCT выводим только различные значения.

SQL SELECT. Пример №9.
Извлечь из базы данных все данные по сотрудникам, принятым на работу после 01.01.1980 г. в формате “Сотрудник принят на работу ”.

SELECT CONCAT(CONCAT(CONCAT(‘Сотрудник ‘, sname), CONCAT(SUBSTR(fname, 0, 1), SUBSTR(otch, 0, 1))), CONCAT(‘принят на работу ‘, acceptdate)) FROM employees WHERE acceptdate > to_date(‘01.01.80′,’dd.mm.yyyy’);

В данном SQL SELECT, используя SQL функцию CONCAT мы выводим все поля таблицы в одну строчку. SQL функция to_date возвращает привычное для СУБД значение даты.

SQL SELECT. Пример №10.
Извлечь из базы данных перечень должностей, которые имеют сотрудники следующих отделов: ‘БИОТЕХНОЛОГИЙ’, ‘ИНЖЕНЕРНОЙ ЭКОЛОГИИ’. В запросе использовать названия отделов.

SELECT pname FROM posts, departments, employees WHERE posts.pid = employees.pid AND employees.did = departments.did AND (departments.dname = ‘БИОТЕХНОЛОГИЙ’ OR departments.dname = ‘ИНЖЕНЕРНОЙ ЭКОЛОГИИ’);

Пояснение: posts — таблица должностей, departments — таблица отделов, employees — таблица сотрудников, pname — название должности.

SQL SELECT. Пример №11.
Извлечь из базы данных значение максимального личного шифра и фамилию сотрудника с этим номером в формате “Максимальный личный шифр имеет сотрудник ”.

SELECT ‘Максимальный личный шифр ‘||eid||’ имеет сотрудник ‘||sname||’ ‘||SUBSTR(fname, 0, 1)||’. ‘||SUBSTR(otch, 0, 1)||’.’ As Максимальный_личный_шифр FROM employees WHERE eid = (SELECT MAX(eid) from employees);

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

SQL SELECT. Пример №12.
Получить из базы данных значение числа записей в таблице данных о сотрудниках в формате “Таблица данных о сотрудниках содержит записей”.

SELECT ‘Таблица данных о сотрудниках содержит ‘||COUNT(*)||’ записей’ FROM employees;

Используя SQL функцию COUNT, выводим количество записей таблицы employees.

SQL SELECT. Пример №13.
Получить единым запросом список отделов и должностей предприятия.

SELECT pname FROM posts UNION SELECT dname FROM departments;

С помощью UNION мы объединяем два запроса SQL SELECT и выводим их как один.

SQL SELECT. Пример №14.
Вывести 30 комментариев начиная с 5 комментария из таблицы replies, кроме комментариев автора ‘Вася’. Данные сортируются по дате добавления комментария в убывающем порядке.

SELECT * FROM replies WHERE author!=’Вася’ ORDER BY date DESC LIMIT 5, 30;

SQL SELECT. Пример №15.
Получить из SQL таблицы news одну новость с пометкой «Важные новости».

SELECT * FROM news WHERE status=’Важные новости’ LIMIT 1;

В данном SQL примере мы выбираем все столбцы поля, у которого столбец status равен ‘Важные новости’. SQL ограничение LIMIT 1 означает, что выбираем только одну запись.

SQL SELECT. Пример №16.
Получить имя письма с идентификатором 1565.

SELECT name FROM mail_inbox WHERE >

SQL SELECT. Пример №17.
Получить название рекламного пакета с идентификатором 24.

SELECT title FROM ad_packages WHERE >

SQL SELECT. Пример №18.
Вывести столбцы id, title, price, c_type с сортировкой по идентификатору в возрастающем порядке.

SELECT id, title, price, c_type FROM ad_packages ORDER BY id ASC;

SQL SELECT. Пример №19.
Вывести все записи из SQL таблицы actions с идентификатором 1234567890.

SELECT * actions WHERE uid=’1234567890′;

SQL SELECT. Пример №20.

SELECT * FROM buypts ORDER BY c_type DESC, price DESC;

SQL SELECT. Пример №21.

SELECT uid FROM refs WHERE rid=’19’;

SQL SELECT. Пример №22.

SELECT * FROM sellpts ORDER BY price ASC;

SQL SELECT. Пример №23.

SELECT * FROM useronline WHERE uid=’1′;

SQL SELECT. Пример №24.

SELECT * FROM mail_inbox WHERE uid=’4590′ AND status=’unread’;

SQL SELECT. Пример №25.

SELECT * FROM buyref WHERE rid!=’5′ ORDER BY dateStamp DESC;

MySQL SQL SELECT. Пример №26.

SELECT id FROM replies WHERE nid=’5′;

MySQL SQL SELECT. Пример №27.

SELECT id, dateStamp, title, text FROM news WHERE dateStamp=’1232342412′;

Oracle SQL SELECT. Пример №28.

SELECT id, dateStamp, author, text, remote_addr FROM replies WHERE nid=’45’ ORDER BY dateStamp ASC;

Источник

SQL урок 1. Язык запросов SQL и оператор выбора SELECT

Оператор SELECT sql

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

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

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

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

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

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

SELECT * FROM teachers;

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

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

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

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

SELECT name, zarplata FROM teachers;

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

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

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

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

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

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

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

SELECT premia FROM teachers;

SELECT DISTINCT premia FROM teachers;

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

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

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

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

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

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

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

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

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

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

Between в SQL (между)

Синтаксис:

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

Предикат IN

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

Синтаксис:

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in

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

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

Синтаксис:

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

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

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

Синтаксис:

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

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

Источник

SQL запросы быстро. Часть 1

Введение

Язык SQL очень прочно влился в жизнь бизнес-аналитиков и требования к кандидатам благодаря простоте, удобству и распространенности. Из собственного опыта могу сказать, что наиболее часто SQL используется для формирования выгрузок, витрин (с последующим построением отчетов на основе этих витрин) и администрирования баз данных. И поскольку повседневная работа аналитика неизбежно связана с выгрузками данных и витринами, навык написания SQL запросов может стать фактором, из-за которого кандидат или получит преимущество, или будет отсеян. Печальная новость в том, что не каждый может рассчитывать получить его на студенческой скамье. Хорошая новость в том, что в изучении SQL нет ничего сложного, это быстро, а синтаксис запросов прост и понятен. Особенно это касается тех, кому уже доводилось сталкиваться с более сложными языками.

Обучение SQL запросам я разделил на три части. Эта часть посвящена базовому синтаксису, который используется в 80-90% случаев. Следующие две части будут посвящены подзапросам, Join’ам и специальным операторам. Цель гайдов: быстро и на практике отработать синтаксис SQL, чтобы добавить его к арсеналу навыков.

Практика

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

Кликнуть здесь

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

Структура sql-запросов

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

Разберем структуру. Для удобства текущий изучаемый элемент в запроса выделяется CAPS’ом.

SELECT, FROM

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

Выбрать все (обозначается как *) из таблицы Customers:

Выбрать столбцы CustomerID, CustomerName из таблицы Customers:

WHERE

WHERE — необязательный элемент запроса, который используется, когда нужно отфильтровать данные по нужному условию. Очень часто внутри элемента where используются IN / NOT IN для фильтрации столбца по нескольким значениям, AND / OR для фильтрации таблицы по нескольким столбцам.

Фильтрация по одному условию и одному значению:

Фильтрация по одному условию и нескольким значениям с применением IN (включение) или NOT IN (исключение):

Фильтрация по нескольким условиям с применением AND (выполняются все условия) или OR (выполняется хотя бы одно условие) и нескольким значениям:

GROUP BY

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

При использовании GROUP BY обязательно:

Группировка количества клиентов по стране и городу:

Группировка продаж по ID товара с разными агрегатными функциями: количество заказов с данным товаром и количество проданных штук товара:

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

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

HAVING

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

Фильтрация агрегированной таблицы с количеством клиентов по городам, в данном случае оставляем в выгрузке только те города, в которых не менее 5 клиентов:

В случае с переименованным столбцом внутри HAVING можно указать как и саму агрегирующую конструкцию count(CustomerID), так и новое название столбца number_of_clients:

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

ORDER BY

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

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

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

По умолчанию сортировка происходит по возрастанию для чисел и в алфавитном порядке для текстовых значений. Если нужна обратная сортировка, то в конструкции ORDER BY после названия столбца надо добавить DESC:

Обратная сортировка по одному столбцу и сортировка по умолчанию по второму:

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

Запрос, в котором соединяем таблицы Order и Customer по ключу CustomerID, при этом перед названиям столбца ключа добавляется название таблицы через точку:

Нередко может возникать ситуация, когда надо промэппить одну таблицу значениями из другой. В зависимости от задачи, могут использоваться разные типы присоединений. INNER JOIN — пересечение, RIGHT/LEFT JOIN для мэппинга одной таблицы знаениями из другой,

Внутри всего запроса JOIN встраивается после элемента from до элемента where, пример запроса:

Другие типы JOIN’ов можно увидеть на замечательной картинке ниже:

Что выдает следующий запрос select from student where students in. Смотреть фото Что выдает следующий запрос select from student where students in. Смотреть картинку Что выдает следующий запрос select from student where students in. Картинка про Что выдает следующий запрос select from student where students in. Фото Что выдает следующий запрос select from student where students in
В следующей части подробнее поговорим о типах JOIN’ов и вложенных запросах.

При возникновении вопросов/пожеланий, всегда прошу обращаться!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *