булеві оператори

Основні Булеві оператори також розпізнаються в SQL. Вирази Буля - є або вірними, або невірними, подібно до предикатів. Булеві оператори пов'язують одне або більш вірних / невірних значень і виробляють єдине вірне / або / невірне значення. Стандартними операторами Буля, розпізнаваними в SQL, є: AND. OR. і NOT.

Існують інші, більш складні, оператори Буля (типу "виключений або"), але вони можуть бути сформовані з цих трьох простих операторів - AND, OR, NOT.

Як ви можете зрозуміти, Булева вірна / невірна логіка - заснована на цифровий комп'ютерної операції; і фактично, весь SQL (або будь-який інший мову) може бути зведений до рівня Булевой логіки.

Оператори Буля і як вони працюють:

AND бере два Буля (у формі A AND B) як аргументи і оцінює їх по відношенню до істини, чи правильні вони обидва.

OR бере два Буля (у формі A OR B) як аргументи і оцінює на правильність, чи вірний один з них.

NOT бере одиночний Булев (у формі NOT A) як аргументи і замінює його значення з невірного на вірне або вірне на невірне.

Пов'язуючи предикати з операторами Буля, ви можете значно збільшити їх можливості. Припустимо ви хочете бачити всіх замовників в San Jose які мають оцінку (рейтинг) вище 200:

SELECT *
FROM Customers
WHERE city = 'San Jose'
AND rating> 200;

Висновок для цього запиту показаний на рисунку 4.2. Є тільки один замовник, який задовольняє цій умові.

Малюнок 4.2. Оператор SELECT використовує AND

Якщо ви ж використовуєте OR, ви отримаєте всіх замовників, які перебували в San Jose або (OR) які мали оцінку вище 200.

SELECT *
FROM Customers
WHERE city = 'San Jose' OR rating> 200;

Висновок для цього запиту показується в Малюнку 4.3.

Малюнок 4.3. Оператор SELECT, який використовує OR

NOT може використовуватися для інвертування значень Буля. Є приклад запиту з NOT:

SELECT *
FROM Customers
WHERE city = 'San Jose' OR NOT rating> 200;

Висновок цього запиту показується в Малюнку 4.4.

Малюнок 4.4. Оператор SELECT, який використовує NOT

Всі записи, за винятком Grass, були обрані. Grass не був у San Jose, і його оцінка була більше, ніж 200, так що він зазнав невдачі при обох перевірках. У кожній з інших рядків зустрівся один або інший або обидва критеріїв. Зверніть увагу, що оператор NOT повинен передувати Булеву оператору, чиє значення має змінитися, і не повинен поміщатися перед реляційним оператором. Наприклад, неправильним введенням оцінки предиката буде:

rating NOT> 200

Він видасть іншу позначку. А як SQL оцінить наступне?

SELECT *
FROM Customers
WHERE NOT city = 'San Jose' OR rating> 200;

NOT застосовується тут тільки до вираження city = 'San Jose'. або до вираження rating> 200 теж? Як і написано, правильну відповідь буде колишнім. SQL може застосовувати NOT з виразом Буля тільки відразу після нього. Ви можете отримати інший результат при команді:

SELECT *
FROM Customers
WHERE NOT (city = 'San Jose' OR rating> 200);

Тут SQL розуміє круглі дужки як підтвердження, що все всередині них буде оцінюватися першим і оброблятися як єдине вираження за допомогою всього, що зовні них (це є стандартною інтерпретацією в математиці). Іншими словами, SQL бере кожен рядок і визначає, чи відповідає істині рівність city = 'San Jose' або равенствоrating> 200. Якщо будь-яка умова вірно, вираз Буля усередині круглих дужок вірно. Однак, якщо вираз Буля усередині круглих дужок вірно, предикат як єдине ціле невірний, тому що NOT перетворить вірно в невірно і навпаки.

Висновок для цього запиту показується в Малюнку 4.5.

Малюнок 4.5. Оператор SELECT, який використовує NOT і вступне пропозицію

Є навмисно складний приклад. Подивимося, чи зможете ви простежити його логіку (висновок показаний в рисунку 4.6):

Малюнок 4.6. Повний (комплексний) запит

Примітка. Для СУБД Interbase запит повинен бути змінений:

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

Спосіб оцінки Булева комплексу полягає в тому, щоб оцінювати Булеві вирази, найбільш глибоко вкладені в круглих дужках, об'єднувати їх в єдине Булево значення, і потім об'єднувати його з верхніми значеннями.

У цьому розділі ви значно розширили ваше знайомство з предикатами. Тепер ви можете знаходити значення, які пов'язані з даним значенням будь-яким способом - визначаються різними реляційними операторами. Ви можете також використовувати оператори Буля AND іOR. щоб багато умов, кожне з яких автономно в предиката, об'єднувати в єдиний предикат. Оператор Буля NOT. як ви вже бачили, може змінювати значення умови або групи умов на протилежне.

Булеві і реляційні оператори можуть ефективно управлятися за допомогою круглих дужок, які визначають порядок, в якому операції будуть виконані. Ці операції застосовні до будь-якого рівня складності, і ви зрозуміли, як складні умови можуть створюватися з цих простих частин.

Тепер, коли ми показали, як використовуються стандартні математичні оператори, ми можемо перейти до операторів, які є винятковими в SQL. Це ми зробимо в Главі 5.

Схожі статті