Вмъкване, изтриване, актуализиране на записи в базата данни. Въведение в SQL изразите; създаване на най-простите SQL заявки в Access с помощта на командата SELECT с помощта на IN, BETWEEN, LIKE операторите GROUP BY клауза

06.04.2023

Квадратните скоби на правилата означават [незадължителна част] от конструкцията. Вертикалната лента показва избора между опции (var1|var2). Многоточие означава възможно повторение няколко пъти - пъти 1, пъти 2 [, ...]

Изявление SELECT

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

Синтаксис

ИЗБЕРЕТЕ[ предикат] { * | маса.* | [маса.]поле1

[, [маса.]поле2 [, ...]]}
ОТ табличен_израз [, ...]




Операторът SELECT включва следните елементи.

елемент

Описание

Предикат

Един от следните предикати: ALL, DISTINCT, DISTINCTROW или TOP. Предикатите се използват за ограничаване на броя на върнатите записи. Ако не е зададен предикат, по подразбиране е ВСИЧКИ.

Указва, че всички полета са избрани от дадената таблица или таблици

Таблица

Името на таблицата, от чиито полета се избират записи

поле1, поле2

Имената на полетата, съдържащи извлечените данни. Ако са посочени няколко полета, данните ще бъдат извлечени в реда, в който са изброени техните имена.

псевдоним1, псевдоним2

Имена, използвани като заглавия на колони вместо оригинални имена на колони маси

табличен_израз

Едно или повече имена на таблици, съдържащи данните за извличане.

външна_база_данни

Името на базата данни, съдържаща таблиците, посочени в компонента табличен_изразако не са в текущата база данни

Забележки

За да изпълни тази операция, механизмът на базата данни на Microsoft Access търси определените таблици, извлича желаните колони, избира редовете, които отговарят на зададените условия, и сортира или групира получените редове в указания ред.

Изявленията SELECT не променят данните от базата данни.

Операторът SELECT обикновено е първата дума на SQL оператор (SQL оператор (низ). Израз, който дефинира SQL команда, като SELECT, UPDATE или DELETE, и включва клаузи, като WHERE или ORDER BY. SQL изрази/ низовете обикновено се използват в заявки и в агрегатни функции.). Повечето SQL изрази са или SELECT изрази, или SELECT...INTO изрази.

Минималният синтаксис за оператор SELECT е както следва:

ИЗБЕРЕТЕ полетаОТ маса

Можете да използвате звездичка (*), за да изберете всички полета в таблица. Следващият пример избира всички полета в таблицата Служители.

ИЗБЕРЕТЕ * ОТ Служители;

Ако името на полето е включено в повече от една таблица в клаузата FROM, предхождайте го с името на таблицата и израза «.» (точка). В следващия пример полето Отдел присъства в таблиците Служители и Шефове. SQL операторът избира отделите от таблицата Employees и имената на шефовете от таблицата Bosses.

ИЗБЕРЕТЕ Служители. Отдел, ръководители. Изпълнително име FROM Employees INNER JOIN Executives WHERE Employees. Отдел = Ръководители. отдел;

Когато създавате обект RecordSet, името на полето на таблицата се използва от механизма на базата данни на Microsoft Access като име на обекта „Поле“ в обекта. рекорден набор. Ако името на полето трябва да бъде променено или не е предоставено от израза, който генерира полето, използвайте запазена дума (Резервирана дума. Дума, която е езиков елемент, като например езика на Visual Basic. оператори и обекти.) AS. Следващият пример показва как заглавката "Ден" се използва за име на върнатия обект Полев получения обект рекорден набор.

ИЗБЕРЕТЕ Рожден ден КАТО Ден ОТ Служители;

Когато работите с агрегатни функции или заявки, които връщат двусмислени или идентични имена на обекти Поле, трябва да използвате клаузата AS, за да създадете друго име на обект Поле. В следващия пример върнатият обект Полев получения обект рекорден наборнаречено „Преброяване“.

SELECT COUNT(EmployeeCode) AS Census FROM Employees;

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

клауза FROM

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

Синтаксис

ИЗБЕРЕТЕ поле_списък
ОТ табличен_израз

Операторът SELECT, който съдържа клаузата FROM, включва следните елементи:

елемент

Описание

поле_списък

табличен_израз

Израз, който дефинира една или повече таблици - източници на данни. Изразът може да бъде име на таблица, име на съхранена заявка или резултатен израз, съставен с помощта на операциите INNER JOIN, LEFT JOIN или RIGHT JOIN

външна_база_данни

Пълен път до външна база данни, съдържаща всички таблици, посочени в табличен_израз

Забележки


Наличието на клаузата FROM след оператора SELECT е задължително.

Ред на изброяване на таблиците в табличен_изразняма значение

