Використання sql для добування інформації з таблиць

У цьому розділі ми покажемо вам, як витягувати інформацію з таблиць. Ви дізнаєтеся, як пропускати або змінювати порядок стовпці і як автоматично усувати надмірність даних в вашому виведення. На закінчення ви дізнаєтеся, як встановлювати умова (перевірку), яку ви можете використовувати, щоб визначити, які рядки таблиці використовуються у висновку. Ця остання особливість буде далі описана в більш пізніх розділах і є однією з найбільш витончених і потужних в SQL.

СТВОРЕННЯ ЗАПИТУ

ЩО ТАКЕ ЗАПИТ?

Запит це команда, яку ви даєте вашій програмі бази даних і яка повідомляє їй, що потрібно вивести певну інформацію з таблиць в пам'ять. Ця інформація зазвичай надсилається безпосередньо на екран комп'ютера або терміналу, яким ви користуєтеся, хоча в більшості випадків її можна також надіслати на принтер, зберегти в файлі (як об'єкт в пам'яті комп'ютера) або надати як вступну інформацію для іншої команди або процесу.

ДЕ ЗАСТОСОВУЮТЬСЯ ЗАПИТИ?

Будь-який запит SQL має в своєму складі одну команду. Структура цієї команди оманливе проста, тому що ви можете розширювати її так, щоб виконати складні оцінки і обробку даних. Ця команда називається SELECT (ВИБРАТИ).

КОМАНДА SELECT

У найпростішій формі команда SELECT просто інструктує БД, щоб отримати інформацію з таблиці. Наприклад, ви могли б вивести таблицю Продавців, надрукувавши наступне:

Висновок для цього запиту показаний на рисунку 3.1.

Іншими словами, ця команда просто виводить всі дані з таблиці. Більшість програм будуть також давати заголовки стовпця, як вище, а деякі дозволяють визначити детальне форматування виводу, але це вже поза стандартної специфікації.

Ось пояснення кожної частини цієї команди:

SELECT Ключове слово, яке повідомляє базі даних, що ця команда - запит. Всі запити починаються цим словом з подальшим пропуском. snum, sname Це список стовпців з таблиці, які вибираються запитом. Будь-які стовпці, не перераховані тут, не будуть включені в висновок команди. Це, звичайно, не означає, що вони будуть видалені або їх інформація буде стерта з таблиць, адже запит не вплине на інформацію в таблицях; він тільки показує дані. FROM Salespeople FROM - ключове слово, подібне SELECT, яке повинно бути представлено в кожному запиті. Воно супроводжується пропуском і ім'ям таблиці, використовуваної в якості джерела інформації. В даному випадку це таблиця Продавців (Salespeople). ; Крапка з комою використовується у всіх інтерактивних командах SQL, щоб повідомляти базі даних, що команда записана і готова до виконання. У деяких системах індикатором кінця команди є зворотний слеш (\) в рядку.

Природно, запит такого характеру не обов'язково буде впорядковувати висновок будь-яким зазначеним способом. Та ж сама команда, виконана з тими ж самими даними, але в інший час, не зможе вивести той же самий замовлення. Зазвичай рядки виявляються в тому порядку, в якому вони знайдені в таблиці, оскільки, як ми встановили в попередньому розділі, цей порядок довільний. Це не обов'язково буде той порядок, в якому дані вводилися або зберігалися. Ви можете впорядковувати висновок безпосередньо командами SQL за допомогою спеціальної пропозиції. Пізніше ми покажемо, як це робиться. А зараз просто запам'ятайте, що, за відсутності явного впорядковування, в вашому висновку немає ніякого певного порядку.

Використання повернення каретки (клавіша ENTER) є довільним. Ми повинні точно встановити, як зручніше скласти запит - в кілька рядків або в один рядок - в такий спосіб:

З тих пір як SQL використовує крапку з комою, щоб вказувати кінець команди, більшість програм SQL обробляють повернення каретки (через натискання Повернення або клавіші ENTER) як пропуск. Хороша ідея - використовувати повернення каретки і вирівнювання, як ми робили раніше, щоб зробити ваші команди більш легкими для читання та зрозумілішими.

Вибирайте ЗАВЖДИ НАЙБІЛЬШИЙ ПРОСТИЙ СПОСІБ

Якщо ви хочете бачити всі стовпці таблиці, є необов'язкове скорочення, яке ви можете використовувати. Зірочка (*) може застосовуватися для виведення повного списку стовпців наступним чином:

Це призведе до того ж результату, що і наша попередня команда.

ОПИС SELECT

У загальному випадку команда SELECT починається з ключового слова SELECT, супроводжуваного прогалиною. Після цього повинен слідувати список імен стовпців, які ви хочете бачити, відокремлюваних комами. Якщо ви хочете бачити всі стовпці таблиці, ви можете замінити цей список зірочкою (*). Ключове слово FROM, наступне далі, супроводжується пропуском і ім'ям таблиці, запит до якої робиться. В кінці повинна використовуватися крапка з комою (;) для закінчення запиту і вказівки на те, що команда готова до виконання.

Команда SELECT здатна витягти строго певну інформацію з таблиці. Спочатку ми можемо надати можливість побачити тільки опредёленние стовпці таблиці. Це виконується легко: простим винятком стовпців, які ви не хочете бачити, з команди SELECT. Наприклад, запит

буде виробляти висновок, показаний на рисунку 3.2.

Можуть бути таблиці, які мають велику кількість стовпців, що містять дані, не всі з яких потрібні для виконання поставленого завдання. Отже, ви можете знайти спосіб підбору і вибору тільки корисних для вас стовпців.

Перегрупування стовпців

Навіть якщо стовпчики таблиці, за визначенням, впорядковані, це не означає, що ви будете відновлювати їх у тому ж порядку. Звичайно, зірочка (*) покаже всі стовпці в їх природному порядку, але якщо ви вкажете стовпці окремо, ви можете отримати їх у тому порядку, в якому хочете. Давайте розглянемо таблицю Замовлень, що містить дату придбання (odate), номер продавця (snum), номер замовлення (onum) і суми придбання (amt):

Висновок цього запиту показаний на рисунку 3.3.

Як бачите, структура інформації в таблицях це просто основа для активної перебудови структури в SQL.

ВИДАЛЕННЯ НАДЛИШКОВИХ ДАНИХ

DISTINCT (ВІДМІНУ) - аргумент, який забезпечує вас способом усувати дублюючі значення з вашої пропозиції SELECT. Припустимо, що ви хочете знати, які продавці в даний час мають свої замовлення в таблиці Замовлень. Під замовленням (тут і далі) буде розумітися запис в таблицю Замовлень, яка реєструє придбання, зроблені в певний день певним замовником у певного продавця на певну суму. Вам не потрібно знати, скільки замовлень має кожен; вам потрібен тільки список номерів продавців (snum). Тому ви можете ввести:

для отримання висновку показаного в рисунку 3.4

Для отримання списку без дублікатів, для зручності читання, ви можете ввести наступне:

Висновок для цього запиту показаний на рисунку 3.5.

Іншими словами, DISTINCT стежить за тим, які значення були раніше, щоб вони не дублювалися в списку. Це корисний спосіб уникнути надмірності даних, але важливо, щоб при цьому ви розуміли, що ви робите. Якщо ви не хочете втратити деякі дані, ви не повинні безоглядно використовувати DISTINCT, тому що це може приховати якусь проблему або якісь важливі дані. Наприклад, ви могли б припустити, що імена всіх ваших замовників різні. Якщо хтось поміщає другого Clemens в таблицю Замовників, а ви використовуєте SELECT DISTINCT cname, ви не будете навіть знати про існування двійника. Ви можете отримати не ту Clemens і навіть не знати про це. Так як ви не очікуєте надмірності, в цьому випадку ви не повинні використовувати DISTINCT.

ПАРАМЕТРИ DISTINCT

DISTINCT може вказуватися тільки один раз в даній пропозиції SELECT. Якщо пропозиція вибирає кілька полів,

DISTINCT опускає рядки, де всі вибрані поля ідентичні. Рядки, в яких деякі значення однакові, а деякі - різні, будуть збережені. DISTINCT фактично призводить до показу всього рядка висновку, не вказуючи полів (за винятком випадків, коли він використовується всередині агрегатних функцій, як описано в Главі 6), так що немає ніякого сенсу його повторювати.

ALL ЗАМІСТЬ DISTINCT

Замість DISTINCT ви можете вказати ALL. Це буде мати протилежний ефект, дублювання рядків виводу збережеться. Так як це - той самий випадок, коли ви не вказуєте ні DISTINCT ні ALL, то ALL - по суті швидше пояснювальний, а не чинний аргумент.

КВАЛІФІКОВАНИЙ ВИБІР ПРИ ВИКОРИСТАННІ ПРОПОЗИЦІЙ

Таблиця має тенденцію ставати дуже великий, оскільки з плином часу все більша і більша кількість рядків в неї додається. Оскільки зазвичай тільки певні рядки цікавлять вас в даний час, SQL дає можливість встановлювати критерії, щоб визначити, які рядки будуть обрані для виведення.

WHERE - пропозиція команди SELECT, яке дозволяє встановлювати предикати, умова яких може бути або вірним (true), або невірним (false) для будь-якого рядка таблиці. Команда витягує тільки ті рядки з таблиці, для яких таке твердження вірне. Наприклад, припустимо, ви хочете бачити імена і комісійні всіх продавців в Лондоні. Ви можете ввести таку команду:

Коли пропозиція WHERE надано, програма бази даних переглядає всю таблицю по рядках та досліджує кожен рядок, щоб визначити, чи вірно твердження. Отже, для запису Peel програма розгляне поточне значення стовпця city, визначить, що воно дорівнює "London", і включить цей рядок в висновок. Запис для Serres не буде активована, і так далі. Висновок для вищезгаданого запиту показаний на рисунку 3.6.

Давайте спробуємо приклад з числовим полем в реченні WHERE. Поле rating таблиці Замовників призначене для того, щоб розділяти замовників на групи, засновані на певних умовах, які можуть бути отримані в результаті через цей номер. Можливо це - форма оцінки кредиту або оцінки, заснованої на обсязі попередніх придбань. Такі числові коди можуть бути корисні в реляційних базах даних як спосіб підведення підсумків складної інформації. Ми можемо вибрати всіх замовників з рейтингом 100 наступним чином:

Одиничні лапки не використовуються тут, тому що оцінка це числове поле. Результати запиту показані на рисунку 3. 7.

Пропозиція WHERE сумісно з попереднім матеріалом в цьому розділі. Іншими словами, ви можете використовувати номери стовпців, усувати дублікати або змінювати порядок стовпці в команді SELECT, яка використовує WHERE. Однак ви можете змінювати порядок стовпців для імен тільки в реченні SELECT, але не в реченні WHERE.

Найбільш важливим є те, що ви можете встановлювати умова, зване предикатом, яке визначає або не визначає, з тисяч таких же рядків, чи буде обрана для виведення зазначена рядок.

Предикати можуть ставати дуже складними, надаючи вам високу точність у вирішенні того, які рядки вам вибирати за допомогою запиту. Саме ця здатність вирішувати точно, що ви хочете бачити, робить запити SQL такими потужними. Наступні кілька глав будуть присвячені в більшій мірі особливостям, які розширюють потужність предикатів. У розділі 4 вам будуть представлені операції, інші, ніж ті, які використовуються в умовах предиката, а також способи об'єднання численних умов в єдиний предикат.

Робота із SQL

Схожі статті