Access SQL: основни понятия, речник и синтаксис
Applies ToAccess за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Когато искате да извлечете данни от база данни, трябва да поискате данните с помощта на език SQL или SQL. SQL е компютърен език, който прилича много на английски, но програмите за база данни го разбират. Всяка заявка, която изпълнявате, използва SQL зад кулисите.

Разбирането на начина на работа на SQL може да ви помогне да създавате по-добри заявки и може да ви улесни в разбирането как да коригирате заявка, която не връща желаните резултати.

Това е една от статиите в набора от статии за Access SQL. Тази статия описва основното използване на SQL за избиране на данни и използва примери за илюстриране на SQL синтаксиса.

В тази статия

Какво представлява SQL?

SQL е компютърен език за работа с набори от факти и връзките между тях. Програмите за релационни бази данни, като например Microsoft Office Access, използват SQL за работа с данни. За разлика от многото компютърни езици, SQL не е трудна за четене и разбиране, дори и за начинаещ. Подобно на много компютърни езици, SQL е международен стандарт, който се разпознава от органи по стандартите като ISO и ANSI.

Използвате SQL, за да опишете набори от данни, които могат да ви помогнат да отговаряте на въпроси. Когато използвате SQL, трябва да използвате правилния синтаксис. Синтаксисът е наборът от правила, по които елементите на даден език се комбинират правилно. SQL синтаксисът е базиран на синтаксиса на английски език и използва много от същите елементи като синтаксиса на Visual Basic for Applications (VBA).

Например проста SQL команда, която извлича списък с фамилните имена за контакти, чието собствено име е Мария, може да изглежда така:

SELECT Last_NameFROM ContactsWHERE First_Name = 'Mary';

Забележка: SQL се използва не само за манипулиране на данни, но и за създаване и промяна на структурата на обектите на базата данни, като например таблици. Частта от SQL, която се използва за създаване и промяна на обекти на база данни, се нарича език за дефиниране на данни (DDL). Тази тема не обхваща DDL. За повече информация вж. статията Създаване или модифициране на таблици или индекси с помощта на заявка за дефиниране на данни.

Команди SELECT

За да опишете набор от данни с помощта на SQL, трябва да напишете команда SELECT. Командата SELECT съдържа пълно описание на набор от данни, които искате да получите от база данни. Това включва следното:

  • Кои таблици съдържат данните.

  • Как са свързани данните от различни източници.

  • Кои полета или изчисления ще генерират данните.

  • Критерии, на които трябва да отговарят данните, за да бъдат включени.

  • Дали и как да сортирате резултатите.

SQL клаузи

Подобно на изречение, SQL командата има клаузи. Всяка клауза изпълнява функция за SQL командата. Някои клаузи са задължителни в команда SELECT. Следващата таблица съдържа най-често срещаните SQL клаузи.

SQL клауза

Какво прави

Задължително

SELECT

Съдържа списък на полетата, които съдържат данни, представляващи интерес.

Да

FROM

Съдържа списък на таблиците, съдържащи полетата, изброени в клаузата SELECT.

Да

WHERE

Задава критерии за полета, които трябва да бъдат изпълнени от всеки запис, за да бъде включен в резултатите.

Не

ORDER BY

Задава как да се сортират резултатите.

Не

GROUP BY

В SQL команда, съдържаща агрегатни функции, съдържа списък на полета, които не са обобщени в клаузата SELECT.

Само ако има такива полета

HAVING

В SQL команда, съдържаща агрегатни функции, задава условия към полета, които са обобщени в командата SELECT.

Не

SQL изрази

Всяка SQL клауза е съставена от термини – сравними с частите на речта. Таблицата по-долу описва типовете SQL изрази.

Елемент на SQL

Сравнима част от речта

Определение

Пример

идентификатор

Съществително

Име, което използвате за идентифициране на обект от база данни, като например името на поле.

Потребители. [Телефонен номер]

оператор

глагол или наречие

Ключова дума, която представя действие или променя действие.

AS

константа

Съществително

Стойност, която не се променя, например число или NULL.

42

израз

Прилагателно

Комбинация на идентификатори, оператори, константи и функции, които дават като резултат единична стойност.

>= Продукти.[Единична цена]