Използване на свързани таблици (Свързана таблица. Таблица, която се съхранява във файл, който не принадлежи към отворена база данни, но е достъпен от Microsoft Access. Потребителят има възможност да добавя, изтрива и променя записи в свързаната таблица, но не може да промени структурата си.) вместо изречение IN, можете да направите процеса на извличане на данни от външна основаданните по-прости и ефективни.

Примерът по-долу показва как да извлечете данни от таблицата Employees.

ИЗБЕРЕТЕ Фамилия, Собствено име

ОТ служители;

Посочете записите, избрани за SQL заявки (SQL (Език за структурирани заявки). Структуриран език за програмиране на заявки и база данни, широко използван за достъп, заявки, актуализиране и манипулиране на данни в релационни СУБД.).

Синтаксис

ИЗБЕРЕТЕ ]]
ОТ маса

Операторът SELECT, съдържащ тези предикати, включва следните компоненти:

Компонент

Описание

Подразбира се, ако нито един от предикатите не е включен. Механизмът на базата данни на Microsoft Access избира всички записи, които отговарят на условията на SQL оператор (SQL оператор (низ). Израз, който дефинира SQL команда, като SELECT, UPDATE или DELETE, и включва клаузи, като WHERE или ORDER BY SQL изрази/низове обикновено се използват в заявки и в агрегатни функции.). Следващите два идентични примера показват как да върнете всички записи в таблицата Employees.

ОТ служители

ПОРЪЧКА ПО EmployeeCode;

ОТ служители

ПОРЪЧКА ПО EmployeeCode;

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

ИЗБЕРЕТЕ РАЗЛИЧЕН

Ако компонентът DISTINCT е пропуснат, заявката връща и двата записа с фамилно име Иванов.

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

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

Изключва запис на данни, които се повтарят изцяло и не съдържат отделни полета с едни и същи данни. Да приемем, че е създадена заявка, която обединява таблиците „Клиенти“ и „Поръчки“ чрез полето „CustomerCode“. Таблицата Customers не съдържа дублиращи се полета CustomerID, но те съществуват в таблицата Orders, тъй като всеки клиент може да има няколко поръчки. Следният SQL оператор показва как да използвате компонента DISTINCTROW за изброяване на организации, които са направили поне една поръчка, без да споменавате подробностите за тези поръчки.

ИЗБЕРЕТЕ DISTINTROW Име ОТ Клиенти INNER JOIN Поръчки

ON клиенти. CustomerCode = Поръчки. Клиентски код

ПОРЪЧКА ПО Заглавие;

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

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

ВРЪХ н

Връща определен брой записи, които са сред първите или скорошни записидиапазонът, определен от клаузата ORDER BY. Да предположим, че искате да покажете имената на най-добрите 25 ученици от випуск 1994 г.

Име, фамилия

WHERE GraduationYear = 2003

ПОРЪЧКА ПО GradePointAverage DESC;

Ако не включите клауза ORDER BY, заявката ще върне произволен набор от 25 записа от таблицата Students, която отговаря на клаузата WHERE.

Предикатът TOP не изисква избор между еднакви стойности. Ако 25-ият и 26-ият запис от предишния пример имат еднакъв GPA, заявката ще върне 26 записа.

Можете също да използвате запазената дума PERCENT, за да върнете някакъв процент от първите или последните записи в диапазона, определен от клаузата ORDER BY. Да приемем, че вместо първите 25, искате да покажете най-ниските 10% от учениците в випуска.

ИЗБЕРЕТЕ ТОП 10 ПРОЦЕНТА

Име, фамилия

WHERE GraduationYear = 2003

ПОРЪЧКА ПО GradePointAverage ASC;

Предикатът ASC определя изхода на стойности от долната част на диапазона. Стойността, която следва предиката TOP, трябва да бъде стойност от тип Integer (Цяло число тип данни. Основният тип данни, използван за съхраняване на цели числа. Променлива Integer се съхранява като 64-битово (8-байтово) число в диапазона -32768 до 32767. ) без знак.

Предикатът TOP не засяга възможността за актуализиране на заявката.

маса

Името на таблицата, от която се извличат записи.

Вижте също

Изявление SELECT

клауза FROM

WHERE клауза

Определя кои записи от таблиците, изброени в клаузата FROM, се обработват от операторите SELECT, UPDATE или DELETE.

Синтаксис

ИЗБЕРЕТЕ поле_списък
ОТ табличен_израз
КЪДЕТО условия_за_селекция

Инструкция SELECT, съдържаща клауза WHERE, има следните части.

Част

Описание

поле_списък

