Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 3 · Урок 16

Заявката SELECT

Ред на атрибутите, DISTINCT, булеви стойности и логически изрази (BETWEEN, LIKE, IN, AND/OR/NOT), клаузата WHERE и изчислими полета.

Ред на атрибутите

Атрибутите в резултата се показват в реда, в който сме ги изредили след 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 = композиция селекция∘проекция.
  • Изчислимото поле смята „в движение“, без да пипа ядрото.