Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Посібник Мова SQL кредитно-модульний.doc
Скачиваний:
35
Добавлен:
01.05.2015
Размер:
1.25 Mб
Скачать

Обробка конструкцій where, group by і having

Розуміння вірної послідовності, у якій застосовуються конструкції WHERE, GROUP BY і HAVING, допомагає програмувати ефективні запити:

  • конструкція WHEREфільтрує рядки, які є результатом операцій, заданих у конструкціїFROM;

  • вихідна інформація конструкції WHEREгрупується за допомогою конструкціїGROUP BY;

  • рядки згрупованого результату фільтруються засобами конструкції HAVING.

Будь-які умови пошуку, які дозволяється застосовувати як до, так і після операції угруповання, варто вказувати в конструкції WHERE. У такий спосіб зменшують число рядків, які необхідно згрупувати. У конструкціїHAVINGварто вказувати тільки ті умови пошуку, які треба застосовувати після виконання операції угруповання.

Конструкція order by

Конструкція ORDER BYсортує результат запиту по одному або декількох полях. Сортування може бути як по зростанню(ASC),так і по убуванню(DESC).Якщо не заданий жоден з видів сортування, за замовчуванням передбачаєтьсяASC.Якщо в конструкціїORDER BYназвано кілька стовпців, виконується вкладене сортування. Наступний оператор сортує рядки таблиціTitlesспочатку за назвою видавництва (по убуванню), потім по типі (по зростанню, для кожного видавництва) і, нарешті, за ціною (також по зростанню, оскільки не заданий параметрDESC).

USE Pubs

SELECT Pub_id, Type, Title_id, Price

FROM Titles

ORDER BY Pub_id DESC, Type, Price

Приклад використання операторів SELECT для вибірки даних

У цій вправі ми скористаємося операторами SELECTдля витягу інформації з бази данихPubs. Кожний наступний операторSELECT необхідно будувати на основі попереднього, при цьому інформація, що входить у результуючий набір, усе більше конкретизується.

Витяг всіх даних з таблиці Titles

Уведемо наступні команди Transact-SQL вікні редактору запитів:

USE Pubs

SELECT * FROM Titles

Цей оператор визначає базу даних, де втримується потрібна для перегляду таблиця. Оператор SELECTвитягає всі дані з таблиціTitlesу базі данихPubs.Зірочка(*)у списку вибору вказує, що треба вибрати дані ізвсіхстовпців таблиці. Виконаємо оператор Transact-SQL. Результуючий набір виводиться на вкладціResults.

Одержання даних з певних стовпців таблиці Titles

У вікні редактору запитів уведемо наступний код Transact-SQL:

USE Pubs

SELECT Title_id, Title, Price, Ytd_sales

FROM Titles

Тут оператор SELECT витягає дані зі стовпців Title_id, Title, PriceіYtd_salesбази данихPub. Виконаємо оператор Transact-SQL. Результуючий набір виводиться на вкладціResults.

Завдання умови, якій повинен відповідати результуючий набір

Уведемо наступні команди Transact-SQL вікні редактору запитів:

USE Pubs

SELECT Titie_id, Title, Price, Ytd_sales

FROM Titles

WHERE Price > 10

Тепер оператор SELECTвитягне лише ті рядки, значення поляPriceяких перевищує $10. Виконаємо оператор Transact-SQL. Результуючий набір виводиться на вкладціResults.

Завдання порядку, у якому виводиться результуючий набір

Уведемо наступні команди Transact-SQL вікні редактору запитів:

USE Pubs

SELECT Title_id, Title, Price. Ytd_sales

FROM Titles

WHERE Price > 10

ORDER BY Price DESC, Title

Результуючий набір, що поверне цей оператор SELECT, упорядковується спочатку за ціною (по убуванню), а потім по заголовку (по зростанню). Виконаємо оператор Transact-SQL. Результуючий набір виводиться на вкладціResults.