Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Найпростіші SELECT-запити




 

Оператор SELECT (вибрати) мови SQL є найважливішим і найчастіше використовуваним оператором. Він призначений для вибірки інформації з таблиць бази даних. Спрощений синтаксис оператора SELECT має вигляд:

SELECT [DISTINCT] <список атрибутів>

FROM <список таблиць>

[WHERE <умова вибірки>]

[ORDER BY <список атрибутів>]

[GROUP BY <список атрибутів>]

[HAVING <умова >]

[UNION <вираз з оператором SELECT>];

У квадратних дужках зазначені елементи, які можуть бути відсутніми у запиті.

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

Обов'язковим ключовим словом у реченні-запиті SELECT є слово FROM (з). За ключовим словом FROM вказується список розділених комами імен таблиць, з яких береться інформація.

Будь-який SQL-запит повинен закінчуватися символом «;» (крапка з комою).

Приклад 1. Розглянемо запит:

SELECT NAME, SURNAME

FROM STUDENT;

 

Наведений запит здійснює вибірку всіх значень полів NAME і SURNAME з таблиці STUDENT.

Його результатом є таблиця наступного виду:

 

NAME SURNAME
Іван Іваненко
Петро Петренко
Вадим Сидоренко
Борис Ковалів
Ольга Зайцева
Андрій Павлов
Павло Котів
Артем Лукин
Антон Петренко
Вадим Буйнов Елкин
   

 

Порядок знаходження стовпців у цій таблиці відповідає порядку полів NAME і SURNAME, зазначеному в запиті, а не їхньому порядку у вхідній таблиці STUDENT.

Якщо необхідно вивести значення всіх стовпців таблиці, то можна замість перерахування їхніх імен використати символ «*» (зірочка).

Приклад 2. Розглянемо запит:

SELECT *

FROM STUDENT;

 

У цьому випадку результатом виконання запиту буде вся таблиця STUDENT.

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

 

Приклад 3: Створити запит «Список назв міст, де проживають студенти, відомості про які знаходяться у таблиці STUDENT».

SELECT CITY

FROM STUDENT;

 

Його результатом буде таблиця:

 

CITY
Одеса
Київ
Миколаїв
Бердянськ
Луцьк
Вінниця
Бєлгород
Вінниця
NULL
Вінниця

 

Видно, що в таблиці зустрічаються однакові рядки (виділені жирним шрифтом).

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

Попередній запит можна записати в наступному виді:

SELECT DISTINCT CITY

FROM STUDENT;

 

У результаті одержимо таблицю, у якій дублікати рядків виключені:

 

CITY
Одеса
Київ
Миколаїв
Бердянськ
Луцьк
Вінниця
Бєлгород
NULL

 

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

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

Приклад 4. Створити запит, що виконує вибірку імен (NAME) всіх студентів із прізвищем (SURNAME) Петров, відомості про які знаходяться у таблиці STUDENT:

 

SELECT SURNAME, NAME

FROM STUDENT

WHERE SURNAME = 'Петренко';

 

Результатом цього запиту буде таблиця:

 

SURNAME NAME
Петренко Петро
Петренко Антон

 

У заданих в виразі WHERE умовах можуть використовуватися операції порівняння, обумовлені операторами = (дорівнює), > (більше), < (менше), >= (більше або дорівнює), < (менше або дорівнює), <> (не дорівнює), а також логічні оператори AND, OR і NOT.

Приклад 5. Створити запит для одержання імен і прізвищ студентів, що навчаються на третьому курсі й одержують стипендії (розмір стипендії більше нуля):

 

SELECT NAME, SURNAME

FROM STUDENT

WHERE KURS = 3 AND STIPEND > 0;

 

Результат виконання цього запиту має вигляд:

 

SURNAME NAME
Петренко Петро
Лукін Артем

Завдання для самостійної роботи

 

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

2. Напишіть запит, що дозволяє вивести всі рядки таблиці EXAM_MARKS, у яких предмет навчання має номер (SUBJ_ID), рівний 22.

3. Напишіть запит, що вибирає всі дані з таблиці STUDENT, розташувавши стовпці таблиці в наступному порядку: KURS, SURNAME, NAME, STIPEND.

4. Напишіть запит SELECT, що виводить найменування предмета навчання (SUBJ_NAME) і кількість годин (HOUR) для кожного предмета (SUBJECT) в 4-м семестрі (SEMESTER).

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

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

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

8. Напишіть запит, що виконує вибірку з таблиці SUBJECT назв всіх предметів навчання, на які приділяється більше 40 годин.

9. Напишіть запит, що виконує вивід списку університетів, рейтинг яких перевищує 300 балів.

10. Напишіть запит до таблиці STUDENT для виводу списку прізвищ (SURNAME), імен (NAME) і номерів курсу (KURS) всіх студентів зі стипендією, більшою або рівною 160, і які мешкають у Вінниці.

11. Які дані будуть отримані в результаті виконання запиту?

 

SELECT *

FROM STUDENT

WHERE (STIPEND < 160)

AND (STUDENT_ID > 103)

AND (BIRTHDAY >= 10/03/1985);

 

Примітка.. Умова Дата 1 > Дата 2 означає, що Дата1 раніше Дата 2

 

 

12. Які дані будуть отримані в результаті виконання запиту?

 

SELECT *

FROM STUDENT

WHERE ((KURS = 3 OR STIPEND >= 160)

AND STUDENT_ID >= 103);

 

3.2. Лабораторна робота №2

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...