Синтаксис оператора select
Розглянемо спрощений синтаксис цього оператора.
SELECT [ALL | DISTINCT] <список выбора>
[WHERE <условия поиска>]
[GROUP BY <список столбцов> [HAVING <условия поиска>]]
[ORDER BY <список упорядочения>];
Розберемо пропозиції оператора.
SELECT [ALL | DISTINCT]
<список выбора> - список обираних стовпців, констант, функцій або виразів, розділених комами.
Необов'язкове ключове слово ALL означає, що вибираються всі рядки, що відповідають умові пошуку. Це значення за замовчуванням, і зазвичай в операторі не вказується. Ключове слово DISTINCT вказує, що у вихідний набір даних потраплять лише відрізняються рядки, дублікати будуть відкидатися.
Сам список обираних стовпців (або список вибору) може містити імена необхідних стовпців, константи, вирази або символ *, який означає, що вибираються всі стовпці таблиці.
Стовпці можуть бути представлені або просто своїми іменами або перед ім'ям стовпця може бути присутнім ім'я таблиці (або псевдонім таблиці - див. Далі), після якого стоїть крапка. Ніяких прогалин в таких конструкціях використовувати не можна. Синтаксис такою уточненою конструкції виглядає наступним чином:
<имя таблицы>.<имя столбца>
<псевдоним таблицы>.<имя столбца>
Уточнені імена стовпців обов'язково повинні бути присутніми в операторах SELECT, де присутні кілька таблиць, це дозволить уникнути двозначності при зверненні до стовпців з однаковими іменами з різних таблиць. Така ситуація може виникнути при виконанні з'єднань таблиць.
При завданні імені стовпця з таблиці, константи або будь-якого виразу можна після ключового слова AS вказати текст, який буде міститися в заголовок відображається таблиці. Такий текст називається псевдонімом або аліасом стовпчика. Якщо псевдонім містить прогалини, спеціальні символи або літери кирилиці, то цей текст потрібно укласти в подвійні лапки. наприклад:
SELECT CITY.CT_NAME AS "Місто", AIRPORT.AP_NAME AS "Аеропорт"
FROM AIRPORT INNER JOIN CITY
ON AIRPORT.AP_CT_CODE = CITY.CT_CODE
WHERE CITY.CT_NAME = 'Москва'
українські тексти тут укладені в лапки, бо містять символи, неприпустимі в іменах, а наприклад CT_NAME. будучи правильним ім'ям в SQL, може обійтися без лапок. Строкові константи повинні полягати в одинарні лапки.
Не плутайте описані таким чином псевдоніми стовпців з псевдонімами таблиць (див. Далі). Якщо псевдоніми таблиць можна використовувати в операторі, де вони визначені, для уточнення посилань на стовпці, то з псевдонімами стовпців справа дещо складніша. У різних версіях різних серверів баз даних їх можна використовувати по-різному.
Трохи пізніше ми розглянемо деякі варіанти.
Необов'язкове пропозицію GROUP BY <имя столбца> групує знайдені рядки відповідно до значення вказаного стовпця.
Необов'язкове пропозицію HAVING <условия поиска> визначає додаткові умови пошуку для використання в GROUP BY.
Необов'язкове пропозицію ORDER BY <список имен> дозволяє впорядкувати знайдені рядки, вказуючи список імен стовпців (тут знову ж таки можна використовувати уточнені імена у вигляді <имя таблицы>.<имя столбца>). а також напрямок сортування для кожного стовпчика - ключові слова ASCENDING (по зростанню) або DESCENDING (по спадаючій).
Прості варіанти пошуку даних
Розглянемо спочатку найбільш прості варіанти використання оператора. Ми будемо відшукувати дані кожен раз тільки в одній з таблиць бази даних.
Відразу після ключового слова SELECT вказується список вибору - список стовпців таблиці, литералов, констант або виразів, які потраплять в результуючий набір даних.
У найпростішому варіанті оператора SELECT можна вказати замість списку відображуваних стовпців символ *, наприклад: [1]
Цей оператор повертає всі стовпці всіх рядків таблиці PERSON
Лістинг 1. Вибір всіх стовпців всіх рядків таблиці людей
Слід виключити зі списку коди особистостей, які звичайній людині нічого не говорять. Виконаємо оператор в наступному вигляді: [2]
Ми отримаємо ті ж записи. Кожна буде містити прізвище, ім'я, по батькові та дату народження людини.
Заголовки нам з вами, як проектувальникам таблиць нашої бази даних, зрозумілі. Однак іншим людям слід довго пояснювати, що це таке. Краще відразу сформувати заголовки російською мовою. Виконайте: [3]
PR_BIRTHDAYAS "Дата народження"
Результат стане більш зрозумілим, заголовки містять правильні тексти.
Лістинг 2. Додавання осмислених заголовків