русс | укр

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

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

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

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


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

Особенности работы с оператором select


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


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

При использовании любого оператора языка SQL (HyTech) следует помнить, что все операторы языка вводятся нижним регистром.

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

Снимок делается автоматически при первом поиске по таблице. Текущий снимок можно отменить с помощью оператора fix. Для временных таблиц механизм снимков отключается. SQL оператор fix all отменяет текущий снимок у всех таблиц пользователя. При очередном поиске по таблице будет сделан новый снимок состояния.

Примеры работы с оператором select

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

select
a.LNAME as LNAME,
a.FNAME as FNAME,
a.MNAME as MNAME,
b.NAME as BOOKNAME
from
AUTHOR a, BOOK b
where
a.ID = b.ID_AUTHOR
order by
b.NAME;

Результат выборки приведен на рисунке 1.

Рисунок 1. Результат выборки

 

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

select
NAME as BOOKNAME,
PYEAR as PYEAR,
ID_PH as PHKEY
from
BOOK
where
ID_AUTHOR in
(select ID from AUTHOR where FNAME = 'Александр') and
ID_PH not in
(select ID from PHOUSE where NAME <> 'Просвещение')
order by
NAME;

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




Посчитаем количество книг, сгруппировав по автору:

select
count(b.ID) as BOOKCOUNT,
a.LNAME as AUTHOR
from
BOOK b, AUTHOR a
where
a.ID = b.ID_AUTHOR
group by
b.ID_AUTHOR;

Результаты выборки приведены на Рисунке 2.

 


Рисунок 2. Результат подсчета количества книг


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

Формат конструкции:

having Условие

Если Условие для группы выполняется, то группа остается для дальнейшего анализа, если Условие не выполняется, то вся группа отбрасывается.

Если в предложении select задаются одновременно конструкции where и having, то порядок выполнения следующий:

· Отбираются все записи, удовлетворяющие условию where;

· Из отобранных записей формируются группы;

· Для каждой группы вычисляются значения групповых функций;

· Отбираются группы, удовлетворяющие условию having.

Основное различие условий в конструкциях where и having следующее: условие where выполняется до группировки, а условие having выполняется после группировки.

Пример работы с конструкцией:

select
p.NAME as PUBLISHER,
count(b.ID) as BOOKCOUNT
from
BOOK b, PHOUSE p
where
b.PYEAR > 2000 and
b.ID_PH = p.ID
group by
p.NAME
having
count(b.ID) > 2;



<== предыдущая лекция | следующая лекция ==>
Оператор select | Объединение выборок


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


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

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

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


 


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

 
 

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

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