Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

методические указания по лабораторной работе / ПР3 SQL_SQL SELECT-ЗАПРОСЫ РАСШИРЕННЫЕ ВОЗМОЖНОСТИ

.doc
Скачиваний:
59
Добавлен:
29.01.2014
Размер:
39.42 Кб
Скачать

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/1984# AND #03/12/1985#;

2. СОСТАВНЫЕ ЗАПРОСЫ

В качестве источника данных (FROM) кроме таблиц возможно ис­пользование другого запроса SQL, который надо записать в круглых скобках после ключевого слова FROM.

Задание 4. Использование составного запроса.

SELECT DISTINCT Count (Город)

FROM Личные_данные;

Ключевое слово DISTINCT обрабатывает данные уже после выборки, поэтому SQL сначала вычислит количество строк в поле Город (функция Count), а затем к этой строке применит оператор DIS­TINCT, который ничего не сделает. Чтобы избежать этого, требуется разбить запрос на два.

Подсчитать количество городов в таблице Личные_данные.

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 Список.[Код]=Л.[Код_студента];