Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Выборка данных с использованием предложения select

Содержание

SELECT - команда запроса, который получает любое количество данных из одного или нескольких отношений.Результат запроса – другое отношение.Предложение SELECT может использоваться как:самостоятельная команда на получение и вывод кортежей отношения; в качестве вложенного подзапроса; фраза выбора в
Выборка данных с использованием предложения SELECT SELECT - команда запроса, который получает любое количество данных из одного или Упрощенный синтаксис SELECTSELECT [DISTINCT] FROM [WHERE ][ORDER BY < список атрибутов >][GROUP Есть таблица STUDENT:STUDENT_ID – числовой код, идентифицирующий студента;SURNAME – фамилия студента;NAME – Пример 1:  SELECT NAME, SURNAME FROM STUDENT; Пример 1:  SELECT NAME, SURNAME FROM STUDENT; Осуществляет выборку всех значений В данном случает результатом выполнения будет таблица STUDENT полностью.Пример 2:  SELECT Пример 3:  SELECT CITY FROM STUDENT; В полученной таблице несколько раз повторяется значение поля CITY: Воронеж.Для того, чтобы Получаемые в результате выполнения SQL-запроса таблицы не в полной мере отвечают определению С помощью DISTINCT избавились от повторяющихся записей.Пример 3 (переделанный Пример 2): Вместо DISTINCT может использоваться ключевое слово ALL для вывода повторяющихся. Режим, задаваемый Пример 4:  SELECT NAME, SURNAME FROM STUDENT WHERE SURNAME=’Петров’; Пример 4:  SELECT NAME, SURNAME FROM STUDENT WHERE SURNAME=’Петров’; В задаваемых Пример 5:  SELECT NAME, SURNAME FROM STUDENT WHERE KURS=3 AND STIPEND>0; Пример 5:  SELECT NAME, SURNAME FROM STUDENT WHERE KURS=3 AND STIPEND>0; Операторы IN и NOT ININ – равен любому из спискаNOT IN – Есть таблица EXAM_MARKS:EXAM_ID – идентификатор экзамена;STUDENT_ID – идентификатор студента;SUBJ_ID – идентификатор предмета Пример 1:  SELECT *  FROM EXAM_MARKS WHERE MARK IN(4,5); Результат запроса: Пример 2:  SELECT *  FROM EXAM_MARKS WHERE MARK NOT IN(4,5); Результат запроса: Оператор BETWEEN	Используется для проверки условия вхождения значения поля в заданный интервал, то Есть таблица SUBJECT:EXAM_ID – идентификатор экзамена;STUDENT_ID – идентификатор студента;SUBJ_ID – идентификатор предмета Пример :  SELECT *  FROM SUBJECT WHERE HOUR BETWEEN 30 AND 40; Результат запроса: Оператор LIKE	Применим только к символьным полям. 	Этот оператор просматривает строковые значения полей Пример :  SELECT * FROM  STUDENT WHERE  SURNAME LIKE ‘С%’; Оператор LIKE	В случае необходимости включения в образец самих символов «_» и «%» IS NULL используется для проверки на пустое значение.Пример :  SELECT * Числовые и символьные константы	Несмотря на то, что SQL работает с данными в Пример 1 :  SELECT SURNAME, NAME, STIPEND, -(STIPEND*KURS)/2 FROM STUDENT WHERE KURS=4 AND STIPEND>0; Можно использоваться следующие арифметические операции: унарный минус, +, -, *, /.Пример 1 Операция конкатенации «||» позволяет соединять значения двух или более столбцов символьного типа Агрегирование и групповые функции	Позволяют получать из таблицы сводную (агрегированную) информацию, выполняя операции Пример 1 :  SELECT AVG(MARK) , COUNT(*) FROM EXAM_MARKS; Результат запроса:SUM/nCOUNT GROUP BY	Предложение GROUP BY (группировать по) позволяет группировать записи в подмножества, определяемые Пример 2 :  SELECT STUDENT_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID; Результат запроса: Пример 3 :  SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID, SUBJ_ID; Пример 3 :  SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP Пример 4 :  SELECT  SUBJ_NAME, MAX(HOUR) FROM  SUBJECT GROUP Пустые значения в агрегирующих функциях	Если аргументом функции COUNT является столбец, содержащий пустое Условные операторы	При отсутствии пустых значений условные операторы возвращают либо TRUE либо FALSE. Условные операторыОператор NOT:	Обычный унарный оператор NOT обращает оценку FRUE в FALSE и ORDER BY	Записи в реляционной БД не упорядочены, однако в результате выполнения запроса, Пример 1:  SELECT *  FROM SUBJECT ORDER BY SUBJ_NAME; Результат запроса: Пример 1(по убыванию):  SELECT *  FROM SUBJECT ORDER BY SUBJ_NAME Пример 2:  SELECT *  FROM SUBJECT ORDER BY SEMESTER, SUBJ_NAME; Вложенные запросы	SQL позволяет использовать одни запросы внутри других запросов, то есть вкладывать запросы Вложенные запросы		В некоторых случаях для гарантии получения единственного значения выполнения подзапроса используется Пример: Известна фамилия студента (Петров), но неизвестно значение его идентификатора. SELECT * Пример 2 : Данные обо всех оценках студентов из Воронежа. SELECT * Пример 2 : Данные обо всех оценках студентов из Воронежа. SELECT * Пример 3: Определить количество предметов обучения с оценкой, превышающей среднее значение оценки Пример 3: Определить количество предметов обучения с оценкой, превышающей среднее значение оценки Формирование связанных подзапросов	При использовании подзапросов во внутреннем запросе можно ссылаться на таблицу, Пример 1: Выбрать сведения обо всех предметах обучения, по которым проводился экзамен В некоторых СУБД для выполнения этого запроса может потребоваться преобразование значения даты Пример 2: Найти студентов, которые получают стипендию выше средней на курсе. SELECT Пример: Найти студентов, которые получают стипендию выше средней на курсе. SELECT DISTINCT Второй вариант этой же задачи:SELECT DISTINCT STUDENT_ID, SURNAME, STIPENDFROM STUDENT E1, 	(SELECT Пример 3:  По данным из таблицы EXAM_MARKS определить сумму полученных студентами Предикат предложения HAVING оценивается не для каждой строки результата, а для каждой Оператор EXISTS	Генерирует значение истина или ложь. Используя подзапросы в качестве аргумента, этот Пример 1: Из таблицы студентов извлечь строки для каждого студента, сдавшего более Пример 1: Из таблицы студентов извлечь строки для каждого студента, сдавшего более Оператор UNION	Используется для объединения выходных данных двух или более SQL-запросов в единое Есть таблица LECTURER:LECTURER_ID – числовой код, идентифицирующий преподавателя;SURNAME – фамилия преподавателя;NAME – Пример 1: Получить в одной таблице фамилии и идентификаторы студентов и преподавателей Пример: Получить в одной таблице фамилии и идентификаторы студентов и преподавателей из В отличие от обычных запросов UNION автоматически исключает из выходных данных дубликаты Еще один пример использования UNION. Необходимо составить отчет, содержащий для каждой даты В приведенном запросе агрегирующие функции используются в подзапросах. Это является нетрадиционным с Предложение ORDER BY применяется для упорядочения выходных данных объединения запросов так же, Есть таблица UIVERSITY:UNIV_ID – идентификатор университета;UNIV_NAME – название университета;RATTING – рейтинг университета; Пример 1: Составить список студентов с указанием наименования университета для тех студентов, Пример 1: Составить список студентов с указанием наименования университета для тех студентов, Оператор JOIN	Если в операторе SELECT после ключевого слова FROM указывается не одна, Пример 1: Получить фамилии студентов и для каждого студента – названия университетов, Пример 1: Получить фамилии студентов и для каждого студента – названия университетов, Соединение, использующее предикаты, основанные на равенствах, называется эквисоединением.	Рассмотренный пример соединения таблиц относится Пример полного соединения таблиц с использованием JOIN:SELECT *FROM STUDENT JOIN UNIVERSITY;	В Access Операции объединения таблиц	Информация из таблиц студентов и экзаменационных оценок связана посредством поля SELECT SURNAME, MARK, SUBJ_ID FROM STUDENT, EXAM_MARKS WHERE STUDENT.STUDENT_ID = EXAM_MARKS.STUDENT_ID;С SELECT SUBJ_NAME, SURNAME, MARK FROM STUDENT, SUBJECT, EXAM_MARKS WHERE STUDENT.STUDENT_ID=EXAM_MARKS.STUDENT_ID AND Внешнее соединение таблиц	Получить записи о студентах с полученной оценкой и идентификатором предмета,
Слайды презентации

Слайд 2 SELECT -
команда запроса, который получает любое количество

SELECT - команда запроса, который получает любое количество данных из одного

данных из одного или нескольких отношений.
Результат запроса – другое

отношение.

Предложение SELECT может использоваться как:

самостоятельная команда на получение и вывод кортежей отношения;
в качестве вложенного подзапроса;
фраза выбора в командах определения схемы данных и модификации отношений;
средство присвоения глобальным переменным значений кортежей сформированного отношения (INTO-фраза).


Слайд 3 Упрощенный синтаксис SELECT
SELECT [DISTINCT]
FROM
[WHERE

Упрощенный синтаксис SELECTSELECT [DISTINCT] FROM [WHERE ][ORDER BY < список атрибутов

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

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




В [ ] необязательные элементы в запросе.

SELECT

<список атрибутов>

FROM

<список таблиц>

[

[

[

[

[

[

]

]

]

]

]

]

обязательно
в конце!

;

SELECT – запрос на извлечение информации;

<список атрибутов> - наименование полей, содержимое которых запрашивается (через запятую);

FROM – обязательное ключевое слово;

<список таблиц> - имена таблиц, из которых извлекается информация (через запятую).


Слайд 4 Есть таблица STUDENT:









STUDENT_ID – числовой код, идентифицирующий студента;
SURNAME

Есть таблица STUDENT:STUDENT_ID – числовой код, идентифицирующий студента;SURNAME – фамилия студента;NAME

– фамилия студента;
NAME – имя студента;
STIPEND – стипендия, которую

получает студент;
KURS – курс, на котором учиться студент;
CITY – город, в котором живет студент;
BIRTHDAY – дата рождения студента;
UNIV_ID – числовой код, идентифицирующий университет, в котором учиться студент.


Слайд 5 Пример 1: SELECT NAME, SURNAME FROM STUDENT;

Пример 1: SELECT NAME, SURNAME FROM STUDENT;

Слайд 6 Пример 1: SELECT NAME, SURNAME FROM STUDENT;
Осуществляет выборку всех значений

Пример 1: SELECT NAME, SURNAME FROM STUDENT; Осуществляет выборку всех значений

полей NAME и SURNAME из таблицы STUDENT.
Порядок следования

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

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


Слайд 7 В данном случает результатом выполнения будет таблица STUDENT

В данном случает результатом выполнения будет таблица STUDENT полностью.Пример 2: SELECT

полностью.
Пример 2: SELECT * FROM STUDENT;
*
Вывод значений всех столбцов таблицы


Слайд 8 Пример 3: SELECT CITY FROM STUDENT;

Пример 3: SELECT CITY FROM STUDENT;

Слайд 9 В полученной таблице несколько раз повторяется значение поля

В полученной таблице несколько раз повторяется значение поля CITY: Воронеж.Для того,

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

DISTINCT.

Пример 3: SELECT CITY FROM STUDENT;

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


Слайд 10 Получаемые в результате выполнения SQL-запроса таблицы не в

Получаемые в результате выполнения SQL-запроса таблицы не в полной мере отвечают

полной мере отвечают определению реляционного отношения: в них могут

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

Слайд 11
С помощью DISTINCT избавились от повторяющихся записей.

Пример 3

С помощью DISTINCT избавились от повторяющихся записей.Пример 3 (переделанный Пример 2):

(переделанный Пример 2): SELECT DISTINCT CITY FROM STUDENT;
Результат запроса:


Слайд 12 Вместо DISTINCT может использоваться ключевое слово ALL для

Вместо DISTINCT может использоваться ключевое слово ALL для вывода повторяющихся. Режим,

вывода повторяющихся. Режим, задаваемый ключевым словом ALL, действует по

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

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


Слайд 13 Пример 4: SELECT NAME, SURNAME FROM STUDENT WHERE SURNAME=’Петров’;

Пример 4: SELECT NAME, SURNAME FROM STUDENT WHERE SURNAME=’Петров’;

Слайд 14 Пример 4: SELECT NAME, SURNAME FROM STUDENT WHERE SURNAME=’Петров’;
В задаваемых в

Пример 4: SELECT NAME, SURNAME FROM STUDENT WHERE SURNAME=’Петров’; В задаваемых

предложении WHERE условиях могут использоваться операции сравнения, а также

логические операторы AND, OR, NOT.

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


Слайд 15 Пример 5: SELECT NAME, SURNAME FROM STUDENT WHERE KURS=3 AND STIPEND>0;

Пример 5: SELECT NAME, SURNAME FROM STUDENT WHERE KURS=3 AND STIPEND>0;

Слайд 16 Пример 5: SELECT NAME, SURNAME FROM STUDENT WHERE KURS=3 AND STIPEND>0;
Запрос

Пример 5: SELECT NAME, SURNAME FROM STUDENT WHERE KURS=3 AND STIPEND>0;

для получения имен и фамилий студентов, обучающихся на третьем

курсе и получающих стипендию.

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


Слайд 17 Операторы IN и NOT IN
IN – равен любому

Операторы IN и NOT ININ – равен любому из спискаNOT IN

из списка
NOT IN – не равен ни одному из

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

Слайд 18 Есть таблица EXAM_MARKS:










EXAM_ID – идентификатор экзамена;
STUDENT_ID – идентификатор

Есть таблица EXAM_MARKS:EXAM_ID – идентификатор экзамена;STUDENT_ID – идентификатор студента;SUBJ_ID – идентификатор

студента;
SUBJ_ID – идентификатор предмета обучения;
MARK – экзаменационная оценка;
EXAM_DATE –

дата экзамена.


Слайд 19 Пример 1: SELECT * FROM EXAM_MARKS WHERE MARK IN(4,5);
Результат запроса:

Пример 1: SELECT * FROM EXAM_MARKS WHERE MARK IN(4,5); Результат запроса:

Слайд 20 Пример 2: SELECT * FROM EXAM_MARKS WHERE MARK NOT IN(4,5);
Результат

Пример 2: SELECT * FROM EXAM_MARKS WHERE MARK NOT IN(4,5); Результат запроса:

запроса:


Слайд 21 Оператор BETWEEN
Используется для проверки условия вхождения значения поля

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

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

этот оператор задает границы его изменения.

Замечание! Граничные значения входят во множество значений, с которыми производится сравнение.


Слайд 22 Есть таблица SUBJECT:










EXAM_ID – идентификатор экзамена;
STUDENT_ID – идентификатор

Есть таблица SUBJECT:EXAM_ID – идентификатор экзамена;STUDENT_ID – идентификатор студента;SUBJ_ID – идентификатор

студента;
SUBJ_ID – идентификатор предмета обучения;
MARK – экзаменационная оценка;
EXAM_DATE –

дата экзамена.


Слайд 23 Пример : SELECT * FROM SUBJECT WHERE HOUR BETWEEN 30

Пример : SELECT * FROM SUBJECT WHERE HOUR BETWEEN 30 AND 40; Результат запроса:

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


Слайд 24 Оператор LIKE
Применим только к символьным полям.
Этот оператор

Оператор LIKE	Применим только к символьным полям. 	Этот оператор просматривает строковые значения

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

заданная в операторе LIKE строка (образец поиска) в символьную строку-значение проверяемого поля.
Для выборки строковых значений по заданному образцу подстроки можно применять шаблон искомого образца строки, использующий следующий символ:
«_» - определяет возможность наличия в указанном месте одного любого символа;
«%» - допускает присутствие в указанном месте проверяемой строки последовательности любых символов произвольной длины.

Слайд 25 Пример : SELECT * FROM STUDENT WHERE SURNAME LIKE

Пример : SELECT * FROM STUDENT WHERE SURNAME LIKE ‘С%’;

‘С%’;


Слайд 26 Оператор LIKE
В случае необходимости включения в образец самих

Оператор LIKE	В случае необходимости включения в образец самих символов «_» и

символов «_» и «%» применяют так называемые escape-символы.

LIKE

‘_\_P’ ESCAPE ‘_\’

В этом выражении символ '\' с помощью ключевого слова ESCAPE объявляется escape-символом. Первый символ «_» будет соответствовать, как и ранее, любому символу в проверяемой строке. Однако второй символ «_», следующий после символа «\», объявленного escape-символом, уже будет интерпретироваться буквально как обычный символ.

Слайд 27 IS NULL используется для проверки на пустое значение.
Пример

IS NULL используется для проверки на пустое значение.Пример : SELECT *

: SELECT * FROM STUDENT WHERE CITY IS NULL;



Слайд 28 Числовые и символьные константы
Несмотря на то, что SQL

Числовые и символьные константы	Несмотря на то, что SQL работает с данными

работает с данными в понятии строк и столбцов таблиц,

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

SELECT 'Фамилия', SURNAME, 'Имя', NAME, 100
FROM STUDENT;


Слайд 29 Пример 1 : SELECT SURNAME, NAME, STIPEND, -(STIPEND*KURS)/2 FROM STUDENT WHERE

Пример 1 : SELECT SURNAME, NAME, STIPEND, -(STIPEND*KURS)/2 FROM STUDENT WHERE KURS=4 AND STIPEND>0;

KURS=4 AND STIPEND>0;


Слайд 30 Можно использоваться следующие арифметические операции: унарный минус, +,

Можно использоваться следующие арифметические операции: унарный минус, +, -, *, /.Пример

-, *, /.
Пример 1 : SELECT SURNAME, NAME, STIPEND, -(STIPEND*KURS)/2 FROM

STUDENT WHERE KURS=4 AND STIPEND>0;

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


Слайд 31 Операция конкатенации «||» позволяет соединять значения двух или

Операция конкатенации «||» позволяет соединять значения двух или более столбцов символьного

более столбцов символьного типа или символьных констант в одну

строку.
В СУБД Access для этой цели в запросах SQL применяется символ «&».

Пример 2 : SELECT SURNAME || ‘_’ || NAME, STIPEND FROM STUDENT WHERE KURS=4 AND STIPEND>0;

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


Слайд 32 Агрегирование и групповые функции
Позволяют получать из таблицы сводную

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

(агрегированную) информацию, выполняя операции над группой строк таблицы.
COUNT

– определяет количество строк или значений поля и не являющихся NULL-значениями;
SUM – вычисляет арифметическую сумму;
AVG – вычисляет среднее значение;
MAX – вычисляет наибольшее из значений;
MIN – вычисляет наименьшее из значений;

В SELECT-запросе агрегирующие функции используются аналогично именам полей, при этом имена полей используются в качестве аргументов этих функций.

Слайд 33 Пример 1 : SELECT AVG(MARK) , COUNT(*) FROM EXAM_MARKS;
Результат запроса:
SUM/n
COUNT

Пример 1 : SELECT AVG(MARK) , COUNT(*) FROM EXAM_MARKS; Результат запроса:SUM/nCOUNT

Слайд 34 GROUP BY
Предложение GROUP BY (группировать по) позволяет группировать

GROUP BY	Предложение GROUP BY (группировать по) позволяет группировать записи в подмножества,

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

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

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


Слайд 35 Пример 2 : SELECT STUDENT_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY

Пример 2 : SELECT STUDENT_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID; Результат запроса:

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


Слайд 36 Пример 3 : SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP

Пример 3 : SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP BY STUDENT_ID, SUBJ_ID;

BY STUDENT_ID, SUBJ_ID;


Слайд 37 Пример 3 : SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP

Пример 3 : SELECT STUDENT_ID, SUBJ_ID, MAX (MARK) FROM EXAM_MARKS GROUP

BY STUDENT_ID, SUBJ_ID;
Результат запроса:
В данном случае строки вначале группируются

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


Слайд 38 Пример 4 : SELECT SUBJ_NAME, MAX(HOUR) FROM SUBJECT GROUP

Пример 4 : SELECT SUBJ_NAME, MAX(HOUR) FROM SUBJECT GROUP BY SUBJ_NAME;

BY SUBJ_NAME; HAVING MAX(HOUR)>=72;
Поскольку группы записей с количеством часов

больше 72 нет, то результатом выполнения этого запроса будет пустая таблица.

Слайд 39 Пустые значения в агрегирующих функциях
Если аргументом функции COUNT

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

является столбец, содержащий пустое значение, то COUNT вернет число

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

Слайд 40 Условные операторы
При отсутствии пустых значений условные операторы возвращают

Условные операторы	При отсутствии пустых значений условные операторы возвращают либо TRUE либо

либо TRUE либо FALSE. Если в столбце присутствуют пустые

значения, то может быть возвращено третье значение: UNKNOWN.
Оператор OR:
Если результат двух условий, объединенных OR известен, то применяются правила булевой логики;
Если результат одного утверждения TRUE, а второго – неизвестен, то результат будет TRUE;
Если результат одного утверждения FALSE, а второго – неизвестен, то результат будет неизвестен;
Если результат обоих утверждений неизвестен, то и результат будет UNKNOWN.


Слайд 41 Условные операторы
Оператор NOT:
Обычный унарный оператор NOT обращает оценку

Условные операторыОператор NOT:	Обычный унарный оператор NOT обращает оценку FRUE в FALSE

FRUE в FALSE и наоборот, но NOT NULL по

прежнем у будет возвращать пустое значение NULL. Следует отличать проверку IS NULL (IS NOT NULL).

Оператор AND:
Если результат двух условий, объединенных AND известен, то применяются правила булевой логики;
Если результат одного из утверждений UNKNOWN, а второго – TRUE, то состояние неизвестного утверждения является определяющим (т.е. результат будет UNKNOWN);
Если результат одного из утверждений UNKNOWN, а второго – FALSE, то результат будет FALSE;
Если результат обоих утверждений неизвестен, то и результат будет UNKNOWN

Слайд 42 ORDER BY
Записи в реляционной БД не упорядочены, однако

ORDER BY	Записи в реляционной БД не упорядочены, однако в результате выполнения

в результате выполнения запроса, данные можно упорядочить.
Для этого

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


Слайд 43 Пример 1: SELECT * FROM SUBJECT ORDER BY SUBJ_NAME;
Результат запроса:

Пример 1: SELECT * FROM SUBJECT ORDER BY SUBJ_NAME; Результат запроса:

Слайд 44 Пример 1(по убыванию): SELECT * FROM SUBJECT ORDER BY SUBJ_NAME

Пример 1(по убыванию): SELECT * FROM SUBJECT ORDER BY SUBJ_NAME DESC;

DESC;
Результат запроса:
Предыдущий запрос, упорядоченный по убыванию.


Слайд 45 Пример 2: SELECT * FROM SUBJECT ORDER BY SEMESTER, SUBJ_NAME;
Результат

Пример 2: SELECT * FROM SUBJECT ORDER BY SEMESTER, SUBJ_NAME; Результат

запроса:
Предложение ORDER BY может использоваться для упорядочения групп записей.

При этом оператор ORDER BY в запросе всегда должен быть последним.

Слайд 46 Вложенные запросы
SQL позволяет использовать одни запросы внутри других запросов,

Вложенные запросы	SQL позволяет использовать одни запросы внутри других запросов, то есть вкладывать

то есть вкладывать запросы друг в друга.

Алгоритм работы запроса

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

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

В некоторых случаях для гарантии получения единственного

Вложенные запросы		В некоторых случаях для гарантии получения единственного значения выполнения подзапроса

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

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

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


Слайд 49 Пример: Известна фамилия студента (Петров), но неизвестно значение его

Пример: Известна фамилия студента (Петров), но неизвестно значение его идентификатора. SELECT

идентификатора. SELECT * FROM EXAM_MARKS WHERE STUDENT_ID = (SELECT STUDENT_ID FROM STUDENT WHERE

SURNAME = ’Петров’);

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


Слайд 50 Пример 2 : Данные обо всех оценках студентов из

Пример 2 : Данные обо всех оценках студентов из Воронежа. SELECT

Воронежа. SELECT * FROM EXAM_MARKS WHERE STUDENT_ID IN (SELECT STUDENT_ID FROM STUDENT WHERE CITY =

‘Воронеж’);

Слайд 51 Пример 2 : Данные обо всех оценках студентов из

Пример 2 : Данные обо всех оценках студентов из Воронежа. SELECT

Воронежа. SELECT * FROM EXAM_MARKS WHERE STUDENT_ID IN (SELECT STUDENT_ID FROM STUDENT WHERE CITY =

‘Воронеж’);

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


Слайд 52 Пример 3: Определить количество предметов обучения с оценкой, превышающей

Пример 3: Определить количество предметов обучения с оценкой, превышающей среднее значение

среднее значение оценки студента с идентификатором 55. SELECT COUNT(SUBJ_ID), MARK FROM

EXAM_MARKS GROUP BY MARK HAVING MARK > (SELECT AVG(MARK) FROM EXAM_MARKS WHERE STUDENT_ID = 55);

5:2=2,5

2


Слайд 53 Пример 3: Определить количество предметов обучения с оценкой, превышающей

Пример 3: Определить количество предметов обучения с оценкой, превышающей среднее значение

среднее значение оценки студента с идентификатором 55. SELECT COUNT(SUBJ_ID), MARK FROM

EXAM_MARKS GROUP BY MARK HAVING MARK > (SELECT AVG(MARK) FROM EXAM_MARKS WHERE STUDENT_ID = 55);

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


Слайд 54 Формирование связанных подзапросов
При использовании подзапросов во внутреннем запросе

Формирование связанных подзапросов	При использовании подзапросов во внутреннем запросе можно ссылаться на

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

FROM внешнего запроса. В этом случае такой связанный подзапрос выполняется по одному разу для каждой строки таблицы основного запроса.


Слайд 55 Пример 1: Выбрать сведения обо всех предметах обучения, по

Пример 1: Выбрать сведения обо всех предметах обучения, по которым проводился

которым проводился экзамен 20 января 1999 года. SELECT * FROM SUBJECT

as SU WHERE ‘20/01/1999’ IN ( SELECT EXAM_DATE FROM EXAM_MARKS as EX WHERE SU.SUBJ_ID = EX.SUBJ_ID);

Слайд 56 В некоторых СУБД для выполнения этого запроса может

В некоторых СУБД для выполнения этого запроса может потребоваться преобразование значения

потребоваться преобразование значения даты в символьный тип. В приведенном

запросе SU и EX являются псевдонимами (алиасами).
Эту же операцию можно решить при помощи соединения таблиц:
SELECT SU.SUBJ_ID, SUBJ_NAME, HOUR, SEMESTER
FROM SUBJECT AS SU, EXAM_MARKS AS EX
WHERE SU.SUBJ_ID = EX.SUBJ_ID AND EX.EXAM_DATE = #20/01/1999#;

Пример 1: Выбрать сведения обо всех предметах обучения, по которым проводился экзамен 20 января 1999 года. SELECT * FROM SUBJECT AS SU WHERE ‘20/01/1999’ IN ( SELECT EXAM_DATE FROM EXAM_MARKS AS EX WHERE SU.SUBJ_ID = EX.SUBJ_ID);

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


Слайд 57 Пример 2: Найти студентов, которые получают стипендию выше средней

Пример 2: Найти студентов, которые получают стипендию выше средней на курсе.

на курсе. SELECT DISTINCT STUDENT_ID, SURNAME, NAME, STIPEND FROM STUDENT AS

E1 WHERE STIPEND> (SELECT AVG(STIPEND) FROM STUDENT AS E2 WHERE E1.KURS = E2.KURS);

AVG(STIPEND) – средняя стипендия по курсам
1 курс: 150:1=150; 2 курс: (250+0):2=125; 3 курс: (200+0+200):3=133;
4 курс: (150+200):2=175


Слайд 58
Пример: Найти студентов, которые получают стипендию выше средней на

Пример: Найти студентов, которые получают стипендию выше средней на курсе. SELECT

курсе. SELECT DISTINCT STUDENT_ID, SURNAME, NAME, STIPEND FROM STUDENT AS E1 WHERE

STIPEND> (SELECT AVG(STIPEND) FROM STUDENT AS E2 WHERE E1.KURS = E2.KURS);

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


Слайд 59 Второй вариант этой же задачи:
SELECT DISTINCT STUDENT_ID, SURNAME,

Второй вариант этой же задачи:SELECT DISTINCT STUDENT_ID, SURNAME, STIPENDFROM STUDENT E1,

STIPEND
FROM STUDENT E1,
(SELECT KURS, AVG(STIPEND) AS AVG_STIPEND
FROM STUDENT

E2
GROUP BY E2.KURS) E3
WHERE E1.STIPEND>AVG_STIPEND ANDE1.KURS=E3.KURS;

Пример: Найти студентов, которые получают стипендию выше средней на курсе. SELECT DISTINCT STUDENT_ID, SURNAME, NAME, STIPEND FROM STUDENT AS E1 WHERE STIPEND> (SELECT AVG(STIPEND) FROM STUDENT AS E2 WHERE E1.KURS = E2.KURS);


Слайд 60 Пример 3: По данным из таблицы EXAM_MARKS определить

Пример 3: По данным из таблицы EXAM_MARKS определить сумму полученных студентами

сумму полученных студентами оценок, сгруппировав значения оценок по датам

экзаменов и исключив те дни, когда число студентов было больше 10. SELECT EXAM_DATE, SUM(MARK) FROM EXAM_MARKS AS A GROUP BY EXAM_DATE HAVING 10 > (SELECT COUNT (MARK) FROM EXAM_MARKS AS B WHERE A.EXAM_DATE = B.EXAM_DATE);

Слайд 61 Предикат предложения HAVING оценивается не для каждой строки

Предикат предложения HAVING оценивается не для каждой строки результата, а для

результата, а для каждой группы выходных записей, сформированных предложением

GROUP BY внешнего запроса.

Пример 3: По данным из таблицы EXAM_MARKS определить сумму полученных студентами оценок, сгруппировав значения оценок по датам экзаменов и исключив те дни, когда число студентов было больше 10. SELECT EXAM_DATE, SUM(MARK) FROM EXAM_MARKS A GROUP BY EXAM_DATE HAVING 10 > (SELECT COUNT (MARK) FROM EXAM_MARKS B WHERE A.EXAM_DATE = B.EXAM_DATE);

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


Слайд 62 Оператор EXISTS
Генерирует значение истина или ложь. Используя подзапросы

Оператор EXISTS	Генерирует значение истина или ложь. Используя подзапросы в качестве аргумента,

в качестве аргумента, этот оператор оценивает результат выполнения подзапроса

как истинный, если этот подзапрос генерирует выходные данные. В противном случае результат подзапроса ложный. Оператор EXISTS не может принимать значения UNKNOWN.
При использовании связанных подзапросов предложение EXISTS анализирует каждую строку таблицы, на которую имеется ссылка во внешнем запросе. Главный запрос получает строки-кандидаты на проверку условия. Для каждой строки-кандидата выполняется подзапрос. Как только подзапрос находит строку, где в столбце значение удовлетворяет условию, он возвращает значение ИСТИНА внешнему запросу, который затем анализирует свою строку-кандидата.
Часто EXISTS применяется с оператором NOT. Тогда запрос интерпретируется, как «не существует».
Замечание! В подзапросе, указываемом в операторе EXIXTS нельзя применять агрегирующие функции.


Слайд 63 Пример 1: Из таблицы студентов извлечь строки для каждого

Пример 1: Из таблицы студентов извлечь строки для каждого студента, сдавшего

студента, сдавшего более одного предмета. SELECT * FROM STUDENT F WHERE EXISTS

(SELECT SUBJ_ID FROM EXAM_MARKS S WHERE F.STUDENT_ID=S.STUDENT_ID GROUP BY SUBJ_ID HAVING COUNT(SUBJ_ID)>1);

Слайд 64 Пример 1: Из таблицы студентов извлечь строки для каждого

Пример 1: Из таблицы студентов извлечь строки для каждого студента, сдавшего

студента, сдавшего более одного предмета. SELECT * FROM STUDENT AS F WHERE

EXISTS (SELECT SUBJ_ID FROM EXAM_MARKS AS S WHERE F.STUDENT_ID=S.STUDENT_ID GROUP BY SUBJ_ID HAVING COUNT(SUBJ_ID)>1);

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


Слайд 65 Оператор UNION
Используется для объединения выходных данных двух или

Оператор UNION	Используется для объединения выходных данных двух или более SQL-запросов в

более SQL-запросов в единое множество строк и столбцов.
Использование оператора

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


Слайд 66 Есть таблица LECTURER:









LECTURER_ID – числовой код, идентифицирующий преподавателя;
SURNAME

Есть таблица LECTURER:LECTURER_ID – числовой код, идентифицирующий преподавателя;SURNAME – фамилия преподавателя;NAME

– фамилия преподавателя;
NAME – имя преподавателя;
CITY – город, в

котором живет преподаватель;
BIRTHDAY – дата рождения студента;
UNIV_ID – числовой код, идентифицирующий университет, в котором преподает преподаватель.


Слайд 67 Пример 1: Получить в одной таблице фамилии и идентификаторы

Пример 1: Получить в одной таблице фамилии и идентификаторы студентов и

студентов и преподавателей из Москвы. SELECT ‘Студент_____’, SURNAME, STUDENT_ID FROM STUDENT WHERE

CITY = ‘Москва’ UNION SELECT ‘Преподаватель ’, SURNAME, LECTURER_ID FROM LECTURER WHERE CITY = ‘Москва’;

Слайд 68 Пример: Получить в одной таблице фамилии и идентификаторы студентов

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

и преподавателей из Москвы.
Результат запроса:
SELECT ‘Студент’ AS STATUS, SURNAME,

STUDENT_ID FROM STUDENT WHERE CITY = ‘Москва’ UNION SELECT ‘Преподаватель ’ AS STATUS, SURNAME, LECTURER_ID FROM LECTURER WHERE CITY = ‘Москва’;

Слайд 69 В отличие от обычных запросов UNION автоматически исключает

В отличие от обычных запросов UNION автоматически исключает из выходных данных

из выходных данных дубликаты строк, например в запросе:
SELECT CITY
FROM

STUDENT
UNION
SELECT CITY
FROM LECTURER;
Совпадающие наименования будут исключены..
Если все же необходимо в каждом запросе вывести все строки независимо от того, имеются ли такие же строки в других объединяемых запросах, то следует использовать во множественном запросе конструкцию с оператором UNION ALL.
SELECT CITY
FROM STUDENT
UNION ALL
SELECT CITY
FROM LECTURER;


Слайд 70 Еще один пример использования UNION. Необходимо составить отчет,

Еще один пример использования UNION. Необходимо составить отчет, содержащий для каждой

содержащий для каждой даты сдачи экзаменов сведения по каждому

студенту, получившему максимальную и минимальную оценки. SELECT ‘MAX MARK’, A.STUDENT_ID, SURNAME, MARK, EXAM_DATE FROM STUDENT A, EXAM_MARKS B WHERE (A.STUDENT_ID = B.STUDENT_ID AND B.MARK= (SELECT MAX(MARK) FROM EXAM_MARKS C WHERE C.EXAM_DATE = B.EXAM_DATE)) UNION ALL SELECT ‘MIN MARK’, A.STUDENT_ID, SURNAME, MARK, EXAM_DATE FROM STUDENT A, EXAM_MARKS B WHERE (A.STUDENT_ID = B.STUDENT_ID AND B.MARK= (SELECT MIN(MARK) FROM EXAM_MARKS C WHERE C.EXAM_DATE = B.EXAM_DATE));

Слайд 71 В приведенном запросе агрегирующие функции используются в подзапросах.

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

Это является нетрадиционным с точки зрения времени, затрачиваемого на

выполнение запроса. Более эффективна форма запроса, возвращающего аналогичный результат.
SELECT ‘MAX MARK’, A.STUDENT_ID, SURNAME, E.MARK, E.EXAM_DATE
FROM STUDENT A, (SELECT B.STUDENT_ID, B.MARK, B.EXAM_DATE
FROM EXAM_MARKS B,
(SELECT MAX(MARK) AS MAX_MARK, C.EXAM_DATE
FROM EXAM_MARKS C
GROUP BY C.EXAM_DATE) D
WHERE B.EXAM_DATE = D.EXAM_DATE AND B.MARK = MAX_MARK) E
WHERE A.STUDENT_ID = E.STUDENT_ID
UNION ALL
SELECT ‘MIN MARK’, A.STUDENT_ID, SURNAME, E.MARK, E.EXAM_DATE
FROM STUDENT A, (SELECT B.STUDENT_ID, B.MARK, B.EXAM_DATE
FROM EXAM_MARKS B,
(SELECT MIN(MARK) AS MIN_MARK, C.EXAM_DATE
FROM EXAM_MARKS C
GROUP BY C.EXAM_DATE) D
WHERE B.EXAM_DATE = D.EXAM_DATE AND
B.MARK = MIN_MARK) E
WHERE A.STUDENT_ID = E.STUDENT_ID;

Слайд 72 Предложение ORDER BY применяется для упорядочения выходных данных

Предложение ORDER BY применяется для упорядочения выходных данных объединения запросов так

объединения запросов так же, как и для отдельных запросов.
Модифицировать

предыдущий пример, добавив упорядочение по фамилиям студентов и датам экзаменов можно с помощью добавления последней строки в запрос
ORDER BY SURNAME, E.EXAM_DATE;

Слайд 73 Есть таблица UIVERSITY:










UNIV_ID – идентификатор университета;
UNIV_NAME – название

Есть таблица UIVERSITY:UNIV_ID – идентификатор университета;UNIV_NAME – название университета;RATTING – рейтинг

университета;
RATTING – рейтинг университета;
CITY – город, в котором

расположен университет.


Слайд 74 Пример 1: Составить список студентов с указанием наименования университета

Пример 1: Составить список студентов с указанием наименования университета для тех

для тех студентов, у которых эти данные есть, но

при этом не исключая и студентов, у которых университет не указан. SELECT SURNAME, NAME, UNIV_NAME FROM STUDENT, UNIVERSITY WHERE STUDENT.UNIV_ID = UNIVERSITY.UNIV_ID UNION SELECT SURNAME, NAME, ‘UNKNOWN UNIV’ FROM STUDENT WHERE UNIV_ID IS NULL ORDER BY 1;

Связь с таблицей
UNIVERSITY


Слайд 75 Пример 1: Составить список студентов с указанием наименования университета

Пример 1: Составить список студентов с указанием наименования университета для тех

для тех студентов, у которых эти данные есть, но

при этом не исключая и студентов, у которых университет не указан. SELECT SURNAME, NAME, UNIV_NAME FROM STUDENT, UNIVERSITY WHERE STUDENT.UNIV_ID = UNIVERSITY.UNIV_ID UNION SELECT SURNAME, NAME, ‘UNKNOWN UNIV’ FROM STUDENT WHERE UNIV_ID IS NULL ORDER BY 1;

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


Слайд 76 Оператор JOIN
Если в операторе SELECT после ключевого слова

Оператор JOIN	Если в операторе SELECT после ключевого слова FROM указывается не

FROM указывается не одна, а две таблицы, то в

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


Слайд 77 Пример 1: Получить фамилии студентов и для каждого студента

Пример 1: Получить фамилии студентов и для каждого студента – названия

– названия университетов, расположенных в городе, где живет студент.

Т.е. необходимо получить все комбинации записей о студентах и университетах в двух таблицах, в которых значение поля CITY совпадает. SELECT STUDENT.SURNAME, UNIVERSITY.UNIV_NAME, STUDENT.CITY FROM STUDENT, UNIVERSITY WHERE STUDENT.CITY = UNIVERSITY.CITY;

Слайд 78 Пример 1: Получить фамилии студентов и для каждого студента

Пример 1: Получить фамилии студентов и для каждого студента – названия

– названия университетов, расположенных в городе, где живет студент.

Т.е. необходимо получить все комбинации записей о студентах и университетах в двух таблицах, в которых значение поля CITY совпадает. SELECT STUDENT.SURNAME, UNIVERSITY.UNIV_NAME, STUDENT.CITY FROM STUDENT, UNIVERSITY WHERE STUDENT.CITY = UNIVERSITY.CITY;

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


Слайд 79 Соединение, использующее предикаты, основанные на равенствах, называется эквисоединением.
Рассмотренный

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

пример соединения таблиц относится к виду внутреннего (INNER) соединения.

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

SELECT STUDENT.SURNAME, UNIVERSITY.UNIV_NAME, STUDENT.CITY
FROM STUDENT INNER JOIN UNIVERSITY
ON STUDENT.CITY = UNIVERSITY.CITY;

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


Слайд 80 Пример полного соединения таблиц с использованием JOIN:

SELECT *
FROM

Пример полного соединения таблиц с использованием JOIN:SELECT *FROM STUDENT JOIN UNIVERSITY;	В

STUDENT JOIN UNIVERSITY;

В Access данный запрос не идет.
JOIN не

поддерживается в Oracle.

Слайд 81 Операции объединения таблиц
Информация из таблиц студентов и экзаменационных

Операции объединения таблиц	Информация из таблиц студентов и экзаменационных оценок связана посредством

оценок связана посредством поля STUDENT_ID. Причем в данном соединении

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


Слайд 82 SELECT SURNAME, MARK, SUBJ_ID FROM STUDENT, EXAM_MARKS WHERE STUDENT.STUDENT_ID =

SELECT SURNAME, MARK, SUBJ_ID FROM STUDENT, EXAM_MARKS WHERE STUDENT.STUDENT_ID =

EXAM_MARKS.STUDENT_ID;
С оператором JOIN:

SELECT SURNAME, MARK
FROM STUDENT INNER JOIN EXAM_MARKS

ON STUDENT.STUDENT_ID = EXAM_MARKS.STUDENT_ID;

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

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


Слайд 83 SELECT SUBJ_NAME, SURNAME, MARK FROM STUDENT, SUBJECT, EXAM_MARKS WHERE STUDENT.STUDENT_ID=EXAM_MARKS.STUDENT_ID AND

SELECT SUBJ_NAME, SURNAME, MARK FROM STUDENT, SUBJECT, EXAM_MARKS WHERE STUDENT.STUDENT_ID=EXAM_MARKS.STUDENT_ID

SUBJECT.SUBJ_ID = EXAM_MARKS.SUBJ_ID AND EXAM_MARKS.MARK = 3;
С оператором JOIN:

SELECT SUBJ_NAME,

SURNAME, MARK
FROM STUDENT INNER JOIN SUBJECT INNER JOIN EXAM_MARKS ON STUDENT.STUDENT_ID=EXAM_MARKS.STUDENT_ID AND SUBJECT.SUBJ_ID = EXAM_MARKX.SUBJ_ID AND EXAM_MARKS.MARK = 3;

Пример 2:
Найти фамилии всех студентов, получивших неудовлетворительную оценку, вместе с названиями предметов, по которым получена эта оценка.

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


  • Имя файла: vyborka-dannyh-s-ispolzovaniem-predlozheniya-select.pptx
  • Количество просмотров: 93
  • Количество скачиваний: 3