SQL: SELECT-ЗАПРОСЫ РАСШИРЕННЫЕ ВОЗМОЖНОСТИ
Методические указания к лабораторной работе по курсу «Автоматизированные информационно-управляющие системы»
Балаково 2006
ЦЕЛИ РАБОТЫ:
· Научиться применять некоторые расширенные возможности языка SQL;
· Научиться составлять составные SQL-запросы и запросы из нескольких таблиц.
1. РАСШИРЕННЫЕ ВОЗМОЖНОСТИ
Задание 1. Столбцы-выражения.
В SQL-запросах кроме названия полей и агрегирующих функций возможно применять переменные, значение которых надо будет ввести при выводе запроса на экран. Эти переменные можно использовать как для расчетов (арифметические выражения, в том числе со значениями поля таблицы), так и для вывода дополнительного поля с указанным значением. В данном примере выводятся столбцы с символами «+» и «=» в каждой строке, а также с рассчитанным по формуле значением.
SELECT КодСтудента, Физика, ‘+’, Математика, ‘+’, Информатика,’=’,(Физика+Математика+Информатика)/К
FROM [Личные данные];
В этом запросе перед выполнением появится окно для ввода значения переменной К (количество предметов, поставить равным 3).
Задание 2. Названия столбцов.
В случае необходимости переименования столбцов вывода запроса используется оператор AS и новое имя столбца. Таким же образом можно дать имя столбцу-выражению (вместо Exprl001).
SELECT Физика AS [Оценка по физике]
FROM [Личные данные];
Задание 3. Работа с датами.
Синтаксис языка SQL позволяет указывать даты в запросе, например,
в качестве условия выборки.
Например, 1 января 2000 года на SQL запишется #01/01/2000#
Обратите внимание, что в SQL в записи даты первым идет месяц, а
потом число: 24 декабря 2005 года = #12/24/2005#.
SELECT Фамилия, Имя, Дата_рождения
FROM Список
WHERE Дата_Рождения BETWEEN #01/10/1986# AND #03/12/1987#;
2. СОСТАВНЫЕ ЗАПРОСЫ
В качестве источника данных (FROM) кроме таблиц возможно использование другого запроса SQL, который надо записать в круглых скобках после ключевого слова FROM.
Задание 4. Использование составного запроса.
SELECT DISTINCT Count (Город)
FROM Личные_данные;
Ключевое слово DISTINCT обрабатывает данные уже после выборки, поэтому SQL сначала вычислит количество строк в поле Город (функция Count), а затем к этой строке применит оператор DISTINCT, который ничего не сделает. Чтобы избежать этого, требуется разбить запрос на два.
Подсчитать количество городов в таблице Личные_данные.
SELECT Count(Город)
FROM (SELECT DISTINCT Город FROM [Личные данные]);
Задание 5. Подзапрос в операторе IN.
Подзапрос можно использовать не только в качестве источника строк
в фразе FROM. Подзапрос может быть использован в операторе IN.
SELECT Фамилия
FROM Список
WHERE Код IN (SELECT [КодСтудента]
FROM [Личные данные] WHERE Физика = 5);
3. ЗАПРОСЫ ИЗ НЕСКОЛЬКИХ ТАБЛИЦ
Задание 6. Запрос из нескольких таблиц.
Если задать запрос, в котором вывести поля из двух таблиц, то SQL выведет значения этих полей во всех возможных комбинациях. Например, если выводятся поля из таблиц, содержащих 5 строк и 15 строк, то в запросе будет выведено 45 строк.
Для устранения этого необходимо ввести проверку на совпадение полей, связывающих эти таблицы.
SELECT Фамилия AS SURNAME, Физика AS [Оценка по физике]
FROM Список, [Личные данные]
WHERE Список.Код=[Личные данные].[КодСтудента];
Задание 7. Использование псевдонимов.
Псевдоним - это синоним таблицы, время существования которого ограничено одним запросом. Чаще всего служит для придания лаконичности и читаемости текста запроса. Псевдоним задается во фразе FROM запроса через пробел после имени таблицы или вложенного запроса.
SELECT Список.Фамилия, Л.КодСтудента, город
FROM Список, (SELECT * FROM [Личные данные] WHERE физика<4) Л
WHERE Список.Код=[Личные данные].КодСтудента;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.