русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Возможности языка запросов


Дата добавления: 2015-07-09; просмотров: 575; Нарушение авторских прав


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

Рассмотрим сначала задачи по выбору данных из одной таблицы[1]:

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

SELECT Наименование, Цена, Количество, Цена * Количество AS Стоимость FROM Товары

· сортировать результат по какому-либо (каким-либо) из полей. Для этого используется служебное слово ORDER BY. Пусть, например, в таблице Студенты имеются текстовые поля Фамилия, Имя, Отчество, Пол, Группа и числовые поля Курс и ГодРождения. Результатом выполнения следующего выражения будет список всех студентов по порядку групп, а внутри каждой группы по алфавиту:

SELECT Фамилия, Имя, Отчество, ГодРождения, Пол, Курс, Группа FROM Студенты ORDER BY Группа, Фамилия, Имя, Отчество

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

SELECT Фамилия, Имя, Отчество, ГодРождения, Пол, Курс, Группа FROM Студенты ORDER BY ГодРождения DESC, Фамилия, Имя, Отчество

Служебное слово DESC означает сортировку по убыванию. Для сортировки по возрастанию используется служебное слово ASC. Если ни одно из служебных слов не указано, подразумевается сортировка по возрастанию.

· получить вместо выборки данных некоторые итоговые результаты. Для этого используются, так называемые, агрегатные функции: COUNT (общее число записей), SUM (сумма значений поля), MAX (максимальное значение поля), MIN (минимальное значение поля), AVG (среднее значение поля). Перечисленные итоги можно получить для всей таблицы сразу, например, общее число студентов в таблице Студенты:



SELECT COUNT(*) AS ЧислоСтудентов FROM Студенты

или максимальное и минимальное значения года рождения:

SELECT MAX(ГодРождения) AS MaxГод, MIN(ГодРождения) AS MinГод FROM Студенты

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

Часто возникает задача не просто пересчитать студентов в таблице, а пересчитать студентов на всех курсах или во всех группах. Тогда помимо агрегатной функции понадобится еще группировка студентов по курсам или группам.

SELECT Курс, COUNT(Курс) AS ЧислоСтудентов FROM Студенты GROUP BY Курс

Результатом выполнения данного выражения будет таблица, содержащая 2 поля – Курс и ЧислоСтудентов. Число записей в этой таблице будет равно числу различных курсов.

Аналогично можно определить максимальное и минимальное значения года рождения студентов на каждом курсе:

SELECT Курс, MAX(ГодРождения) AS MaxГод, MIN(ГодРождения) AS MinГод FROM Студенты GROUP BY Курс

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

SELECT Группа, COUNT(Группа) AS ЧислоСтудентов FROM Студенты GROUP BY Группа HAVING COUNT(Группа) > 25

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

SELECT Группа, COUNT(Группа) AS ЧислоСтудентов FROM Студенты WHEREПол = “М” GROUP BY Группа HAVING COUNT(Группа) > 25

Теперь рассмотрим задачи по выбору данных из двух и более таблиц.

Мы уже рассмотрели эквисоединение (конструкция INNER JOIN … ON). Такой запрос в комбинации с проекцией и/или селекцией встречается наиболее часто.

Конструкция INNER JOIN … ON объединяет все записи таблиц, в которых значение объединяющего поля совпадает. В языке SQL есть две других разновидности этой конструкции – LEFT JOIN … ON и RIGHT JOIN … ON, которые называют левым и правым внешними соединениями.

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

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


[1] Все рассмотренные в этом разделе возможности сохраняются и при выборе данных из нескольких таблиц.



<== предыдущая лекция | следующая лекция ==>
Реляционная полнота языка запросов | Анализ проекта на риск


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 3.133 сек.