Най-горе на страницата

Основни SQL клаузи: SELECT, FROM и WHERE

SQL командата е в общия вид:

SELECT field_1FROM table_1WHERE criterion_1;

Забележки: 

  • Access игнорира знаците за нов ред в SQL команда. Помислете обаче да използвате ред за всяка клауза, за да подобрите четливостта на вашите SQL команди за себе си и за другите хора.

  • Всяка команда SELECT завършва с точка и запетая (;). Точка и запетая може да се появи в края на последната клауза или на ред самостоятелно в края на SQL командата.

Пример в Access

По-долу е показано как може да изглежда SQL командата за проста заявка за избиране в Access:

Раздел за обекти SQL, показващ команда SELECT

1. Клауза SELECT

2. Клауза FROM

3. Клауза WHERE

Този пример SQL команда гласи "Изберете данните, които се съхраняват в полетата, наречени Имейл адрес и фирма, от таблицата с име "Контакти", особено тези записи, в които стойността на полето "Град" е "Сиатъл".

Да разгледаме примера , една по една, за да видим как работи SQL синтаксисът.

Клаузата SELECT

SELECT [E-mail Address], Company

Това е клаузата SELECT. Той се състои от оператор (SELECT), последван от два идентификатора ([Имейл адрес] и Фирма).

Ако един идентификатор съдържа интервали или специални знаци (като например "Имейл адрес"), той трябва да е ограден с квадратни скоби.

Клаузата SELECT не трябва да казва кои таблици съдържат полетата и не може да задава условия, които трябва да бъдат изпълнени от данните, които трябва да бъдат включени.

Клаузата SELECT винаги се показва пред клаузата FROM в команда SELECT.

Клаузата FROM

FROM Contacts

Това е клаузата FROM. Той се състои от оператор (FROM), последван от идентификатор (Контакти).

Клауза FROM не показва списък на полетата, които трябва да бъдат избрани.

Клаузата WHERE

WHERE City="Seattle"

Това е клаузата WHERE. Той се състои от оператор (WHERE), последван от израз (Град="Сиатъл").

Забележка: За разлика от клаузите SELECT и FROM, клаузата WHERE не е задължителен елемент на командата SELECT.

Можете да изпълните много от действията, които SQL ви позволява да извършвате с помощта на клаузите SELECT, FROM и WHERE. Повече информация за начина, по който използвате тези клаузи, е представена в тези допълнителни статии:

Най-горе на страницата

Сортиране на резултатите: ORDER BY

Подобно на Microsoft Excel, Access ви позволява да сортирате резултати от заявки в лист с данни. Можете също да зададете в заявката как искате да сортирате резултатите, когато заявката се изпълнява, като използвате клауза ORDER BY. Ако използвате клауза ORDER BY, това е последната клауза в SQL командата.

Клаузата ORDER BY съдържа списък на полетата, които искате да използвате за сортиране, в същия ред, в който искате да приложите операциите на сортиране.

Нека например да искате резултатите ви да са сортирани първо по стойността на полето Фирма в низходящ ред и – ако има записи със същата стойност за Фирма – сортирани след стойностите в полето Имейл адрес във възходящ ред. Клаузата ORDER BY ще изглежда горе-долу по следния начин:

ORDER BY Company DESC, [E-mail Address]

Забележка: По подразбиране Access сортира стойностите във възходящ ред (A-Z, от най-малкото към най-голямото). Вместо това използвайте ключовата дума DESC, за да сортирате стойностите в низходящ ред.

За повече информация относно клаузата ORDER BY вж. темата ORDER BY Клауза.

Най-горе на страницата

Работа с обобщени данни: GROUP BY и HAVING

Понякога искате да работите със обобщени данни, като например общата сума на продажбите за месец или най-скъпите артикули в дадена наличност. За да направите това, прилагате агрегатна функция към поле във вашата клауза SELECT. Ако например искате вашата заявка да показва броя на имейл адресите, посочени за всяка фирма, вашата клауза SELECT може да изглежда горе-долу по следния начин:

SELECT COUNT([E-mail Address]), Company

Агрегатните функции, които можете да използвате, зависят от типа на данните, които са в полето или израза, които искате да използвате. За повече информация относно наличните агрегатни функции вж. статията Агрегатни SQL функции.

