Access SQL: основни понятия, лексика и синтаксис

Access 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 команда, която извлича списък с фамилните имена на контакти, чието собствено име е Mary, може да прилича на това:

SELECT Last_Name
FROM Contacts
WHERE First_Name = 'Mary';

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

ИЗБИРАНЕ на отчети

За да опишете набор от данни с помощта на 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 клаузи: изберете от и къде

SQL инструкцията взема общия формуляр:

SELECT field_1
FROM table_1
WHERE criterion_1
;

Забележки: 

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

  • Всяко изявление за ИЗБИРАНЕ завършва с точка и запетая (;). Полу-двоеточието може да се показва в края на последната клауза или в ред в края на SQL командата.

Пример в Access

Следващият пример илюстрира какво е SQL инструкция за проста заявка за избиране, която може да изглежда като в Access:

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

1. Изберете клауза

2. FROM клауза

3. WHERE клауза

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

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

Клаузата SELECT

SELECT [E-mail Address], Company

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

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

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

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

Клаузата FROM

FROM Contacts

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

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

Клаузата WHERE

WHERE City="Seattle"

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

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

Можете да изпълните много от действията, които SQL ви позволява да правите, като използвате "ИЗБИРАНЕ", "от" и "WHERE" клаузи. Повече информация как да използвате тези клаузи е представена в следните допълнителни статии:

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

Сортиране на резултатите: ред по

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

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

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

ORDER BY Company DESC, [E-mail Address]

Забележка: По подразбиране Access сортира стойностите във възходящ ред (от а до я, от най-малко към най-голямо). Използвайте ключовата дума НИЗХОДЯЩо, за да сортирате стойностите в низходящ ред вместо това.

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

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

Работа с обобщени данни: ГРУПИРАне по и ИМАЩи

Понякога искате да работите с обобщени данни, като например общите продажби за един месец, или най-скъпите елементи в даден склад. За да направите това, трябва да приложите агрегатна функция към поле във вашата клауза 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.

Например, като продължите предишния пример, ако клаузата за ИЗБИРАНЕ прилага обединена функция към [имейл адрес], но не и към фирмата, клаузата GROUP BY ще наподобява следната:

GROUP BY Company

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Базовият SQL синтаксис за заявка за обединение, който комбинира две изявления за ИЗБИРАНЕ, е както следва:

SELECT field_1
FROM table_1
UNION [ALL]
SELECT field_a
FROM table_a
;

Например да предположим, че имате таблица с име Products и друга таблица с име Services. И двете таблици имат полета, които съдържат името на продукта или услугата, цената, гаранцията или гарантирането, както и това дали предлагате продукта или услугата изключително. Въпреки че таблицата Products съхранява Гаранционна информация и таблицата услуги съхранява Гаранционна информация, основната информация е една и съща (дали конкретен продукт или услуга включва обещание за качество). Можете да използвате заявка за обединение, като например по-долу, за да комбинирате четирите полета от двете таблици:

SELECT name, price, warranty_available, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee_available, exclusive_offer
FROM Services
;

За повече информация как да комбинирате ИЗБИРАНЕ на отчети с помощта на оператора за обединение, вижте комбиниране на резултатите от няколко заявки за избиране с помощта на заявка за обединение.

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

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

Разширете уменията си в Office
Преглед на обучението
Получавайте първи новите функции
Присъединете се към участниците в Office Insider

Беше ли полезна тази информация?

Благодарим ви за обратната връзка!

Благодарим ви за вашата обратна връзка. Изглежда, че ще бъде полезно да ви свържем с един от нашите агенти по поддръжката на Office.

×