Името на полето или полетата, извлечени заедно с всякакви псевдоними (Псевдоним (SQL). Алтернативно име за таблица или поле в израз. Псевдонимите обикновено се използват като по-кратки имена на таблици или полета за улеснение при по-късна справка в програмите, за предотвратяване на двусмислени препратки и към по-описателни имена при показване на резултати от заявка.), предикати (ALL, DISTINCT, DISTINCTROW или TOP) или с всяка друга опция на оператора SELECT.

табличен_израз

Името на таблицата или таблиците, от които се извличат данните.

условия_за_селекция

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

Забележки

Механизмът на базата данни на Microsoft Access избира записи, които отговарят на условията, изброени в клаузата WHERE. Ако не е указана клауза WHERE, заявката връща всички редове в таблицата. Ако заявка указва множество таблици, но не указва клауза WHERE или JOIN, заявката създава декартово произведение (декартово произведение. Е резултат от оператор SQL SELECT, който има клауза FROM, която препраща към две или повече таблици и няма WHERE или JOIN клауза, която указва метод за присъединяване.) таблици.

Клаузата WHERE не е задължителна, но ако е, трябва да следва клаузата FROM. Например, можете да изберете всички служители от отдела по продажбите (WHERE Отдел = "Продажби") или всички клиенти на възраст от 18 до 30 (WHERE Възраст между 18 и 30).

Ако клаузата JOIN не се използва за SQL операция за свързване на множество таблици, полученият обект Набор от записище бъде невъзможно да се актуализира.

Клаузата WHERE е подобна на клаузата HAVING и дефинира избраните записи. След като записите са групирани от клаузата GROUP BY, клаузата HAVING също определя кой запис да се покаже.

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

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

ИЗБЕРЕТЕ Фамилия, Заплата ОТ Служители WHERE Заплата > 21000;

Клаузата WHERE може да съдържа до 40 израза, свързани с логически оператори (например, ИИ ИЛИ).

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

ИЗБЕРЕТЕ [Любим ресторант на клиента]

