Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 6-1 Запити на мові SQL-1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
107.01 Кб
Скачать

2. Прості запити

Для подальшого використання в прикладах і вправах буде використовуватися “кінематографічна ” база даних, яка містить дані про кінофільми, акторів і кіностудії, охоплюючи п’ять відношень, (рис.6.1).

Movie (

TITLE : string,

YEAR : integer,

Length : integer, .

InColor : boolean,

StudioName :string,

ProducerC# : integer)

StarsIn (

MOVIETITLE : string,

MOVIEYEAR : integer,

STARNAME :string)

MovieStar (

name : string,

address : string,

gender : char,

birthdate : date)

MovieExec (

name : string,

address : string,

CERT# : integer,

NetWorth : integer)

Studio (

name : string,

address : string,

presC# : integer)

Рис.6.1. Приклад схеми бази даних про фільми, акторів і кіностудії.

Простішою формою запита буде така, яка передбачає вибір із деякого відношення групи кортежів, задовольняючих певній умові. Подібний запит аналогічний операції вибору в реляційній алгебрі. При його написанні використовуються три службових слова SQL – SELECT (“вибрати ”), FROM (“із”) і WHERE (“при умові ”), які застосовуються у більшості запитів SQL.

Приклад 6.1. На основі запита вибрати із БД на рис.6.1. данні про кінофільми, зняті на студії “Disney” у 1990 році. На мові SQL запит записується так:

SELECT *

FROM Movie

WHERE studioName = ‘Disney’ AND year = 1990;

Як бачимо, запит включає три речення:

  • У реченні FROM перелічені імена відношень (Movie).

  • Речення WHERE задає умову, аналогічну умові С оператора вибору sС у реляційній алгебрі. Кортежі відношення Movie, що вибираються, повинні задовольняти умовіWHERE.

  • Речення SELECT вказує, які атрибути кортежів, що належать відношенням із FROM і задовольняють умові WHERE, повинні бути включені у результуюче відношення.

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

title

year

length

inColor

studioName

producer#

Pretty Woman

1990

119

true

Disney

999

Кортеж t

Тоді речення прийме наступний вигляд:

WHERE ‘Disney’= ‘Disney’ AND 1990= 1990

Оскільки умова є вірною, кортеж відношення Movie уключається у результуюче відношення запиту.

Проекція в SQL.

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

Приклад 6.2. На основі запита вибрати із відношення Movie на рис.6.1. данні про назви і про тривалість демонстрації кінофільмів, знятих на студії “Disney” у 1990 році. На мові SQL запит записується так:

SELECT title, length

FROM Movie

WHERE studioName = ‘Disney’ AND year = 1990;

Вигляд одного кортежу результуючого відношення приведен нижче.

title

length

Pretty Woman

119

¼

¼

Для зміни у результуючому відношенні назв стовпців відношень, вказаних у реченні FROM, дозволяється у реченні SELECT супроводжувати ім’я атрибуту службовим словом AS і псевдонімом (alias), який повинен стати заголовком відповідного стовпця результуючої таблиці. Дозволяється слово AS не вживати: у цьому випадку ім’я і псевдонім атрибута розділяються тільки пробілом.

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

Приклад 6.3. На основі запита вибрати із відношення Movie на рис.6.1. данні про назви і про тривалість демонстрації кінофільмів, знятих на студії “Disney” у 1990 році. У результуючому відношенні перейменувати стовпець title у стовпець з ім’ям name, а стовпець з атрибутом length у стовпець з ім’ям lengthInHours, у якому значеннями стовпця будуть результати множення вмісту компонентів length на константу 0,016667. На мові SQL запит записується так:

SELECT title name, length*0.016667 AS lengthInHours

FROM Movie

WHERE studioName = ‘Disney’ AND year = 1990;

Вигляд одного кортежу результуючого відношення приведен нижче.

name

lengthInHours

Pretty Woman

1.98334

¼

¼

Мова SQL надає можливість порівняння за допомогою службового слова LIKE.

Приклад 6.4. На основі запиту вибрати із відношення Movie назви кінофільмів, які включають два слова, розділених символом пробіл; і у яких першим є слово Star, а другим – слово, що складається із любих чотирьох символів. Запит має вигляд:

SELECT title

FROM Movie

WHERE title LIKE ‘Star ____’;

Використання у шаблоні символу _ дозволяє включати у результуюче відношення такі назви, як, наприклад, Star_Wars.

Упорядкування результатів.

Виконується за допомогою речення

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

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