Ред на атрибутите
Атрибутите в резултата се показват в реда, в който сме ги изредили след SELECT — не е задължително това да е редът от схемата на таблицата:
Бележка
SELECT Номер, Фамилия, Име FROM Ученик; — първо фамилията, после името.
Модификаторът DISTINCT
DISTINCT взема само по един екземпляр от няколко еднакви стойности. Изписва се между SELECT и атрибутите:
Бележка
SELECT DISTINCT [Име на учител], Предмет FROM Учител; — учител, който преподава един предмет в различни класове, се среща само веднъж.
Квадратните скоби в Access
Имена на атрибути от повече от една дума Access поставя в скоби [ ] — [Име на учител]. При ръчно писане трябва да ги слагаме сами.
Булеви стойности и логически изрази
Булевите стойности се получават от операциите за сравняване: >, >=, <, <=, = („е равно на" — в SQL няма присвояване!) и <> или != („не е равно на"). SQL добавя и специфични операции:
| Операция | Истина, когато… | Пример |
|---|---|---|
BETWEEN a AND b | стойността е между a и b (включително) | Номер BETWEEN 3 AND 7 |
LIKE образец | низът съответства на образеца (шаблона) | Име LIKE "Д*" |
IN (списък) | стойността е елемент от списъка | Номер IN (1, 7, 6) |
Образците на LIKE
В Access специалните знаци в образеца са:
*— нула, един или повече знака;"*@*"— всеки низ със знака @ (e-mail).?— точно един знак;"??*"— низ с поне два знака.#— точно една цифра.[А-Д]*— низ, започващ с буква от А до Д;[!А-Д]*— който НЕ започва с тях;[*]*— започващ със звезда.
В стандартния SQL (и в упражненията тук)
Знаците са други: % вместо * и _ вместо ?. Например name LIKE 'В%' — име, започващо с В. Access ползва своите знаци в интерфейса си, но идеята е същата — шаблон, на който низът да съответства.
Логически изрази
Всяко сравнение е условие. По-сложни условия се строят с булевите операции: AND (конюнкция, „и"), OR (дизюнкция, „или"), NOT (отрицание) и скоби за реда на изпълнение.
Клаузата WHERE
Елементарният SELECT реализира проекция. Клаузата WHERE условие (след FROM) добавя селекцията:
Бележка
SELECT Номер, Име, Презиме, Фамилия FROM Ученик
WHERE (Номер <= 7) AND (Име LIKE "Б*" OR Име LIKE "Д*");
— учениците с номер до 7, чието име започва с Б или с Д. (Access поставя в кода много скоби — някои ненужни, за сигурност.)
SELECT * FROM … WHERE … реализира чиста селекция; SELECT атрибути FROM … WHERE … е композиция от селекция и проекция.
Изчислимо поле
Изчислимо поле — колона в резултата, получена чрез изчисление, конвертиране или форматиране на стойност от базата. Позволява да променяме стойностите в резултата, без да променяме данните в ядрото — съхраняваме данните по един начин, а другите изгледи получаваме „в движение":
Бележка
SELECT prod_name, prod_price*1.2 FROM Products; — цената с ДДС, без да я съхраняваме втори път.
Какво трябва да запомниш
- Редът на атрибутите в резултата = редът след SELECT.
- DISTINCT маха повторенията; пише се веднага след SELECT.
- BETWEEN, LIKE (шаблони), IN — специфичните SQL сравнения.
- Access шаблони: * ? # [ ]; стандартен SQL: % и _.
- WHERE = селекция; SELECT атрибути + WHERE = композиция селекция∘проекция.
- Изчислимото поле смята „в движение“, без да пипа ядрото.