Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_4_m_запит_умова.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
117.25 Кб
Скачать

6

Організація баз даних, гр.. ТО-41

Лабораторна робота № 4

Тема: Побудова запитів для вибирання записів з однієї таблиці, що відповідають заданому критерію

Мета: Навчитися конструювати запити на мові SQL для вибирання даних за певними критеріями. Вміти конструювати складні умови вибору записів

1 Короткі теоретичні відомості

Запити на вибірку. Особливість реляційних СУБД полягає у тому, що результатом дії мовного оператора є таблиця, яка містить множину даних. Мова SQL дозволяє відобразити тільки ті записи таблиці, що задовольняють певну умову. Щоб виконати фільтрацію записів слід задати критерій вибору.

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

SELECT Назва поля або полів

FROM Назва таблиці;

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

Побудова запитів на умовне вибирання записів. Для вибирання потрібних записів необхідно задати умови їх вибору. Для цього використовується фраза WHERE. У ній зазначено, якій умові мають відповідати дані, що підлягають вибору. Алгоритм обробки запиту з фразою WHERE має вигляд:

  • вибрати рядки із таблиці;

  • перевірити їх відповідність вказаній умові;

  • якщо рядок відповідає умові, то вивести значення стовпців, вказаних у фразі SELECT.

Запиті на умовне вибирання записів має формат:

SELECT список полів, значення яких треба отримати

FROM список таблиць, з яких вибираються дані

WHERE умова, яку мають задовольняти записи, що вибираються;

Даний запит виводить список прізвищ усіх професорів вузу:

SELECT Прізвище

FROM ВИКЛАДАЧ

WHERE Посада = "професор"

Умова вибирання записів. У мові SQL існує багато різновидів виразів, у яких використовуються дані різних типів — рядки, числа, логічні значення. Умова — це вираз, що повертає логічне значення – 1 (TRUE) або 0 (FALSE). Умовні вирази обов'язково використовуються у фразі WHERE, а також можуть застосовуватися в інших фразах, наприклад SELECT. Прикладом умовного виразу є конструкція Посада = <професор> в попередньому заптсі.

Оператори — це конструкції, що використовуються у виразах для означення певних дій над даними. Є кілька типів операторів:

  • Оператори порівняння арифметичних виразів (табл. 1);

  • Оператори порівняння рядків;

  • Логічні оператори (табл. 2).

Операції порівняння в MySQL виконуються за правилами:

  • Якщо один або обидва аргументи - NULL, то і результат порівняння буде NULL, для всіх операторів, крім <=>.

  • Якщо 2 аргументи є рядками, то вони порівнюються як рядки.

  • Якщо обидва аргументи - цілі числа, то вони порівнюються як цілі числа.

  • Шістнадцяткові величини, якщо вони не порівнюються з числом, трактуються як рядки з двійковими даними.

  • Якщо один із аргументів є стовпець типу TIMESTAMP або DATETIME, а другий аргумент - константа, то константа перед виконанням порівняння перетворюється до типу TIMESTAMP.

  • В всіх інших випадках аргументи порівнюються як дійсні числа.

По замовчуванню порівняння рядків проводиться без врахування регістра символів з використанням поточного набору символів. В табл. 1 наведено оператори порівняння.

Таблиця 1Оператори порівняння

Знак

Назва

Приклади

=

Рівно:

SELECT 1 = 0; -> 0

SELECT '0' = 0; -> 1

mysql> SELECT '0.0' = 0; -> 1

mysql> SELECT '0.01' = 0; -> 0

mysql> SELECT '.01' = 0.01; -> 1

<>

!=

Не рівно:

mysql> SELECT '.01' <> '0.01'; -> 1

mysql> SELECT .01 <> '0.01'; -> 0

mysql> SELECT 'zapp' <> 'zappp'; -> 1

<=

Менше або рівно:

mysql> SELECT 0.1 <= 2; -> 1

<

Менше ніж:

mysql> SELECT 2 < 2; -> 0

>=

Більше або рівно

mysql> SELECT 2 >= 2; -> 1

>

Більше ніж

mysql> SELECT 2 > 2; -> 0

<=>

NULL- порівняння (рівно):

SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL; -> 1 1 0

SIGN()

Повертає -1, 0 або 1 (знак аргументу).

| &

Бітові функції (використовується 48 біт).

BETWEEN(A,B,C)

(A >= B) AND (A <= C).А між В і С, то істина

Х BETWEEN min AND max

(min <= Х <= max), то оператор повер- тає 1, інакше 0. Аргументи однотипні

SELECT 1 BETWEEN 2 AND 3; -> 0

SELECT 'b' BETWEEN 'a' AND 'c'; -> 1

SELECT 2 BETWEEN 2 AND '3'; -> 1

SELECT 2 BETWEEN 2 AND 'x-3'; -> 0

Якщо Х незалежний від регістра, то прово- диться порівняння без врахування регістра.

Х NOT BETWEEN min AND max

То що і для функції NOT (Х BETWEEN min AND max).

SELECT 1 NOT BETWEEN 2 AND 3;->1

IS NULL

Чи є величина рівною NULL

SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL; -> 0 0 1

IS NOT NULL

Чи є величина не рівною NULL

SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL; -> 1 1 0

IFNULL(A,B)

Якщо A не null, то A, інакше B.

ISNULL(A)

Поверне 1, якщо A == NULL, інакше поверне 0.

IF(A,B,C)

Якщо A істина (!= 0 and != NULL), то поверне B, інакше C.

Х IN (value,...)

Повертає 1, якщо вираз Х рівний величині із списку IN, інакше - 0. Якщо величини - константи, то вони оцінюються з типом виразу Х і сортуються. Якщо Х є залежним від регістра рядком, то порівняння з враху- ванням регістра:

mysql> SELECT 2 IN (0,3,5,'wefwf');

-> 0

mysql> SELECT 'wefwf' IN (0,3,5,'wefwf');

-> 1

Логічні оператори Всі логічні оператори дають в результаті значення 1 (TRUE), 0 (FALSE) або NULL (невизначене, яке в більшості є як FALSE)

Знак

Назва

Приклади

NOT

!

Логічне НЕ. Повертає 1, якщо операнд = 0, в інакше - 0. NOT NULL визначається як NULL:

mysql> SELECT NOT 1; -> 0

SELECT NOT NULL; -> NULL

mysql> SELECT ! (1+1); -> 0

mysql> SELECT ! 1+1; -> 1

OR

||

Логічне АБО. Повертає 1, якщо хоча б один із операндів не рівний ні 0, ні NULL:

mysql> SELECT 1 || 0; -> 1

mysql> SELECT 0 || 0; -> 0

mysql> SELECT 1 || NULL; -> 1

AND

&&

Логічне І. Для операндів, які не рівні NULL і не нульові, дає 1, і 0 - в противному випадку.

mysql> SELECT 1 && 1; -> 1

mysql> SELECT 1 && 0; -> 0

SELECT 1 && NULL; -> NULL

Складні умови вибирання рядків. З таблиці можна вибрати тільки потрібні рядки. В умовах можуть вказуватися будь-який з стовпців або сукупність стовпців. Умови можна і комбінувати. Для цього використовуються логічні оператори AND і OR. Оператори AND і OR можна використати разом. За допомогою дужок можна вказати порядок групування умов. Приклад запиту з використанням складних умов:

SELECT * FROM name_table

WHERE (col1= "aaa" AND col2 = "bbb") OR (col3 = "ccc" AND col4 = "ddd");

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]