Като дадете аргумент условия_за_селекция, литерали за дата (Литерал за дата. Всяка поредица от валидни знаци за формат, затворени в знаци за цифри (#). Валидни формати са форматът за дата, определен в настройките за език и стандарти, и универсалният формат за дата.) трябва да бъдат представени в американски формат, дори ако се използва неамерикански формат.версия на машината за база данни на Microsoft Access. Например датата „10 май 1996 г.“ се записва като 10/5/96 в Обединеното кралство и като 05/10/1996 в Русия. Не забравяйте да оградите литералите за дата в цифрови знаци (#), както е показано в примерите по-долу.

За да намерите записи за 10 май 1996 г. в базата данни на Обединеното кралство, използвайте следния SQL оператор:

SELECT * FROM Orders WHERE ShipDate = #10.05.1996#;

Можете също да използвате функцията DateValue, разпознаване на международни параметри, определени от Microsoft Windows®. Например за Русия използвайте следния код:

SELECT * FROM Orders WHERE Дата на доставка = DateValue("05/10/1996");

И следният код е за Обединеното кралство:

SELECT * FROM Orders WHERE ShippingDate = DateValue("10/5/96");

Забележка.Ако колоната, посочена в реда с критерии за избор, е от тип GUID (ID на реплика (GUID). 16-байтово поле в база данни на Microsoft Access, използвано за уникални идентификатори при репликация. GUID се използват за идентифициране на реплики, набори реплики, таблици, записи и други обекти. В базите данни на Microsoft Access GUID се наричат ​​идентификатори на реплики.), синтаксисът, използван в условията на филтъра, е малко по-различен.

WHERE ReplicaID=(GUID(AB-CDEF0ABCDEF))

Уверете се, че вложените скоби и тирета са поставени правилно.

Страница източник: http://office. /en-us/access/HA.aspx? pid=CH

ГРУПИРАНЕ ПО оферта

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

Синтаксис

ИЗБЕРЕТЕ поле_списък
ОТ маса
КЪДЕТО условие_за_селекция

Операторът SELECT, който съдържа клаузата GROUP BY, включва следните елементи:

елемент

Описание

поле_списък

Имена на полета, извлечени заедно с всякакви псевдоними (Псевдоним (SQL). Алтернативно име за таблица или поле в израз. Псевдонимите обикновено се използват като по-кратки имена на таблици или полета за улеснение при по-късни препратки в програмите, за предотвратяване на двусмислени препратки, и за получаване на по-информативни имена при показване на резултатите от заявката.) и статистически SQL функции, предикати (ALL, DISTINCT, DISTINCTROW или TOP) или други опции на израза SELECT

маса

условия_за_селекция

условие за избор. Ако изразът съдържа клауза WHERE, след като бъде приложен към записи, стойностите ще бъдат групирани от механизма на базата данни на Microsoft Access.

групови_списъци с полета

групови_списъци с полета

Забележки

Клаузата GROUP BY не е задължителна.

Ако SQL агрегатите не са включени в оператора SELECT, обобщените стойности не се изчисляват.

GROUP BY стойности на полето, които са Null (Null. Стойност, която може да бъде въведена в поле или използвана в изрази и заявки за указване на липсващи или неизвестни данни. В Visual Basic ключова дума Null указва стойност Null. Някои полета, като например полета за първичен ключ, не могат да съдържат стойности Null.) са групирани и не са пропуснати. Въпреки това ценностите Нуланито една от SQL статистическите функции не се оценява.

Клаузата WHERE се използва за изключване на редове, които не трябва да бъдат групирани. Клаузата HAVING се използва за филтриране на записи след групиране.

Полета от списъка с полета GROUP BY, които не съдържат данни от тип Memo (Тип данни „MEMO Field“. Тип данни на полето в базата данни на Microsoft Access. Едно Memo поле може да съдържа до 65535 знака.) или OLE обект ( Тип данни „OLE обектно поле". Тип данни на поле, използван за съхраняване на обекти от други приложения, свързани или вградени в база данни на Microsoft Access.) може да препраща към всяко поле във всяка таблица, посочена в клаузата FROM, дори ако полето не е включени в оператора SELECT. За целта е достатъчно да имате поне една SQL агрегатна функция в оператора SELECT. Механизмът на базата данни на Microsoft Access не позволява групиране по полета, които съдържат данни от типа "MEMO поле" или "OLE обект".

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

Вижте също

Изявление SELECT

Изявление SELECT...INTO

Предикати ALL, DISTINCT, DISTINCTROW, TOP

клауза FROM

ИМА оферта

ПОРЪЧАЙ ПО оферта

WHERE клауза

SQL статистически функции

Страница източник: http://office. /en-us/access/HA.aspx? pid=CH

ИМА оферта

Указва групирани записи, които да се показват в оператор SELECT с клауза GROUP BY. След като записите са групирани от клаузата GROUP BY, клаузата HAVING ще покаже онези записи, които отговарят на нейните условия.

Синтаксис

ИЗБЕРЕТЕ поле_списък
ОТ маса
КЪДЕТО избор_условия
ГРУПИРАЙ ПО групови_списъци с полета

Оператор SELECT, който съдържа клауза HAVING, включва следните елементи:

елемент

Описание

поле_списък

Имена на полета, заредени с всякакви псевдоними (Псевдоним (SQL). Алтернативно име за таблица или поле в израз. Псевдонимите обикновено се използват като по-кратки имена на таблици или полета за улеснение при по-късни препратки в програмите, за предотвратяване на двусмислени препратки, и за получаване на по-смислени имена при показване на резултати от заявка.) и SQL агрегати, предикати (ALL, DISTINCT, DISTINCTROW или TOP) или други опции на оператор SELECT.

маса

Името на таблицата, от която се зареждат записи

условие_за_селекция

условие за избор. Ако изразът съдържа клауза WHERE, след като бъде приложен към записи, механизмът на базата данни на Microsoft Access ще групира стойностите.

групови_списъци с полета

Имена на полета (максимум 10), използвани за групиране на записи. Ред на имената в групови_списъци с полетаопределя нивото на групиране - от най-високото до най-ниското

групово_условие

Израз, който указва кои записи да се показват

Забележки

Клаузата HAVING не е задължителна.

Клаузата HAVING е подобна на клаузата WHERE, която указва избора на записи. След групиране на записи с клаузата GROUP BY, клаузата HAVING определя кои записи да се показват.

SELECTTypeCode,

Сума (в наличност)

ОТ продукти

ГРУПИРАНЕ ПО Типов код

ИМАЩ Sum(InStock) > 100 и като "TEL*";

Клаузата HAVING може да съдържа до 40 израза, свързани с логически оператори като ИИ Или.

Страница източник: http://office. /en-us/access/HA.aspx? pid=CH

ПОРЪЧАЙ ПО оферта

Сортира записите, върнати от заявката във възходящ или низходящ ред по стойностите на посочените полета.

Синтаксис

ИЗБЕРЕТЕ поле_списък
ОТ маса
КЪДЕТО условие_за_селекция
[, поле2 ][, ...]]]

Оператор SELECT, който съдържа клауза ORDER BY, включва следните елементи.

елемент

Описание

поле_списък

Имена на полета, извлечени заедно с всякакви псевдоними (Псевдоним (SQL). Алтернативно име за таблица или поле в израз. Псевдонимите обикновено се използват като по-кратки имена на таблици или полета за улеснение при по-късни препратки в програмите, за предотвратяване на двусмислени препратки, и за получаване на по-смислени имена при показване на резултати от заявка.) и SQL агрегати, предикати (ALL, DISTINCT, DISTINCTROW или TOP) или други опции на оператор SELECT.

маса

Името на таблицата, от която се извличат записи

условия_за_селекция

условия за избор. Ако изразът съдържа клауза WHERE, тогава след прилагането му към записите, механизмът на базата данни на Microsoft Access ще подреди стойностите на записите

поле1, поле2

Имената на полетата, по които се сортират записите.

Забележки

Клаузата ORDER BY не е задължителна. Трябва да се използва, когато трябва да покажете данни в сортирана форма.

Редът на сортиране по подразбиране е (Ред на сортиране. Начин за подреждане на данни въз основа на техните стойности и тип. Данните могат да бъдат сортирани по азбучен ред, по числови стойностиили по дата. Редът на сортиране може да бъде възходящ (0 до 100, A до Z) или низходящ (100 до 0, Z до A.) възходящ (A до Z, 0 до 9). Примерите по-долу демонстрират сортиране на имена на служители по фамилия.

ИЗБЕРЕТЕ Фамилия, Собствено име

ОТ служители

ПОРЪЧКА ПО Фамилия;

ИЗБЕРЕТЕ Фамилия, Собствено име

ОТ служители

ПОРЪЧКА ПО Фамилия ASC;

За да сортирате полетата в низходящ ред (Z до A, 9 до 0), добавете запазената дума DESC към името на всяко от тези полета. Следващият пример сортира в низходящ ред въз основа на заплатите на служителите.

ИЗБЕРЕТЕ Фамилия, Заплата

ОТ служители

ПОРЪЧКА ПО Заплата DESC, Фамилия;

Ако посочите полета в клаузата ORDER BY, които съдържат данни от тип MEMO Field (Тип данни „MEMO Field“. Типът данни на полето в базата данни на Microsoft Access. MEMO поле може да съдържа до 65535 знака.) или OLE обект Поле (Тип данни „OLE Object Field“. Тип данни на поле, използван за запазване на обекти от други приложения, които са свързани или вградени в база данни на Microsoft Access.), това ще доведе до грешка. Механизмът на базата данни на Microsoft Access не може да сортира тези типове полета.

Клаузата ORDER BY обикновено е последната клауза в SQL оператор (SQL оператор (низ). Израз, който дефинира SQL команда, като SELECT, UPDATE или DELETE, и включва клаузи, като WHERE или ORDER BY. SQL изрази /редове обикновено се използват в заявки и в статистически функции.).

В клаузата ORDER BY могат да бъдат включени допълнителни полета. Записите първо се сортират по полето, посочено първо в клаузата ORDER BY. След това записите с еднаква стойност в първото поле се сортират по полето, посочено във второто поле и т.н.
Вижте също

Изявление SELECT

Изявление SELECT...INTO

Предикати ALL, DISTINCT, DISTINCTROW, TOP

клауза FROM

ГРУПИРАНЕ ПО оферта

ИМА оферта

WHERE клауза

SQL статистически функции

Страница източник: http://office. /en-us/access/HA.aspx? pid=CH

Операция INNER JOIN

Обединява записи от две таблици, ако свързващите полета на тези таблици съдържат еднакви стойности.

Синтаксис

ОТ маса 1ВЪТРЕШНО СЪЕДИНЕНИЕ таблица 2НА маса 1.поле1 таблица на оператор_сравнение2.поле2

Операцията INNER JOIN се състои от следните елементи:

елемент

Описание

маса 1, таблица 2

Имена на таблици, съдържащи обединени записи

поле1, поле2

Имена на свързани полета. Полетата, които не са числови, трябва да бъдат от един и същ тип данни (Тип данни. Характеристика на полето, която определя типа данни, които това поле може да съдържа. Налични са следните типове данни: булеви, цели, дълги, валутни, единични, двойни, Дата, низ и вариант (по подразбиране).) и съдържат данни от същия вид. Имената на тези полета обаче могат да бъдат различни.

оператор_сравнение

Всеки оператор за сравнение: (=,<, >, <=, >= или<>)

Операторът SELECT инструктира механизма на базата данни на Microsoft Access да върне информация от базата данни като набор от записи.

Синтаксис

ИЗБЕРЕТЕ[ предикат] { * | маса.* | [маса.]поле1 [, [маса.]поле2 [, ...]]}
ОТ табличен_израз [, ...]




Операторът SELECT включва следните елементи.

елемент

Описание

предикат

Един от следните предикати: ALL, DISTINCT, DISTINCTROW или TOP. Предикатите се използват за ограничаване на броя на върнатите записи. Ако не е зададен предикат, по подразбиране е ВСИЧКИ.

Указва, че всички полета са избрани от указаната таблица или таблици.

маса

Името на таблицата, съдържаща полетата с избраните записи.

поле1, поле2

Имената на полетата, съдържащи извлечените данни. Ако са посочени няколко полета, данните ще бъдат извлечени в реда, в който са изброени техните имена.

псевдоним1, псевдоним2

Имена, които се използват като заглавия на колони вместо оригиналните имена на колони в маса.

табличен_израз

Едно или повече имена на таблици, съдържащи данните за извличане.

външна_база_данни

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

Бележки.

За да изпълни тази операция, механизмът на базата данни на Microsoft Access търси определената таблица или таблици, извлича посочените колони, избира редовете, които отговарят на условието, и сортира получените редове в указания ред.

Изявленията SELECT не променят данните в базата данни.

SELECT обикновено е първата дума в SQL израз. SELECT и SELECT...INTO са най-често срещаните SQL оператори.

Минималният синтаксис за оператор SELECT е както следва:

ИЗБЕРЕТЕ полетаОТ маса

Можете да използвате звездичка (*), за да изберете всички полета в таблица. Следващият пример показва, че всички полета са избрани в таблицата Служители.

ИЗБЕРЕТЕ * ОТ Служители;

Ако името на полето е включено в повече от една таблица в клаузата FROM, предхождайте го с името на таблицата и израза . (точка). В следващия пример полето „Отдел“ се среща едновременно в две таблици: „Служители“ и „Мениджъри“. С помощта на SQL оператора можете да изберете отдели от таблицата Служители и имената на супервайзорите от таблицата Ръководители.

SELECT Employees.Department, Supervisors.SupvName FROM Employees INNER JOIN Supervisors WHERE Employees.Department = Supervisors.Department;

Когато създавате обект RecordSet, името на полето на таблицата се използва от системата за СУБД на Microsoft Access като име на обекта "Поле" в обекта Набор от записи. Ако името на полето трябва да бъде променено или не е предоставено от израза, който генерира полето, използвайте запазената дума AS. Следващият пример показва как заглавката "Дата на раждане" се използва за име на върнатия обект Полев получения обект Набор от записи.

ИЗБЕРЕТЕ Рождена дата КАТО Раждане ОТ служители;

При използване на агрегатни функции или заявки, които връщат двусмислени или дублирани имена на обекти Поле, трябва да използвате клаузата AS, за да присвоите обекта Поледруго име. В примера по-долу върнатият обект Полев получения обект Набор от записисе задава име "Брой_служители".

SELECT COUNT(EmployeeID) AS HeadCount FROM Employees;

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

Лаборатория №1

SQL: RETRIEVE DATA - командаИЗБЕРЕТЕ

Цел на работата:

  • Запознайте се с SQL изразите
  • научете как да създавате прости SQL заявки в Access с помощта на командата SELECT;

· използването на оператори IN, BETWEEN, LIKE, IS NULL.

Упражнение№1. Създайте заявка за избор в SQL режим на всички стойности на полетата СОБСТВЕНО ИМЕ и ФАМИЛИЯ от таблицата СТУДЕНТИ.

ИЗБЕРЕТЕ ИМЕ, ФАМИЛИЯ

ОТ СТУДЕНТИ;

Упражнение№2 . Създайте заявка за избор в SQL режим за всички колони на таблицата STUDENTS.

ИЗБЕРЕТЕ*

ОТ СТУДЕНТИ;


Задача номер 3.Създайте заявка за избор в SQL режим на имената на градовете, в които живеят студенти, информация за които е в таблицата ЛИЧНИ ДАННИ.

ИЗБЕРЕТЕ ОТДЕЛЕН ГРАД

ОТ [ЛИЧНИ ДАННИ];

Задача номер 4.Създайте заявка за избор в SQL режим, която избира имената на всички студенти с фамилия Иванов, чиято информация е в таблицата СТУДЕНТИ.

ИЗБЕРЕТЕ ФАМИЛИЯ, ИМЕ

ОТ СТУДЕНТИ

WHERE FURNAME="Иванов";

Задача номер 5. Създайте заявка за селекция в SQL режим за получаване на имена и фамилии на студенти, обучаващи се в група УИТ-22 на бюджетна форма на обучение.

ИЗБЕРЕТЕ ФАМИЛИЯ, ИМЕ

ОТ СТУДЕНТИ

WHERE GROUP="HIT-22" AND BUDGET=true;

Задача номер 6. Създайте заявка в SQL режим. за извадка от таблицата УЛАГАНЕ НА ИЗПИТ информация за студенти с оценки само 4 и 5.

ИЗБЕРЕТЕ*

ОТ[ПРОМЯНАИЗПИТИ]

КЪДЕТООЦЕНКАIN (4,5);

Задача номер 7.Създайте zanpoc и SQL режим за извадка от информация за студенти, които имат изпитна оценка 3 по предмета IOSU.

ИЗБЕРЕТЕ*

ОТ[ПРОМЯНАИЗПИТИ]

КЪДЕТОВЕЩ=" ISSU" ИОЦЕНКАНе е в (4.5);

Задача номер 8.Създайте заявка в SQL режим, за да изберете записи за елементи, чиито часове са между 100 и 130.

ИЗБЕРЕТЕ*

ОТАРТИКУЛИ

КЪДЕТОГЛЕДАММЕЖДУ 100 И 130;


Задача номер 9.Създайте заявка в SQL режим, за да изберете от таблицата СТУДЕНТИ информация за студенти, чиито фамилни имена започват например с буквата "С".

ИЗБЕРЕТЕ*

ОТСТУДЕНТИ

КЪДЕТОФАМИЛИЯКАТО"СЪС*";

Заключение:По време на лабораторна работасе запознаха с SQL операторите, научиха как да създават прости SQL заявки в Access с помощта на командата SELECT с помощта на операторите IN, BETWEEN, LIKE.

Примерите за SQL заявки могат да се използват за учене и практикуване на писане на SQL заявки в MS Access.

Една SQL заявка може да бъде вложена в друга. Подзаявката не е нищо повече от заявка в заявка. Обикновено подзаявка се използва в клауза WHERE. Но има и други начини за използване на подзаявки.

Заявка Q011.Показва информация за продуктите от таблицата m_product, чиито кодове също са в таблицата m_income:

ИЗБЕРЕТЕ*
ОТ m_product
WHERE id IN (ИЗБЕРЕТЕ product_id FROM m_income);

Заявка Q012.Показва се списък с продукти от таблицата m_product, чиито кодове не са в таблицата m_outcome:

ИЗБЕРЕТЕ*
ОТ m_product
WHERE id NOT IN (ИЗБЕРЕТЕ product_id FROM m_outcome);

Заявка Q013.Тази SQL заявка връща уникален списък с кодове и имена на продукти, които имат кодове в таблицата m_income, но не и в таблицата m_outcome:

ИЗБЕРЕТЕ ОТДЕЛЕН product_id, заглавие
ОТ m_income INNER JOIN m_product
НА m_income.product_id=m_product.id
WHERE product_id NOT IN (ИЗБЕРЕТЕ product_id FROM m_outcome);

Заявка Q014.От таблицата m_category се показва уникален списък с категории, чиито имена започват с буквата M:

ИЗБЕРЕТЕ ОТДЕЛНО заглавие
ОТ m_product
WHERE заглавие LIKE "M*";

Заявка Q015.Пример за извършване на аритметични операции върху полета в заявка и преименуване на полета в заявка (псевдоним). Този пример изчислява разход = количество*цена и печалба за всеки запис на консумация на артикул, като се приема, че печалбата е 7 процента от продажбите:


сума*цена/100*7 AS печалба
ОТ m_резултат;

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

ИЗБЕРЕТЕ dt, product_id, сума, цена, сума*цена КАТО сума_на резултата,
сума_изход*0,07 AS печалба
ОТ m_резултат;

Заявка Q017.С помощта на оператора INNER JOIN можете да комбинирате данни от множество таблици. В следващия пример, в зависимост от стойността на ctgry_id, всеки запис в таблицата m_income се съпоставя с името на категорията от таблицата m_category, към която принадлежи продуктът:

ИЗБЕРЕТЕ c.title, b.title, dt, сума, цена, сума*цена КАТО сума_доход
FROM (m_income AS a INNER JOIN m_product AS b ON a.product_id=b.id)
INNER JOIN m_category AS c ON b.ctgry_id=c.id
ORDER BY c.title, b.title;

Заявка Q018.Функции като SUM - сума, COUNT - количество, AVG - средно аритметично, MAX - максимална стойност, MIN - минимална стойност се наричат ​​агрегатни функции. Те приемат множество стойности и връщат една стойност, когато се обработват. Пример за изчисляване на сумата от произведението на полетата сума и цена с помощта на агрегатната функция SUM.

Този урок е за SQL заявкасутринтакъм базата данни на VBA достъп. Ще разгледаме как се изпълняват VBA заявките INSERT, UPDATE, DELETE към базата данни и също така ще научим как да получим конкретна стойност от SELECT заявка.

Тези, които програмират VBA достъпи докато работят с база данни на SQL сървър, те често се сблъскват с толкова проста и необходима задача като изпращане на SQL заявка към базата данни, било то INSERT, UPDATE или проста SQL SELECT заявка. И тъй като сме начинаещи програмисти, трябва да можем и това, така че днес ще направим точно това.

Вече засегнахме темата за получаване на данни от SQL сървър, където написахме код във VBA за получаване на тези данни, например в статия за Качване на данни в текстов файл от MSSql 2008 или също засегнахме малко в материала Качване на данни от Access в шаблон на Word и Excel, но по един или друг начин го разгледахме повърхностно и днес предлагам да поговорим за това малко по-подробно.

Забележка! Всички примери по-долу се обсъждат с помощта на ADP проект на Access 2003 и база данни MSSql 2008.

Изходни данни за примери

Да кажем, че имаме таблица test_table, която ще съдържа числата и имената на месеците в годината (заявките се правят с мениджмънт студио)

СЪЗДАВАНЕ НА ТАБЛИЦА .( НЕ NULL, (50) NULL) В ДВИЖЕНИЕ

Както казах, ще използваме ADP проект, конфигуриран да работи с MS SQL 2008, в който създадох тестова форма и добавих бутон за стартиране с надпис "Бягай", които ще ни трябват, за да тестваме нашия код, т.е. ще напишем целия код в манипулатора на събития " Натискане на бутон».

Заявки за база данни INSERT, UPDATE, DELETE във VBA

За да не го протакаме дълго време, нека започнем, да кажем, че трябва да добавим ред към нашата тестова таблица ( кодът е коментиран)/

Private Sub start_Click() "Декларирайте променлива за съхраняване на низа на заявката Dim sql_query As String "Напишете заявката, от която се нуждаем, в нея sql_query = "INSERT INTO test_table (id, name_mon) VALUES ("6", "June")" "Изпълнете го с DoCmd.RunSQL sql_query End Sub

В този случай заявката се изпълнява с помощта на текущите настройки за връзка с базата данни. Можем да проверим дали данните са добавени или не.

Както можете да видите, данните са въведени.

За да изтрием един ред, пишем следния код.

Private Sub start_Click() "Декларирайте променлива за задържане на низа на заявката Dim sql_query As String "Напишете заявка за изтриване в нея sql_query = "ИЗТРИЙТЕ test_table WHERE id = 6" "Изпълнете я DoCmd.RunSQL sql_query End Sub

Ако проверим, ще видим, че желаният ред е изтрит.

За да актуализирате данните, запишете в променливата sql_query заявка за актуализиранеНадявам се смисълът да е ясен.

SELECT заявка към база данни във VBA

Тук нещата са малко по-интересни, отколкото с други SQL конструкции.

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

Private Sub start_Click() "Деклариране на променливи "За набор от записи от базата данни Dim RS As ADODB.Recordset "Низ на заявка Dim sql_query As String "Низ за показване на общи данни в съобщението Dim str As String "Създаване на нов обект за набор от записи RS = Нов ADODB .Recordset "Низ на заявка sql_query = "ИЗБЕРЕТЕ id, name_mon ОТ test_table" "Изпълнете заявка, като използвате текущите настройки за връзка на проекта, за да покажете съобщение str = str & RS.Fields("id") & "-" & RS. Fields("name_mon") & vbnewline "отидете на следващия запис RS.MoveNext Wend "Изходно съобщение msgbox str End Sub

Тук вече използваме VBA Access Loops, за да преминем през всички стойности в нашия набор от записи.

Но доста често е необходимо да се получат не всички стойности от набор от записи, а само една, например името на месеца по неговия код. И за това използването на цикъл е някак си скъпо, така че можем просто да напишем заявка, която ще върне само една стойност и ще се позовава на нея, например, ще получим името на месеца с код 5

Private Sub start_Click() "Деклариране на променливи "За набор от записи от базата данни Dim RS As ADODB.Recordset "Низ на заявка Dim sql_query As String "Низ за показване на крайната стойност Dim str As String "Създаване на нов обект за набор от записи RS = Нов ADODB.Recordset "Низ на заявка sql_query = "ИЗБЕРЕТЕ name_mon FROM test_table WHERE id = 5" "Изпълнете заявка, като използвате текущите настройки за връзка на проекта RS.open sql_query, CurrentProject.Connection, adOpenDynamic, adLockOptimistic "Вземете нашата стойност str = RS.Fields(0 ) msgbox str end sub

За универсалност тук вече се обърнахме не по името на клетката, а по нейния индекс, т.е. 0, което е първата стойност в Набор от записи, в крайна сметка получихме стойността "Може".

Както можете да видите, всичко е съвсем просто. Ако често трябва да получите конкретна стойност от базата данни ( както в последния пример), тогава ви препоръчвам да изведете целия код в отделна функция (Как да напиша функция във VBA Access 2003) с един входен параметър, например кода на месеца ( имайки предвид нашия пример) и просто, където е необходимо да се покаже тази стойност, извикайте функцията, от която се нуждаем, с необходимия параметър и това е всичко, ние значително ще намалим VBA кода и ще подобрим възприемането на нашата програма.

Това е всичко за днес. Късмет!