В ЦІЙ ЧОЛІ МИ ПОКАЖЕМО ВАМ як витягати інформацію з таблиць. Ви дізнаєтеся як опускати або змінювати порядок стовпці і як автоматично усувати надмірність даних з вашого виведення. На закінчення, ви дізнаєтеся як встановлювати умова (перевірку), які Ви можете використовувати щоб визначити які рядки таблиці використовуються у висновку. Ця остання особливість, буде далі описана в більш пізніх розділах і є однією з найбільш витончених і потужних в SQL.
СТВОРЕННЯ ЗАПИТУ
ЩО ТАКЕ ЗАПИТ?
Запит - команда яку ви даєте вашій програмі бази даних, і яка повідомляє їй щоб вона вивела певну інформацію з таблиць в пам'ять. Ця інформація зазвичай надсилається безпосередньо на екран комп'ютера або терміналу яким ви користуєтеся, хоча, в більшості випадків, її можна також надіслати принтеру, зберегти в файлі (як об'єкт в пам'яті комп'ютера), або уявити як вступну інформацію для іншої команди або процесу.
ДЕ ЗАСТОСОВУЮТЬСЯ ЗАПИТИ?
Всі запити в SQL складаються з одиночної команди. Структура цієї команди оманливе проста, тому що ви повинні розширювати її так щоб виконати високо складні оцінки і обробки даних. Ця команда називається - SELECT (ВИБІР).
КОМАНДА SELECT
У найпростішій формі, команда SELECT просто інструктує базу даних щоб витягти інформацію з таблиці. Наприклад, ви могли б вивести таблицю Продавців надрукувавши наступне: Іншими словами, ця команда просто виводить всі дані з таблиці. Більшість програм будуть також давати заголовки стовпця як вище, а деякі дозволяють детальне форматування виводу, але це вже поза стандартної специфікації. Природно, запит такого характеру не обов'язково буде впорядковувати висновок юбим зазначеним способом. Та ж сама команда виконана з тими ж самими даними але в різний брешемо не зможе вивести той же самий порядок. Зазвичай, рядки виявляються в тому порядку в якому вони знайдені в таблиці, оскільки як ми встановили в попередньому розділі - цей порядок довільний. Це не обов'язково буде той порядок в якому дані вводилися або зберігалися. Ви можете впорядковувати висновок командами SQL безпосередньо: за допомогою спеціальної пропозиції. Пізніше, ми покажемо як це робиться. А зараз, просто запам'ятайте, що у відсутності явного упорядкування, немає ніякого певного порядку в вашому виведення.
Наше використання повернення (Кнопка ENTER) є довільним. Ми повинні точно встановити як зручніше скласти запит, в кілька рядків або в один рядок, в такий спосіб: З тих пір як SQL використовує крапку з комою щоб вказувати кінець команди, більшість програм SQL обробляють повернення (через натиск Повернення або клавішу ENTER) як пропуск. Це - хороша ідея щоб використовувати повернення і вирівнювання що ми робили це раніше, щоб зробити ваші команди більш легкими для читання та більш правильними.
Вибирайте ЗАВЖДИ НАЙБІЛЬШИЙ ПРОСТИЙ СПОСІБ
Якщо ви хочете бачити кожен стовпець таблиці, є необов'язкове скорочення яке ви можете використовувати. Зірочка (*) може застосовуватися для виведення повного списку стовпців наступним чином: Це призведе до того ж результату що і наша попередня команда.
ОПИС SELECT
У загальному випадку, команда SELECT починається з ключового слова SELECT, супроводжуваного прогалиною. Після цього повинен слідувати список імен стовпців які ви хочете бачити, відокремлюються комами. Якщо ви хочете бачити всі стовпці таблиці, ви можете замінити цей список зірочкою (*). Ключове слово FROM наступне далі, супроводжується пропуском і ім'ям таблиці запит до якої робиться. На закінчення, крапка з комою (;) повинна бути звичайно закінчити запит і вказати що команда готова до виконання.
Команда SELECT здатна витягти строго певну інформацію з таблиці. Перш за все, ми можемо надати можливість побачити тільки певні стовпці таблиці. Це виконується легко, простим винятком стовпців які ви не хочете бачити, з частини команди SELECT. Наприклад, запит Можуть бути таблиці які мають велику кількість стовпців містять дані, не всі з яких є відносяться до поставленого завдання. Отже, ви можете знайти спосіб підбору і вибору тільки корисних для Вас стовпців.
Упорядкування стовпців
Навіть якщо стовпчики таблиці, за визначенням, впорядковані, це не означає що ви будете відновлювати їх у тому ж порядку. Звичайно, зірочка (*) покаже всі стовпці в їх природному порядку, але якщо ви вкажете стовпці окремо, ви можете отримати їх у тому порядку якому хочете. Давайте розглянемо таблицю Порядків, що містить дату придбання (odate), номер продавця (snum), номер порядку (onum), і суми придбання (amt): Як ви можете бачити, структура інформації в таблицях - це просто основа для активної перебудови структури в SQL .
ВИДАЛЕННЯ НАДЛИШКОВИХ ДАНИХ
DISTINCT (ВІДМІНУ) - аргумент який забезпечує Вас способом усувати подвійні значення з вашої пропозиції SELECT. Припустимо що ви хочете знати які продавці в даний час мають свої порядки в таблиці Порядків. Під порядком (тут і далі) буде розумітися запис в таблицю Порядків, що реєструє придбання зроблені в певний день певним замовником у певного продавця на певну суму). Вам не потрібно знати, скільки порядків має кожен; вам потрібен тільки список номерів продавців (snum). Тому Ви можете ввести:
Іншими словами, DISTINCT стежить за тим, які значення були раніше, так що б вони не були продубльовані в списку. Це - корисний спосіб уникнути надмірності даних, але важливо що б при цьому ви розуміли що ви робите. Якщо ви не хочете втратити деякі дані, ви не повинні безоглядно використовувати DISTINCT, тому що це може приховати якусь проблему або якісь важливі дані. Наприклад, ви могли б припустити що імена всіх ваших замовників різні. Якщо хтось поміщає другого Clemens в таблицю Замовників, а ви використовуєте SELECT DISTINCT cname, ви не будете навіть знати про існування двійника. Ви можете отримати не ту Clemens і навіть не знати про це. Так як ви не очікуєте надмірності, в цьому випадку ви не повинні використовувати DISTINCT.
ПАРАМЕТРИ DISTINCT
DISTINCT може вказуватися тільки один раз в даній пропозиції SELECT. Якщо пропозиція вибирає численні підлогу, DISTINCT опускає рядки де всі вибрані підлогу ідентичні. Рядки в яких деякі значення однакові а деякі різні - будуть збережені. DISTINCT, фактично, призводить до показу всього рядка висновку, не вказуючи полів (за винятком коли він використовується всередині агрегатних функцій, як описано в Главі 6), так що немає ніякого сенсу щоб його повторювати.
DISTINCT ЗАМІСТЬ ALL
Замість DISTINCT, ви можете вказати - ALL. Це буде мати протилежний ефект, дублювання рядків виводу збережеться. Так як це - той же самий випадок коли ви не вказуєте ні DISTINCT ні ALL, то ALL - по суті швидше пояснювальний, а не чинний аргумент.
КВАЛІФІКОВАНИЙ ВИБІР ПРИ ВИКОРИСТАННІ ПРОПОЗИЦІЙ
Таблиці мають тенденцію ставати дуже великими, оскільки з плином часу, все більша і більша кількість рядків в неї додається. Оскільки зазвичай з них тільки певні рядки цікавлять вас в даний брешемо, SQL дає можливість вам встановлювати критерії щоб визначити які рядки будуть обрані для виведення.
WHERE - пропозиція команди SELECT, яке дозволяє вам встановлювати предикати, умова яких може бути або вірним або невірним для будь-якого рядка таблиці. Команда витягує тільки ті рядки з таблиці для якої таке твердження вірне. Наприклад, припустимо ви хочете бачити імена і комісійні всіх продавців в Лондоні. Ви можете ввести таку команду: Коли пропозиція WHERE представлено, програма бази даних переглядає всю таблицю по одному рядку і досліджує кожну рядок щоб визначити чи правильно твердження. Отже, для запису Peel, програма розгляне поточне значення стовпця city, визначить що воно дорівнює "London", і включить цей рядок в висновок. Запис для Serres не буде активована, і так далі. Висновок для вищезгаданого запиту показаний в рисунку 3.6. Давайте спробуємо приклад з числовим полем в реченні WHERE. Поле rating таблиці Замовників призначене щоб розділяти замовників на групи засновані на певних умов які можуть бути отримані в результаті через цей номер. Можливо це - форма оцінки кредиту або оцінки заснованої на томі попередніх придбань. Такі числові коди можуть бути корисні в реляційних базах даних як спосіб підведення підсумків складної інформації. Ми можемо вибрати всіх замовників з рейтингом 100, в такий спосіб: Поодинокі лапки не використовуються тут тому, що оцінка - це числове поле. Результати запиту показані в рисунку 3. 7.
Пропозиція WHERE сумісно з попереднім матеріалом в цьому розділі. Іншими словами, ви можете використовувати номери стовпців, усувати дублікати, або змінювати порядок стовпці в команді SELECT яка використовує WHERE. Однак, ви можете змінювати порядок стовпців для імен тільки в реченні SELECT, але не в реченні WHERE.
Найбільш важливим є те, що ви можете встановлювати умова зване предикатом яке визначає або не визначає зазначену рядок таблиці з тисяч таких же рядків, чи буде вона обрана для виведення.
Предикати можуть ставати дуже складними, надаючи вам високу точність в рішенні, які рядки вам вибирати за допомогою запиту. Саме ця здатність вирішувати точно, що ви хочете бачити, робить запити SQL такими потужними. Наступні кілька глав будуть присвячені, в більшій мірі, особливостям які розширюють потужність предикатів. У Главі 4. вам будуть представлені оператори інші ніж ті які використовуються в умовах предиката, а також способи об'єднання численних умов в єдиний предикат.