Задаване на полета, които не се използват в агрегатна функция: Клаузата GROUP BY

Когато използвате агрегатни функции, обикновено трябва също да създадете клауза GROUP BY. Клаузата GROUP BY изброява всички полета, към които не прилагате агрегатна функция. Ако прилагате агрегатни функции към всички полета в заявка, не е необходимо да създавате клаузата GROUP BY.

Клауза GROUP BY следва непосредствено клаузата WHERE или клаузата FROM, ако няма клауза WHERE. Клаузата GROUP BY изброява полетата така, както са показани в клаузата SELECT.

Ако например продължите предишния пример, ако клаузата SELECT приложи агрегатна функция към [Имейл адрес], но не и към Фирма, клаузата GROUP BY ще изглежда горе-долу по следния начин:

GROUP BY Company

За повече информация относно клаузата GROUP BY вж. темата GROUP BY Клауза.

Ограничаване на агрегатните стойности с помощта на критерии за група: клаузата HAVING

Ако искате да използвате критерии, за да ограничите резултатите, но полето, към което искате да приложите критерии, се използва в агрегатна функция, не можете да използвате клауза WHERE. Вместо това можете да използвате клауза HAVING. Клаузата HAVING работи като клауза WHERE, но се използва за обобщени данни.

Нека например да използвате функцията AVG (която изчислява средна стойност) с първото поле във вашата клауза SELECT:

SELECT COUNT([E-mail Address]), Company

Ако искате заявката да ограничава резултатите въз основа на стойността на тази функция COUNT, не можете да използвате критерии за това поле в клаузата WHERE. Вместо това поставяте критериите в клауза HAVING. Ако например искате заявката да върне редове само ако има повече от един имейл адрес, свързан с фирмата, клаузата HAVING може да изглежда по следния начин:

HAVING COUNT([E-mail Address])>1

Забележка: Заявката може да има клауза WHERE и клауза HAVING – критерии за полета, които не се използват в агрегатна функция, влизат в клаузата WHERE, а критериите за полетата, които се използват с агрегатни функции, отиват в клаузата HAVING.

За повече информация относно клаузата HAVING вж. темата HAVING Клауза.

Най-горе на страницата

Комбиниране на резултати от заявка: UNION

Когато искате да прегледате всички данни, върнати заедно от няколко подобни заявки за избиране, като комбиниран набор, използвате оператора UNION.

Операторът UNION ви позволява да комбинирате две команди SELECT в една. Командите SELECT, които комбинирате, трябва да имат един и същ брой изходни полета, в един и същ ред и със същите или съвместими типове данни. Когато изпълните заявката, данните от всеки набор от съответстващи полета се комбинират в едно изходно поле, така че резултатът от заявката има същия брой полета като всяка от командите за избиране.

Забележка: За целите на заявките за обединение данните от числов и текстов тип са съвместими.

Когато използвате оператора UNION, можете също да зададете дали резултатите от заявката трябва да включват дублирани редове, ако има такива, с помощта на ключовата дума ALL.

Основният SQL синтаксис за заявка за обединение, която съчетава две команди SELECT, е както следва:

SELECT field_1FROM table_1UNION [ALL]SELECT field_aFROM table_a;

Да предположим например, че имате таблица с име "Продукти" и друга таблица с име "Услуги". И двете таблици имат полета, които съдържат името на продукта или услугата, цената, гаранцията или наличността на гаранцията и дали предлагате продукта или услугата изключително. Въпреки че таблицата "Продукти" съхранява информация за гаранцията, а таблицата "Услуги" съхранява информация за гаранция, основната информация е същата (независимо дали даден продукт или услуга включва обещание за качество). Можете да използвате заявка за обединение, като например следната, за да комбинирате четирите полета от двете таблици:

SELECT name, price, warranty_available, exclusive_offerFROM ProductsUNION ALLSELECT name, price, guarantee_available, exclusive_offerFROM Services;

За повече информация как да комбинирате команди SELECT с помощта на оператора UNION, вижте Комбиниране на резултатите от няколко заявки за избиране с помощта на заявка за обединение.

Най-горе на страницата

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.