Ако вашите заявки не работят достатъчно стабилно, добавянето на няколко основни SQL декларации може да помогне за подобряването на резултатите. Да разгледаме няколко типа SQL команди и клаузите или частите, които можете да редактирате, за да получите желаните резултати
Забележка: Тази статия не се отнася за уеб приложенията на Access – вид база данни, която проектирате с Access и публикувате онлайн.
В тази статия
Създаване на команда за избиране
Командата на SQL за избиране има две до три клаузи. Клаузата SELECT казва на базата данни къде да търси данните и иска от нея да върне конкретен резултат.
Забележка: Инструкциите SELECT винаги завършват с точка и запетая (;) в края на последната клауза или в самостоятелен ред в края на командата.
Следната команда за избиране иска от Access до получи информация от колоните "Имейл адрес" и "Фирма" от таблицата "Контакти" къде се намира "Сиатъл" в колоната "Град".
Горната заявка има три клаузи SELECT, FROM и WHERE.
1. Клаузата SELECT: изброява колоните, съдържащи данните, които искате да използвате, и има оператор (SELECT), следван от два идентификатора (имейл адрес и фирма). Ако някой идентификатор съдържа интервали или специални символи (например "имейл адрес"), поставете идентификатора в квадратни скоби.
2. Клауза FROM: идентифицира таблицата източник. В този пример тя има оператор (FROM), следван от идентификатор ("Контакти").
3. Клауза WHERE: незадължителна клауза. Примерът съдържа оператор (WHERE) следван от израз (Град="Сиатъл").
За повече информация за заявките за избиране вж. създаване на проста заявка за избиране.
Ето списък с общи SQL клаузи:
SQL клауза |
Какво прави |
Задължително ли е ? |
SELECT |
Съдържа списък на полетата, които съдържат данни, представляващи интерес. |
Да |
FROM |
Съдържа списък на таблиците, съдържащи полетата, изброени в клаузата SELECT. |
Да |
WHERE |
Задава критерии за полета, които трябва да бъдат изпълнени от всеки запис, за да бъде включен в резултатите. |
Не |
ORDER BY |
Задава как да се сортират резултатите. |
Не |
GROUP BY |
В SQL команда, съдържаща агрегатни функции, съдържа списък на полета, които не са обобщени в клаузата SELECT. |
Само ако има такива полета |
HAVING |
В SQL команда, съдържаща агрегатни функции, задава условия към полета, които са обобщени в командата SELECT. |
Не |
Всяка SQL клауза е съставена от условия. Ето списък с някои общи SQL условия.
Елемент на SQL |
Определение |
Пример |
идентификатор |
Име, което използвате, за да идентифицирате обект на база данни, например име на колона. |
[Имейл адрес] и фирма |
оператор |
Ключова дума, която представя действие или променя действие. |
AS |
константа |
Стойност, която не се променя, например число или NULL. |
42 |
израз |
Комбинация на идентификатори, оператори, константи и функции, които дават като резултат единична стойност. |
>= Продукти.[Единична цена] |
Персонализиране на клаузата SELECT
Персонализиране |
Пример |
За да видите само различните стойности. Използвайте ключовата дума DISTINCT във вашата клауза SELECT. |
Ако например вашите клиенти са от няколко различни клона и някои имат един и същ телефонен номер, и вие искате да видите телефонния номер в списъка само веднъж, вашата клауза SELECT би била такава:
|
Да промените начина, по който идентификаторът се появява в изглед на лист с данни, за да подобрите четливостта. Използвайте във вашата клауза SELECT оператора AS (ключова дума, която представлява действие или модифицира действие) с псевдоним на поле. Псевдонимът на поле е име, което вие присвоявате на едно поле, за да направите резултатите по-лесни за четене. |
|
Персонализиране на клаузата FROM
Персонализиране |
Пример |
Можете да използвате псевдоним на таблица или друго име, което присвоявате на таблица в команда за избиране. Псевдонимът на таблица е полезен, ако името на на таблицата е дълго, особено когато имате множество полета, които имат едно и също име от различни таблици. |
За да изберете данни от две полета с име ID, едното от които идва от таблицата tblCustomer, а другото от таблицата tblOrder:
Използвайте оператора AS, за да дефинирате псевдоними на таблици в клаузата FROM:
Можете след това да използвате тези псевдоними на таблици в клаузата SELECT както следва:
|
Използвайте съединения, за да комбинирате двойки записи от два източника на данни в един резултат или да зададете дали да се включат записи от всяка таблица, ако няма съответен запис в свързаната таблица. Съединете таблиците, така че заявката да комбинира елементите от таблиците и да изключва елементи, когато няма съответен запис в другата таблицата |
Ето как може да изглежда клаузата FROM:
|
За използването на съединения
Има два типа съединения – вътрешно и външно. В заявките вътрешните съединения се използват по-често. Когато изпълните заявка с вътрешно съединение, резултатът показва само тези елементи, за които съществува обща стойност и в двете присъединени таблици.
Външните съединения задават дали да включите данни, при които не съществува обща стойност. Външните съединения имат посока, което значи, че можете да зададете в съединението да се включат или всички записи от първата зададена таблица (това се нарича ляво съединение), или всички записи от втората таблица (това се нарича дясно съединение). Външното съединение има следния синтаксис:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Вижте повече информация за използването на съединения в заявка в Съединяване на таблици и заявки.
Персонализиране на клаузата WHERE
Клаузата WHERE включва критерии, които помагат да се ограничи броят на върнатите елементи в заявка. Вижте примери за критерии за заявки и как работят.
Пример за това как можете да персонализирате основната клауза WHERE е да ограничите резултатите на заявката: да предположим,че искате да намерите телефонния номер на клиент, но си спомняте само неговото фамилно име, например Bagel. В този пример фамилните имена се съхраняват в полето LastName, така че синтаксисът на SQL би бил:
WHERE [LastName]='Bagel'
Използвайте клаузата WHERE и за да комбинирате източници на данни за колони, които имат съвпадащи данни, но от различни типове. Това се оказва полезно, тъй като не можете да създавате съединение между полета, които имат различни типове данни. Използвайте едното поле като критерий за другото поле с ключовата дума LIKE. Ако например искате да използвате данни от таблицата "Активи" и таблицата "Служители" само когато типът на актива в полето "Тип активи" на таблицата "Активи" съдържа числото 3 в полето "Количество" на таблицата "Служители", ето как би изглеждала вашата клауза WHERE:
WHERE field1 LIKE field2
Важно: Не можете да зададете критерии за поле, използвано с агрегатна функция в клауза WHERE. Вместо това използвайте клауза HAVING, за да зададете критерии за агрегатни полета.
Персонализиране с оператора UNION
Използвайте оператора UNION, когато искате да видите комбиниран изглед на резултати от няколко подобни заявки за избиране. Ако например вашата база данни има таблица "Продукти" и таблица "Услуги" и всяка от тях има три полета: ексклузивна_оферта или продукт или услуга, цена, гаранционно_обслужване или гаранция. Въпреки че таблицата "Продукти" съхранява информация за гаранционно обслужване, а таблицата "Услуги" съхранява информация за гаранция, базовата информация е същата. Можете да използвате заявка за обединение, за да комбинирате трите полета от двете таблици така:
SELECT name, price, warranty, exclusive_offer
FROM Products UNION ALL SELECT name, price, guarantee, exclusive_offer FROM Services;
Когато изпълните заявката, данните от всеки набор от съответни полета се комбинират в едно изходно поле. За да включите всички дублиращи се редове в резултатите, използвайте оператора ALL.
Забележка: Командите SELECT трябва да имат един и същ брой изходни полета, да са подредени еднакво и да са с едни и същи или съвместими типове данни. За целите на заявките за обединение данните от числов и текстов тип са съвместими.
За повече информация за заявките за обединение вж. Използване на заявка за обединение, за да покажете обединен резултат от множество заявки.