Задания:
Вывести данные из таблицы DANNIE.
Вывести данные из таблицы DISCHIPLINA.
Вывести фамилии всех студентов.
Вывести названия всех групп.
Вывести фамилии, имена, телефоны, паспортные данные студентов.
Вывести фамилии родителей и телефоны.
Вывести названия городов, названия улиц.
Вывести названия предметов и фамилии преподавателей.
Вывести фамилии и дату рождения студентов, переименовав поле DATE_ROGNEN в ДЕНЬ_РОЖДЕНИЯ.
Вывести названия улиц, переименовав поле NAZVANIE в УЛИЦЫ.
Вывести список улиц, исключив повторяющиеся значения.
Вывести различные имена студентов.
Вывести первую в списке специальность.
Вывести с 6 по 10 строки таблицы RODITELI.
Лабораторная работа №3 Уточнения запросов
Цель работы: Научиться создавать запросы с условием, в т.ч. с использованием логических операторов, сортировать данные по возрастанию и убыванию.
Ключевые слова: операторы WHERE, GROUP BY, ORDER BY, HAVING ,IN, BETWEEN, LIKE, is NULL.
Теоретический материал:
Использование в операторе SELECT предложения, определяемого ключевым словом WHERE (где), позволяет задавать выражение условия (предикат), принимающее значение истина или ложь для значений полей строк таблиц, к которым обращается оператор SELECT. Предложение WHERE определяет, какие строки указанных таблиц должны быть выбраны. В таблицу, являющуюся результатом запроса, включаются только те строки, для которых условие (предикат), указанное в предложении WHERE, принимает значение истина.
В задаваемых в предложении WHERE условиях могут использоваться операции сравнения, определяемые операторами = (равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно), <> (не равно), а также логические операторы AND, OR и NOT.
Выбрать студентов 3 группы.
SELECT * FROM DANNIE WHERE KOD_GRUPPY=3
Вывести родителей, работающих водителями и поварами.
SELECT FIO_ROD FROM RODITELI WHERE RABOTA=’ВОДИТЕЛЬ’ OR RABOTA=’ПОВАР’
Оператор GROUP BY (группировать по) служит для группировки записей по значениям одного или нескольких столбцов. Он собирает записи в группы и упорядочивает группы по алфавиту (точнее по ASCII- кодам символов).
Вывести родителей студентов сгруппированных по месту работы.
SELECT RABOTA, FIO_ROD FROM RODITELI GROUP BY RABOTA
Оператор HAVING (имеющие, при условии) обычно применяются совместно с оператором группировки GROUP BY и задает фильтр записей в группах
Вывести родителей студентов сгруппированных по месту работы, если они водители или учителя.
SELECT RABOTA, FIO_ROD FROM RODITELI GROUP BY RABOTA HAVING (RABOTA=‘ВОДИТЕЛЬ’) OR (RABOTA=’УЧИТЕЛЬ’)
При задании логического условия в предложении WHERE могут быть использованы операторы IN, BETWEEN, LIKE, IS NULL.
Операторы IN (равен любому из списка) и NOT IN (не равен ни одному из списка) используются для сравнения проверяемого значения поля с заданным списком. Этот список значений указывается в скобках справа от оператора IN.
Построенный с использованием IN предикат (условие) считается истинным, если значение поля, имя которого указано слева от IN, совпадает (подразумевается точное совпадение) с одним из значений, перечисленных в списке, указанном в скобках справа от IN.
Предикат, построенный с использованием NOT IN, считается истинным, если значение поля, имя которого указано слева от NOT IN, не совпадает ни с одним из значений, перечисленных в списке, указанном в скобках справа от NOT IN.
Вывести родителей, работающих водителями и поварами.
SELECT FIO_ROD FROM RODITELI WHERE RABOTA IN (‘ВОДИТЕЛЬ’, ’ПОВАР’)
Вывести всех родителей, кроме работающих учителями и врачами.
SELECT FIO_ROD FROM RODITELI WHERE RABOTA NOT IN (‘УЧИТЕЛЬ’, ’ВРАЧ’)
Оператор BETWEEN используется для проверки условия вхождения значения поля в заданный интервал, то есть вместо списка значений атрибута этот оператор задает границы его изменения.
Вывести информацию о родителях с кодом от 2 до 9:
SELECT * FROM RODITELI WHERE KOD_RODITEL BETWEEN 2 AND 10;
Левая граница (в данном случае 2) входит во множество значений, с которыми производится сравнение, правая граница (в данном случае 10) не входит. Оператор BETWEEN может использоваться как для числовых, так и для символьных типов полей.
Вывести фамилии родителей, заглавные буквы которых находятся в диапозоне от А до И.
SELECT * FROM RODITELI WHERE FAM BETWEEN ‘А’ AND ‘К’;
Оператор LIKE (поиск значений, удовлетворяющих образцу) просматривает строковые значения полей с целью определения, входит ли заданная в операторе LIKE подстрока (образец поиска) в символьную строку-значение проверяемого поля.
Для выборки строковых значений по заданному образцу подстроки можно применять шаблон искомого образца строки, использующий следующие символы:
• символ подчеркивания «_», указанный в шаблоне, определяет возможность наличия в указанном месте одного любого символа;
• символ «%» допускает присутствие в указанном месте проверяемой строки последовательности любых символов произвольной длины.
Этот оператор применим только к символьным полям типа CHAR или VARCHAR.
Выбрать сведения о родителях, фамилии которых начинаются на букву «П».
SELECT * FROM RODITELI WHERE FAM LIKE 'П%'
Оператор IS NULL выводит строки, содержащие значение NULL в проверяемом поле.
Выбрать записи, содержащие пустые значения в данных о работе родителей.
SELECT * FROM RODITELI WHERE RABOTA IS NULL;
Для сортировки в SQL существует ключевое слово ORDER BY, после которого указывается имя столбца, по которому будет происходить сортировка. Команда имеет следующий синтаксис:
SELECT <поля> FROM <таблица> ORDER BY <поле>
|
После ORDER BY <поле> можно указать направление сортировки. По умолчанию записи сортируются по возрастанию (ASC), ключевое слово DESC задает сортировку в порядке, обратном алфавитному.
Отсортировать фамилии родителей в алфавитном порядке.
SELECT FIO_ROD FROM RODITELI ORDER BY FIO_ROD
Отсортировать место работы родителей в порядке, обратном алфавитному.
SELECT RABOTA FROM RODITELI ORDER BY RABOTA DESC
Сортировку можно производить сразу по нескольким столбцам. В этом случае сортировка идет сначала по первому полю в указанном направлении, а если в этом столбце есть одинаковые значения, то они будут отсортированы по второму полю.
Отсортировать место работы родителей в алфавитном порядке, а фамилии в порядке, обратном алфавитному.
SELECT FIO_ROD , RABOTA FROM RODITELI ORDER BY FIO_ROD, FIO_ROD DESC;
Достарыңызбен бөлісу: |