Достъп до sql синтаксис. Внедряване на SQL в ACCESS Сравнение Microsoft Access

Министерство на образованието на Руската федерация

Кузбаски държавен технически университет

Катедра по компютърни науки

и информационни технологии

SQL заявки

Методически указания за лабораторни упражнения за студенти от специалност "Икономика и управление в предприятията" по дисциплината "Автоматизация на икономическите изчисления"

Съставено от Е.А. Бесонов

Приет на заседанието на катедрата Протокол No 11 от 23.06.2000г.

Електронно копие се съхранява в библиотеката на главната сграда на KuzGTU

Кемерово 2001г

SQL (Structured Query Language) е структуриран език за заявки.

сови) от 1986 г. е стандартният език за релационни бази данни. По-специално, той се използва в приложения на Access и Excel. Езиковият стандарт на SQL е описан в.

Заявките в MS Access се записват и изпълняват с помощта на езика SQL. Въпреки че повечето заявки могат да бъдат създадени графично (Model Queries), те се съхраняват като SQL изрази. В някои случаи (например при подчинени заявки) може да се използва само SQL език. В MS Access се използва диалектът на този език и е описан по-долу. Множество примери за SQL заявки могат да бъдат намерени в базата данни на Northwind (файл I: \ Access \ Sampapps \ Nwind.mdb).

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

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

2. SQL използва логика с три стойности. NULL (НЕИЗВЕСТНО или БЕЗ ДАННИ) се използва заедно с традиционните булеви стойности TRUE и FALSE.

3. Операциите се извършват върху цели набори от данни, а не върху отделни елементи, както в други езици за програмиране.

SQL заявката се състои от изрази. Всяка инструкция може да съдържа няколко изречения.

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

ОТ маси

Таблици - използваните таблици/заявки и техните връзки.

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

ОТ Учителите

Ако заявката се основава на две таблици, тогава е необходимо да се посочи начинът за комбинирането им - един от следните (предполага се, че читателят е запознат с тях):

Декартов продукт; INNER JOIN вътрешно съединение; LEFT JOIN ляво външно съединение; RIGHT JOIN е дясно външно съединение.

Веднага след метода на сливане трябва да поставите фразата ON Table1.Key = Table2.ExternalKey

Ключ - името на ключовото поле от страната 1. ExternalKey - името на свързващото поле от страната N.

Схема за данни

Фигурата показва схемата за свързване на таблицата (схема на данни), която ще се използва за повечето от примерите по-долу. От фигурата, например, можете да видите, че полето „Предмет“ на таблицата „Изпитващи“ е ключът (удебелен), а полето „Учител“ е външен ключ за таблицата „Учители“. Обединяването между посочените таблици е вътрешно с целостта на данните. Това се доказва от знаците 1 и ∞ в краищата на свързващата линия („Учители“ е основната таблица, а „Изпитващи“ е подчинената таблица). С външно свързване можете да видите стрелка на линията на свързване на таблиците, сочеща към подчинената таблица. Това означава, че всички записи ще бъдат показани в основната таблица, дори ако нямат съответни записи в подчинената. Например, можете да получите списък с учители и имена на предмети. Ако

някой учител не е в таблицата "Изпитващи", тогава полето с името на предмета на този учител ще бъде празно, ако се използва LEFT JOIN.

ОТ Изпитващи ВЪТРЕШНО ПРИСЪЕДИНЯВАНЕ Изпити НА Изпитващи. Тема = Изпити. Тема

В клаузата FROM преди запазените думи INNER JOIN се посочва името на таблицата от страна 1 (в нашия случай таблицата Examiners). Ако има повече от две таблици в клаузата FROM, можете да поставите съединението на двете таблици в скоби и да го третирате като една таблица, когато се свързвате с други таблици или обединявания. По този начин можете да опишете обединението на произволен брой таблици.

ОТ Учителите INNER JOIN (Изпитващи

INNER JOIN Изпити

ON Examers Subject = Изпити Тема)

ON Teachers Teacher = Examiners Teacher Цялата схема на данните е описана (виж фигурата).

Инструкцията SELECT ви позволява да изберете необходимите полета от таблици или заявки. Формат на минимален вариант:

ОТ маси;

Полетата са много изрази и имена на полета, разделени със запетаи. Пример

ИЗБЕРЕТЕ група, студент, оценка ОТ изпити;

Ако името се повтаря в няколко таблици, изброени в клаузата FROM, тогава името на таблицата и точка трябва да се поставят пред името, например: [Изпитващи].Учител или [Изпити]. [Вещ]

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

V в дадения пример в режим на таблица, заявката връща таблица

с заглавия на колони "Група", "Студент", "Оценка" (в този ред). Понякога е желателно заглавието да е различно от

име на полето. В този случай запазената дума за AS и заглавката (псевдоним) трябва да се поставят след името на полето, например:

ИЗБЕРЕТЕ група, студент КАТО Пълно име, степен

V В този случай вместо заглавието „Студент“ ще се появи „Пълно име“. Ако

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

Ако е необходимо да се върнат всички полета на таблица, тогава аргументът на полето трябва да се посочи със звездичка или във формата „Таблица. *“.

ИЗБЕРЕТЕ Учители * ОТ Учители;

Показват се всички 5 полета от таблицата "Учители".

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

ИЗБЕРЕТЕ Ср. ([Оценка]) като [Средна] ОТ изпити;

Заявката връща едно число в колоната със заглавие „Среден резултат“

- средноаритметичната стойност на оценките на всички ученици. Пример

ИЗБЕРЕТЕ Брой ([Учител]) Като [Брой учители] ОТ Учители;

Под заглавието "Брой учители" ще се постави броят на редовете на таблицата "Учители", в които полето "Учител" не е празно (и то не винаги е празно, тъй като е ключово). Това е броят на учителите, тъй като всеки запис има номер на учител, който е различен от броя на другите учители.

V SELECT операторите непосредствено след думата SELECT могат да бъдат

пише се сказуемото - една от думите ВСИЧКИ, РАЗЛИЧЕН, РАЗЛИЧЕН, ВЪРХ Н.

Предикатът ALL насочва да върне всички записи, дори ако съдържат повторения.

DISTINCT забранява показването на записи, съдържащи дубликати в избраните полета. Използването на предиката DISTINCT е еквивалентно на задаване на свойството Unique Values ​​на Yes в листа със свойства на Query Designer.

DISTINCTROW влияе на резултата само ако не всички полета от анализираните таблици са включени в заявката. Предикатът се игнорира, ако заявката съдържа само една таблица. Предикатът DISTINCTROW изключва записи, които се повтарят изцяло. Използването на предиката DISTINCTROW е еквивалентно на задаване на свойството Уникални записи на Да в листа със свойства на дизайнера на заявки.

Предикатът Top N се използва за връщане на N записа в началото или края на набор, сортирани във възходящ или низходящ ред на стойностите на това поле. Сортирането се дефинира чрез използване на клаузата ORDER BY след клаузата FROM.

ИЗБЕРЕТЕ инструкции.

След думите ORDER BY поставете името на полето и думата ASC (възходяща, незадължителна) или DESC (низходяща). Следващия SQL изявлениеви позволява да получите списък с първите 5 студенти.

Академично представяне

маса 1

Среден резултат

Медведев

Воробиев

ИЗБЕРЕТЕ ТОП 5 ученик, [Оценка] ОТ постижение

ПОРЪЧАЙ ПО [Средно] DESC;

ИЗБЕРЕТЕ РАЗЛИЧЕН [Студент] ОТ изпити

ПОРЪЧАЙ ОТ [Студент];

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

След клаузата FROM на израза SELECT можете да пишете

клауза WHERE на условието WHERE

Условието е булев израз, който се оценява за всеки запис в изходната таблица.

Ако условието е вярно, тогава записът (набор от полета в списъка с полета на клаузата SELECT) се включва в резултатния набор; ако е false, той не се включва.

SELECT DISTINCT Група, Студент

ОТ Изпити

WHERE Резултат = 2;

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

WHERE [Позиция] = "доцент" ИЛИ [степен] = "доктор." ПОРЪЧАЙ ОТ [пълно име];

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

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

* произволен брой всякакви знаци;

Всеки герой.

V скоби могат да се използват за определяне на диапазон, в който се намира даден знак или не.

Знак в диапазона от A до F, включително. Знакът [! A-F] не е в обхвата A-F.

ИЗБЕРЕТЕ [Име] ОТ Учители

КЪДЕ [Пълно име] КАТО “B *” ИЛИ [Пълно име] КАТО “Щ *”;

V полученият набор ще включва имената на учителите, започващи с буквите Д или Щ.

X КАТО "P ###"

Написаното условие е изпълнено от редове от 5 знака, започващи с буквата P. Тя трябва да бъде последвана от буква от диапазона A-F. Низът трябва да бъде завършен с 3 цифри.

Ако преди всяко изпълнение на заявката е необходимо да промените условията за избор, е удобно да използвате изречение от формата:

PARAMETERS текстове;

Текстове – списък с текстове, разделени със запетаи.

След всеки текст типът данни се обозначава с интервал. Когато стартирате заявка с параметри, не е необходимо да отваряте прозореца на дизайнера на заявки и да правите промени в условията на филтъра. Вместо това потребителят е подканен да въведе желаното условие по време на изпълнение на заявката. За всеки текст от клаузата PARAMETERS на екрана се появява диалогов прозорец, където всеки текст от описанието играе ролята на подсказка – какво точно трябва да се въведе. В диалоговия прозорец въведете данните от посочения тип.

Ако се използва клауза PARAMETERS, тя трябва да се появи преди всички други изрази, включително израза SELECT, и трябва да завършва с точка и запетая.

ПАРАМЕТРИ [Посочете начална дата] DATETIME, [Посочете крайна дата] DATETIME;

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

ПАРАМЕТРИ [Определете група] ТЕКСТ; ИЗБЕРЕТЕ Студент, клас

ОТ Изпити

WHERE [Група] = [Посочете група] И [Тема] = 1;

Заявката дава оценките на учениците от посочената група по предмета с код 1.

Клаузата за поле GROUP BY комбинира група записи в определен списък(а) от полета в един запис. Ако операторът SELECT съдържа групова функция (например Avg или Sum), тогава ще бъде изчислена стойността за записа в набора от резултати - общата сума за групата записи. Така, например, ако групирате записи по предмет в таблицата "Изпити", тогава с помощта на функцията Avg можете да получите средния резултат за предмета. Групирането по предмет и група ще ви позволи да получите средните резултати на студентските групи по посочения предмет.

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

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

Ако използвате групови функции и няма клауза GROUP BY, тогава цялата колекция от оригиналните записи на заявката играе ролята на групата.

ИЗБЕРЕТЕ Група, Студент, Ср. ([Оценка]) КАТО [Оценка] ОТ изпити

ГРУПА ПО [Група], [Студент];

За всеки ученик се изчислява средноаритметичната оценка на неговите оценки.

Незадължителната клауза HAVING трябва да се появи след GROUP BY. Той определя кои от групираните записи ще бъдат включени в набора от резултати. Условието в HAVING е регулярен булев израз, точно както в WHERE. WHERE и HAVING могат да присъстват в оператор SELECT едновременно. В този случай WHERE филтрира записите преди групирането, а HAVING филтрира групираните записи (групи).

ПАРАМЕТРИ [Въведете името на артикула] ТЕКСТ; ИЗБЕРЕТЕ група, предмет, средна стойност ([Оценка]) КАТО [Оценка] ОТ Изпити INNER JOIN

ON Examers Subject = Изпити Тема

WHERE [Име на субекта] = [Въведете име на субекта] ГРУПА ПО Група, ученик

ИМАТЕ средно ([резултат])> = 4,5 и мин. ([резултат])> 2;

Заявката връща списък на учениците със средните им резултати. В списъка са включени ученици без двойки и със среден успех най-малко 4,5.

Инструкцията TRANSFORM се използва за създаване на кръстосана заявка. Данните, представени от кръстосана заявка, се изобразяват по-компактно, отколкото чрез заявка за извадка. Синтаксис:

TRANSFORM Функция SELECT…;

Функция - група SQL функциякойто обработва данните от клетката на таблицата Поле - поле или израз, стойностите от който стават заглавие

ками колони.

Заявката в режим на таблица има толкова колони, колкото полето приема различни стойности. Например, ако полето показва имената на месеците, тогава ще има до 12 колони, чиито заглавия са сортирани във възходящ ред (август, април... януари). След аргумента на полето можете да поставите IN клауза (списък_на_стойности). Фиксираните стойности в списъка със стойности са разделени със запетаи. С клауза IN всяка стойност на полето се сравнява със стойностите в value_list. Ако има съвпадение, резултатът от изчислението на функцията се показва в съответната колона. Фиксираните заглавки, които не отговарят на реални данни, могат да се използват за създаване на допълнителни колони.

Използването на клаузата PIVOT е еквивалентно на дефинирането на свойството заглавки на колони в листа със свойства на дизайнера на заявки.

Лабораторна работа No1

SQL: ИЗВЛЕЧВАНЕ НА ДАННИ - командаИЗБЕРЕТЕ

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

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

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

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

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

ОТ СТУДЕНТИТЕ;

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

ИЗБЕРЕТЕ *

ОТ СТУДЕНТИТЕ;


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

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

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

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

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

ОТ СТУДЕНТИТЕ

КЪДЕ ФАМИЛИЯ = "Иванов";

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

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

ОТ СТУДЕНТИТЕ

КЪДЕ ГРУПА = "WHIT-22" И БЮДЖЕТ = вярно;

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

ИЗБЕРЕТЕ *

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

КЪДЕТООЦЕНКАIN (4.5);

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

ИЗБЕРЕТЕ *

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

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

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

ИЗБЕРЕТЕ *

ОТАРТИКУЛИ

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


Задача номер 9.Създайте заявка в режим SQL, за да изберете от таблицата STUDENTS информация за студенти, чиито фамилни имена започват например с буквата "C".

ИЗБЕРЕТЕ *

ОТСТУДЕНТИТЕ

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

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

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

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

Изграждане на заявки в Microsoft Access

За да разберете как да създавате заявки в Access, трябва да знаете основите на работата с СУБД.

Има два начина да завършите тази процедура:

  • Конструктор на заявки.
  • Съветник за заявки.

Първият метод прави възможно създаването на всяка от всички налични заявки в ръчен режим, но с малко предупреждение, че потребителят има опит с приложението Access. Освен това той трябва да разбере поне основните си задачи. Що се отнася до втория метод, той трябва да бъде разгледан по-подробно.

Лесен начин за начинаещи

Осведомен човек с няколко щраквания на мишката избира онези компоненти, които ще са необходими на потребителя, за да изпълни заявката, и след това бързо формира регистъра в съответствие със събраните стойности на ключовете. Ако това е първото запознаване с СУБД и потребителят няма представа как да създава заявки в Access, тогава се избира програмата Wizard.

V този режимможете да се запознаете и разберете следните видове заявки:

  • Просто.
  • кръст.
  • Записи без подчинени.
  • Дублиращи се записи.

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

Проста заявка

Този инструмент за електронни таблици събира данните, които искате, от зададени от потребителя полета. Както подсказва името, това е най-популярният тип заявка за начинаещи. Удобството му се състои във факта, че такава процедура се отваря в нов раздел. Следователно отговорът на въпроса как да създадете заявка в Access 2010 става очевиден след отваряне на първото меню на съветника.

Кръстосана заявка

Този тип вземане на проби е по-сложен. За да разберете как да създадете кръстосана заявка в Access с помощта на „Съветника“ в този режим, трябва да щракнете върху тази функция в първия прозорец.

На екрана ще се появи таблица, в която можете да изберете до три колони, разположени в оригинала.

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

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

Дублиращи се записи

Както подсказва името, основната цел на това искане- избор на всички еднакви редове в таблицата според посочените параметри. Изглежда така:

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

За да изберете дублиращи се записи, трябва да разширите списъка със заявки и да създадете нова папка там. След това в прозореца "Нова заявка" изберете реда "Търсене на дублирани записи". След това трябва да следвате инструкциите на Учителя.

Записи без подчинени

Това е последният тип заявка, налична в режим "Master - Entries without slave".

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

Този тип е подходящ само в случаите, когато има няколко бази данни.

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

Функции на заявка в MS Access

Нека да разберем защо трябва да изпълните стъпките, описани по-горе. Задачата на всички прости и сложни запитванияв СУБД на Access е както следва:

  • Събиране на необходимите данни в таблици, последващото им разглеждане, редактиране, добавяне на нови стойности.
  • Отличен изходен материал за изготвяне на всички видове отчетни формуляри.
  • Провеждане на математически и статистически процедури за броене върху цели масиви от данни с извеждане на суми на екрана (средна стойност, сума, отклонение, суми).

Примерна заявка

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

Всички таблици трябва да имат общи ключови полета. В противен случай операцията ще се провали.

Нека разгледаме как да създадем заявка за избор в Access. Първо, трябва да създадете проста заявка с избор на задължителните полета. Вече можете да редактирате данните, за да ги приведете в желания вид. Между другото, направените промени ще бъдат прехвърлени в оригиналните таблици, така че този момент трябва да се вземе предвид.

В прозореца на дизайнера, който се отваря, прозорецът "Добавяне на таблици" се запълва. Тук трябва да добавите онези таблици или заявки, от които трябва да извадите първоначалните стойности.

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

За да завършите операцията, трябва да кликнете върху бутона "Изпълни".

Заявка с параметри

Това е друг вид сложна процедура, която ще изисква определени умения за база данни от потребителя. Една от основните области на такова действие е подготовката за създаване на отчети с обемни данни, както и получаване на обобщени резултати. Как да създавате заявки в Access 2007 с помощта на дизайнера ще бъде обсъдено по-долу.

За да започнете тази процедура за избор на данни, трябва да създадете проста заявка за избор на необходимите полета. По-нататък през режима на конструктор е необходимо да се попълни полето "Условие за избор" и на базата на въведената стойност селекцията ще бъде извършена.

Така отговорът на въпроса как да създадете заявка с параметър в Access е прост - да въведете първоначалните параметри за избора. За да работите с конструктора, трябва да използвате съветника за заявки. Там се създават първични данни за филтриране, които служат като основа за по-нататъшна работа.

Разширена заявка за кръстосани препратки

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

За да направите това, трябва да щракнете върху "Конструктор на заявки" - "Кръст".

Отваря се менюто за добавяне на изходни таблици, както и възможността за попълване на избрани полета. Единствените неща, за които трябва да внимавате, са груповите операции и елементите Cross Table. Те трябва да бъдат попълнени правилно, в противен случай процедурата няма да бъде извършена правилно.

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

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

Разбира се, има и "подводни камъни", които могат да попречат на работата. Например, когато създавате заявка за сортиране на база данни по стойност на колона, системата издава грешка. Тоест, достъпно е само сортиране по стандартни артикули - "увеличаване и намаляване".

Обобщавайки, трябва да се каже, че потребителят решава как да създава заявки в Access - с помощта на съветника или дизайнера. Въпреки че за повечето хора, които използват MS Access, първият вариант е по-подходящ. В крайна сметка самият съветник ще свърши цялата работа, оставяйки само няколко щраквания за потребителя при избора на условията за заявка.

За да използвате разширените настройки, очевидно се изисква опит с база данни на професионално ниво. Ако в работата участват големи бази данни, най-добре е да се свържете със специалисти, за да избегнете нарушаване на СУБД и възможна загуба на данни.

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

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

Проектиране на заявки за избор с условия за подбор

Нека разгледаме заявките за избор в Access, като използваме примера за извличане на информация от таблицата PRODUCT в базата данни за доставка на стоки.

Проблем 1... Нека е необходимо да се изберат редица характеристики на продукт по неговото име.

  1. За да създадете заявка в прозореца на базата данни, изберете раздела на лентата - Създаване(Създаване) и в група Запитвания(Запитвания) натиснете бутона Конструктор на заявки(Дизайн на заявка). Ще се отвори празен прозорец със заявка за избор в режим на проектиране - Искане N(QueryN) и диалогов прозорец Добавяне на таблица(Покажи таблица) (фиг. 4.2).
  2. В прозореца Добавяне на таблица(Покажи таблицата) изберете таблицата с ПРОДУКТИ и щракнете върху бутона Добавете(Добавяне). Избраната таблица ще бъде показана в областта на схемата на данните на заявката. Затваряне на прозореца Добавяне на таблица(Покажи таблицата), като щракнете върху бутона Близо(Близо).

В резултат на извършените действия в прозореца на дизайнера на заявки (фиг. 4.1) в горен панелсе появява схемата за данни на заявката, която включва таблиците, избрани за тази заявка. В този случай една маса ПРОДУКТ. Таблицата е представена от списък с полета. Първият ред в списъка с полета на таблицата, отбелязан със звездичка (*), обозначава целия набор от полета на таблицата. Долният панел е формуляр за заявка, който трябва да попълните.

Освен това на лентата се появява нов раздел (Инструменти за заявки | Дизайн) и се активира автоматично (на фиг. 4.3 е ​​представен в част от този раздел), в който типът на създадената заявка е маркиран с цвят - Проба(Изберете). Така по подразбиране винаги се създава заявка за извличане. Командите в този раздел предоставят инструментариум за извършване на необходимите действия при създаване на заявка. Този раздел се отваря, когато създадете нова заявка в режим на проектиране или редактирате съществуваща.

  1. За да премахнете каквато и да е таблица от схемата за данни на заявката, преместете курсора на мишката върху нея и натиснете клавиша . За да добавите - щракнете върху бутона Покажи таблицата(Покажи таблицата) в група Настройване на заявкараздел (Настройка на заявка). Работа със заявки | Конструктор(Инструменти за заявки | Дизайн) или изпълнете командата Добавете таблица(Покажи таблица) в контекстното меню, извикано в схемата за данни на заявката.
  2. В прозореца за проектиране (фиг. 4.4) плъзнете последователно от списъка с полета в таблицата PRODUCT полетата ИМЕ_НЕГО, ЦЕНА, НАЛИЧНОСТ_на_на_с в колоните на формуляра за заявка в реда Поле(Поле).
  3. За да включите задължителните полета от таблицата в съответните колони на заявката, можете да използвате следните техники:
    • в първия ред на формуляра за искане Поле(Поле), като щракнете с мишката, предизвикайте появата на бутона за списък и изберете необходимото поле от списъка. Списъкът съдържа полетата на таблиците, представени в схемата за данни на заявката;
    • щракнете двукратно върху името на полето на таблицата в схемата за данни на заявката;
    • можете да плъзнете или щракнете двукратно върху символа * (звездичка) в списъка с полета на таблицата в схемата за данни на заявката, за да включите всички полета на таблицата.
  4. Ако случайно сте изпуснали ненужно поле във формуляра за заявка, изтрийте го. За да направите това, преместете курсора в областта за маркиране на колона в горната част, където ще приеме формата на черна стрелка, сочеща надолу, и щракнете. Колоната е подчертана. Натиснете клавиша или изпълнете командата Изтриване на колони(Изтриване на колони) в група Настройване на заявка(Настройка на заявка).
  5. В редица Изход на дисплея(Покажи) маркирайте полетата, в противен случай те няма да бъдат включени в таблицата на заявката.
  6. Пишете на ред Условия за избор(Критерии) име на продукта, както е показано във формуляра за заявка на фиг. 4.4. Тъй като изразът в клаузата за избор не съдържа оператор, се използва операторът по подразбиране =. Текстовата стойност, използвана в израза, се въвежда в двойни кавички, които се добавят автоматично.
  7. Изпълнете заявката, като щракнете върху бутона Изпълнение или бутона Преглед в групата Резултати. На екрана в режим на таблица ще се появи прозорец със заявка с запис от таблицата ПРОДУКТИ, който отговаря на посочените условия за избор.

КОМЕНТАР
Прозорецът за заявка в режим на таблица е подобен на прозореца за изглед на таблица на базата данни. Някои от таблиците на заявката могат да се използват за модифициране на данните на основната таблица, лежаща в основата на заявката. Заявка, преглеждана в табличен изглед, няма колона за разлика от таблица на база данни на Access 2010 Кликнете, за да добавите(Щракнете, за да добавите), предназначен да промени структурата на таблицата. В този режим в раздела на лентата У дома(Начало) са налични същите бутони като при отваряне на таблица с база данни.

  1. Ако направите неточност при въвеждане на сложно име на продукт, продуктът няма да бъде намерен в таблицата. Използване на шаблонни оператори - звездичка (*) и въпросителен знак(?) (стандартът ANSI-89 по подразбиране за заявки) или знакът за процент (%) и долната черта (_) (ANSI-92, препоръчан стандарт на SQL Server) улесняват намирането на желаните низове и избягват много грешки. Въведете Corpus * или Corpus% вместо пълното име на продукта. Попълнете заявката си. Ако в полето за име на продукта една стойност започва с думата "Корпус", резултатът от заявката ще бъде същият като в предишния случай. След изпълнение на заявката, въведения израз ще бъде допълнен с Like оператора "Корпус *". Този оператор ви позволява да използвате заместващи знаци при търсене в текстови полета.
  2. Ако трябва да намерите няколко продукта, използвайте оператора In. Позволява ви да проверите за равенство на всяка стойност от списъка, която е посочена в скоби. Напишете в реда с условия за избор In ("Куси MiniTower"; "HDD Maxtor 20GB"; "FDD 3,5"). В таблицата със заявки ще се покажат три реда. Не се допускат заместващи знаци в оператора In.
  3. Запазете заявката, като щракнете върху раздела Файл(Файл) и стартиране на командата Запазете(Запазване). В прозореца Запазване(Запиши като) въведете името на заявката Пример1. Имайте предвид, че името на заявката не трябва да съвпада не само с имената на съществуващите заявки, но и с имената на таблиците в базата данни.
  4. Затворете текущата заявка с помощта на командата от контекстното меню Близо(Затваряне) или като щракнете върху бутона на прозореца за заявка Близо(Близо).
  5. Изпълнете запазената заявка, като изберете заявката в навигационния екран и изберете Отвори(Отворено).
  6. За да редактирате заявка, изберете я в навигационния панел и изпълнете командата в контекстното меню Конструктор(Изглед на дизайна).

Цел 2.Нека е необходимо да изберете стоки, чиято цена е не повече от 1000 рубли, а ДДС не е повече от 10%, а също и да изберете стоки, чиято цена е повече от 2500 рубли. Резултатът трябва да съдържа името на продукта (NAME_TOV), неговата цена (PRICE) и ДДС (DAT_VAT).

  1. Създайте нова заявка в режим на проектиране, добавете таблицата PRODUCT. В прозореца за проектиране (фиг. 4.5) плъзнете последователно от списъка с полета в таблицата PRODUCT към формуляра за заявка, полетата NAIM_TOV, PRICE, RATE_VAT.
  2. Записвам Условия за избор(Критерии), както е показано във формуляра за заявка на фиг. 4.5. Извършва се логическа операция И между условията, записани на един ред. Извършва се логическа операция ИЛИ между условия, записани на различни редове.
  3. Изпълнете заявката си, кликнете върху бутона Изпълни(Бягай) в група резултати(Резултати). На екрана в режим на таблица ще се появи прозорец със заявка със записи от таблицата ПРОДУКТИ, които отговарят на посочените условия за избор.
  4. Запазете заявката, като изпълните съответната команда в контекстното меню на заявката, която се извиква, когато курсорът е позициониран над заглавката на заявката. Дайте му име Пример2.

Проблем 3... Да предположим, че трябва да изберете всички фактури за даден период. Резултатът трябва да съдържа номера на фактурата (NOM_NAK), складов код (CODE_SK), дата на изпращане (DATE_SHIPPED) и общата стойност на изпратените стоки (SUM_NUMBER).

  1. Създайте нова заявка в режим на проектиране, добавете таблицата OVERLAY. В прозореца за проектиране плъзнете и пуснете последователно всички необходими полета от списъка с полета на таблицата OVERLAY във формуляра за заявка.
  2. За полето DATE_DATE в реда Условия за избор(Критерии) запишете Между # 01/11/2008 # И # 03/31/2008 #. Операторът Between определя период от време (ANSI-92 използва единични кавички вместо #). В допълнение, този оператор ви позволява да зададете интервал за числова стойност.

За да се консолидирате, гледайте видеоурока:

В MS Access можете да създавате бази данни, таблици, формуляри и други отчети. Тази статия ще помогне на потребителя да изпълнява SQL заявки в MS Access. Можете да изпълнявате същите заявки, които SQL използва за извличане на данни от база данни. Тази статия е предназначена за потребители, които току-що са започнали да изучават MS Access и искат да го направят SQL заявкив MS Access. Единственото условие, което се изисква преди да започнете, е да имате достъп до базата данни, използвана в организацията.

Стъпки


Какво ти е необходимо

  • Потребителят трябва да има достъп до базата данни на организацията
  • Потребителят може да се свърже с технологичната поддръжка, преди да започне заявките чрез MS Access

Информация за статията

Тази страница е разгледана 4443 пъти.

Беше ли Ви полезно?

Описание на образователния проект "Магазин"

Схема за взаимоотношения на таблицата

Описание на таблиците

m_category - продуктови категории

m_income - пристигане на стоки

m_outcome - потребление на стоки

m_product - справка, описание на стоките

m_доставчик - справка; информация за доставчика

m_unit - справка; единици

За практическа проверка на примерите, дадени в това учебен материал, трябва да имате следния софтуер:

Microsoft Access 2003 или по-нова версия.

SQL заявка в MS Access. Започнете

За да видите съдържанието на таблицата, щракнете двукратно върху името на таблицата в панела вляво:

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

За да покажете резултата от SQL заявка, щракнете двукратно върху името на заявката в левия прозорец:

За да превключите към режим на редактиране на SQL заявка, изберете режима на SQL в горния панел:

SQL заявка. Примери в MS Access. ИЗБЕРЕТЕ: 1-10

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

SQL заявка Q001.Примерна SQL заявка за получаване само на задължителните полета в необходимата последователност:

ИЗБЕРЕТЕ dt, product_id, сума


ОТ m_доход;

SQL заявка Q002.В тази примерна SQL заявка звездичката (*) се използва за показване на всички колони на таблицата m_product, с други думи, за извличане на всички полета на връзката m_product:

ИЗБЕРЕТЕ *
ОТ m_product;

РазследванеSQL Q003.Инструкцията DISTINCT се използва за премахване на дублиращи се записи и получаване на много уникални записи:

ИЗБЕРЕТЕ DISTINCT идентификатор на продукт


ОТ m_доход;

SQL заявка Q004.Инструкцията ORDER BY се използва за сортиране (подреждане) на записи по стойностите на конкретно поле. Името на полето следва оператора ORDER BY:

ИЗБЕРЕТЕ *
ОТ m_доход


ПОРЪЧАЙ ПО ЦЕНА;

SQL заявка Q005.Инструкцията ASC се използва в допълнение към инструкцията ORDER BY и служи за дефиниране на възходящо сортиране. Инструкцията DESC се използва в допълнение към оператора ORDER BY и се използва за дефиниране на низходящо сортиране. В случай, когато не са посочени нито ASC, нито DESC, се подразбира наличието на ASC (по подразбиране):

ИЗБЕРЕТЕ *
ОТ m_доход


ПОРЪЧАЙ ПО dt DESC, цена;

SQL заявка Q006.За избор на необходимите записи от таблицата се използват различни логически изрази, които изразяват условието за избор. Булевият израз се появява след клаузата WHERE. Пример за получаване от таблицата m_income на всички записи, за които стойността на сумата е по-голяма от 200:

ИЗБЕРЕТЕ *
ОТ m_доход


КЪДЕ сума> 200;

SQL заявка Q007.Да изразя трудни условияизползвайте логически операции И (конюнкция), ИЛИ (дизюнкция) и НЕ (логическо отрицание). Пример за получаване от таблицата m_outcome на всички записи, за които стойността на сумата е 20 и стойността на цената е по-голяма или равна на 10:

Цена


ОТ m_outcome
КЪДЕ сума = 20 И цена> = 10;

SQL заявка Q008.За да обедините данни от две или повече таблици, използвайте инструкциите INNER JOIN, LEFT JOIN, RIGHT JOIN. Следващият пример извлича полета dt, product_id, amount, price от таблицата m_income и полето за заглавие от таблицата m_product. Записът на таблицата m_income се свързва със записа на таблицата m_product, когато стойността на m_income.product_id е равна на стойността на m_product.id:



ВКЛЮЧЕНО m_income.product_id = m_product.id;

SQL заявка Q009.В тази SQL заявка трябва да обърнете внимание на две неща: 1) текстът за търсене е затворен в единични кавички ("); 2) датата е във формат # месец / ден / година #, което е вярно за MS Access . В други системи форматът на изписване на датата може да бъде различен Пример за показване на информация за пристигане на мляко на 12 юни 2011 г. Обърнете внимание на формата на датата # 6/12/2011 #:

ИЗБЕРЕТЕ dt, product_id, заглавие, сума, цена


ОТ m_income INNER JOIN m_product

WHERE title = "(! LANG: Мляко" And dt=#6/12/2011#; !}

SQL заявка Q010.Инструкцията BETWEEN се използва за тестване на диапазон от стойности. Примерна SQL заявка, показваща информация за стоки, получени между 1 юни и 30 юни 2011 г.:

ИЗБЕРЕТЕ *
ОТ m_income INNER JOIN m_product


ВКЛЮЧЕНО m_income.product_id = m_product.id
КЪДЕ dt МЕЖДУ # 6/1/2011 # И # 6/30/2011 #;

SQL заявка. Примери в MS Access. ИЗБЕРЕТЕ: 11-20

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

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

ИЗБЕРЕТЕ *
ОТ m_product


WHERE id IN (ИЗБЕРЕТЕ продуктов_идентификатор ОТ m_income);

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

ИЗБЕРЕТЕ *
ОТ m_product


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

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

ИЗБЕРЕТЕ DISTINCT идентификатор на продукт, заглавие


ОТ m_income INNER JOIN m_product
ВКЛЮЧЕНО m_income.product_id = m_product.id
WHERE product_id НЕ В (ИЗБЕРЕТЕ product_id FROM m_outcome);

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

ИЗБЕРЕТЕ РАЗДЕЛЕНО заглавие


ОТ m_product
КЪДЕ заглавие КАТО "М *";

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


сума * цена / 100 * 7 AS печалба
ОТ m_outcome;

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

ИЗБЕРЕТЕ dt, product_id, сума, цена, сума * цена КАТО сума_изход,


outcome_sum * 0,07 AS печалба
ОТ m_outcome;

Заявка 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
ПОРЪЧАЙ ПО в.заглавие, б.заглавие;

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

ИЗБЕРЕТЕ СУМА (сума * цена) КАТО Обща_сума


ОТ m_доход;

Заявка Q019.Пример за използване на множество агрегатни функции:

SELECT Сума (сума) КАТО Сума_сума, AVG (сума) КАТО Сума_AVG,


MAX (количество) AS Amount_Max, Мин. (количество) AS Amount_Min,
Брой (*) КАТО общ_ брой
ОТ m_доход;

Заявка Q020.Този пример изчислява сумата на всички елементи с код 1, изписани с главни букви през юни 2011 г.:

SELECT Сума (сума * цена) КАТО сума_доход


ОТ m_доход
КЪДЕ product_id = 1 И dt МЕЖДУ # 6/1/2011 # И # 6/30/2011 # ;.

Заявка Q021.Следната SQL заявка изчислява количеството продадени продукти с код 4 или 6:

ИЗБЕРЕТЕ Сума (сума * цена) като резултат_сума


ОТ m_outcome
WHERE product_id = 4 ИЛИ product_id = 6;

Заявка Q022.Изчислява се за каква сума е продадена на 12 юни 2011 г. на стоки с код 4 или 6:

SELECT Сума (сума * цена) КАТО сума_сума


ОТ m_outcome
КЪДЕ (product_id = 4 ИЛИ product_id = 6) И dt = # 6/12/2011 #;

Заявка Q023.Задачата е следната. Изчислете общото количество стоки в категорията "Хлебни", които са били капитализирани.

За да разрешите този проблем, трябва да работите с три таблици: m_income, m_product и m_category, защото:


- количеството и цената на капитализираните стоки се съхраняват в таблицата m_income;
- кодът на категорията на всеки продукт се съхранява в таблицата m_product;
- името на заглавието на категорията се съхранява в таблицата m_category.

За да разрешим този проблем, ще използваме следния алгоритъм:


- определяне на кода на категорията "Хлебни изделия" от таблицата m_category чрез подзаявка;
- съединяване на таблици m_income и m_product за определяне на категорията на всеки капитализиран продукт;
- изчисляване на сумата за получаване (= количество * цена) за стоки, чийто код на категорията е равен на кода, определен от горната подзаявка.
ИЗБЕРЕТЕ
FROM m_product AS a INNER JOIN m_income AS b ON a.id = b.product_id
WHERE ctgry_id = (ИЗБЕРЕТЕ идентификатор ОТ m_category WHERE title = "(! LANG: Bakery"); !}

Заявка Q024.Ще решим проблема с изчисляването на общото количество капитализирани стоки в категорията "Хлебни изделия", използвайки следния алгоритъм:
- за всеки запис от таблицата m_income, в зависимост от стойността на неговия product_id, от таблицата m_category, съвпада с името на категорията;
- изберете записи, за които категорията е равна на "Хлебни изделия";
- изчислете сумата на касовата бележка = количество * цена.

FROM (m_product AS a INNER JOIN m_income AS b ON a.id = b.product_id)

КЪДЕ c.title = "(! LANG: Пекарна"; !}

Заявка Q025.Този пример изчислява колко артикула са били консумирани:

SELECT COUNT (product_id) КАТО product_cnt


ОТ (ИЗБЕРЕТЕ РАЗЛИЧЕН продукт_id ОТ m_outcome) AS t;

Заявка Q026.Клаузата GROUP BY се използва за групиране на записи. Обикновено записите се групират по стойността на едно или повече полета и към всяка група се прилага някаква обобщена операция. Например следната заявка генерира отчет за продажба на стоки. Тоест се генерира таблица, която съдържа имената на стоките и сумата, за която са продадени:

ИЗБЕРЕТЕ заглавие, SUM (сума * цена) КАТО сума_сума


FROM m_product AS A INNER JOIN m_outcome AS b
ON a.id = b.product_id
GROUP BY заглавие;

Заявка Q027.Отчет за продажбите по категории. Тоест се генерира таблица, която съдържа имената на продуктовите категории, общата сума, за която са продадени продуктите от тези категории, и средната сума на продажбите. Функцията ROUND се използва за закръгляне на средната стойност до стотна (втората цифра след десетичния разделител):

ИЗБЕРЕТЕ c.title, SUM (сума * цена) КАТО сума_изход,


КРЪГЛО (СР. (сума * цена), 2) КАТО сума_ср
FROM (m_product AS A INNER JOIN m_outcome AS b ON a.id = b.product_id)
INNER JOIN m_category AS c ON a.ctgry_id = c.id
ГРУПА ПО в.заглавие;

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

ИЗБЕРЕТЕ product_id, SUM (сума) КАТО сума_сума,


Кръгла (Ср. (сума), 2) ASколичество_ср
ОТ m_доход
GROUP BY product_id
ИМАТЕ Сума (сума)> = 500;

Заявка Q029.Тази заявка изчислява за всеки артикул сумата и средната стойност на постъпленията през второто тримесечие на 2011 г. Ако общото количество получени стоки е не по-малко от 1000, тогава се показва информация за този продукт:

ИЗБЕРЕТЕ заглавие, SUM (сума * цена) КАТО сума_доход


ОТ m_income a INNER JOIN m_product b ON a.product_id = b.id
КЪДЕ dt МЕЖДУ # 4/1/2011 # И # 6/30/2011 #
ГРУПА ПО заглавие
ИМАТЕ СУМА (сума * цена)> = 1000;

Заявка Q030.В някои случаи трябва да съпоставите всеки запис от определена таблица към всеки запис от друга таблица; това, което се нарича декартово произведение. Таблицата, получена от такава връзка, се нарича таблицата на Декарт. Например, ако някаква таблица А има 100 записа, а таблица Б има 15 записа, тогава тяхната таблица на Декарт ще се състои от 100 * 15 = 150 записа. Следната заявка свързва всеки запис в таблицата m_income с всеки запис в таблицата m_outcome:
ОТ m_доход, m_резултат;

Заявка Q031.Пример за групиране на записи по две полета. Следната SQL заявка изчислява количеството и количеството стоки, получени от всеки доставчик за всеки доставчик:


SUM (сума * цена) КАТО сума_доход

Заявка Q032.Пример за групиране на записи по две полета. Следната заявка изчислява за всеки доставчик количеството и количеството на продадените от нас продукти:

ИЗБЕРЕТЕ идентификатор_на_доставчик, идентификатор_на_продукта, SUM (сума) КАТО сума_сума,




GROUP BY идентификатор_на_доставчик, идентификатор на продукт;

Заявка Q033.В този пример двете по-горе заявки (q031 и q032) се използват като подзаявки. Резултатите от тези заявки, използващи метода LEFT JOIN, се комбинират в един отчет. Следното запитване отчита количеството и количеството на получените и продадените продукти за всеки доставчик. Моля, имайте предвид, че ако някой продукт вече е пристигнал, но все още не е продаден, тогава клетката outcome_sum за този запис ще бъде празна. че тази заявка е само пример за използване на относително сложни заявки като подзаявка. Изпълнението на тази SQL заявка с голямо количество данни е под въпрос:

ИЗБЕРЕТЕ *
ОТ



SUM (сума * цена) КАТО сума_доход

НА a.product_id = b.id GROUP BY supplier_id, product_id) КАТО
ЛЯВО ПРИСЪЕДИНЯВАНЕ
(ИЗБЕРЕТЕ идентификатор_на_доставчика, идентификатор_на_продукта, SUM (сума) КАТО сума_сума,
SUM (сума * цена) КАТО сума_сума
ОТ m_outcome КАТО ВЪТРЕШНО ПРИСЪЕДИНЕНИЕ m_product AS b
ON a.product_id = b.id GROUP BY supplier_id, product_id) AS b
ON (a.product_id = b.product_id) AND (a.supplier_id = b.supplier_id);

Заявка Q034.В този пример двете по-горе заявки (q031 и q032) се използват като подзаявки. Резултатите от тези заявки, използващи метода RIGTH JOIN, се комбинират в един отчет. Следващата заявка показва отчет за размера на плащанията от всеки клиент за използваните от него разплащателни системи и размера на техните инвестиции. Следното запитване отчита количеството и количеството на получените и продадените продукти за всеки доставчик. Трябва да се отбележи, че ако някой продукт вече е продаден, но все още не е пристигнал, тогава клетката за сума на дохода за този запис ще бъде празна. Наличието на такива празни клетки е индикатор за грешка в отчитането на продажбите, тъй като преди продажбата е необходимо първо да пристигне съответния продукт:

ИЗБЕРЕТЕ *
ОТ


(ИЗБЕРЕТЕ идентификатор_на_доставчика, идентификатор_на_продукта, SUM (сума) КАТО сума_сума,
SUM (сума * цена) КАТО сума_доход
ОТ m_income КАТО INNER JOIN m_product AS b ON a.product_id = b.id
GROUP BY идентификатор_на_доставчик, идентификатор_ на продукт) КАТО a
ДЯСНО ПРИСЪЕДИНЯВАНЕ
(ИЗБЕРЕТЕ идентификатор_на_доставчика, идентификатор_на_продукта, SUM (сума) КАТО сума_сума,
SUM (сума * цена) КАТО сума_сума
ОТ m_outcome КАТО ВЪТРЕШНО ПРИЕДИНЯВАНЕ m_product AS b ON a.product_id = b.id
GROUP BY идентификатор_на_доставчик, идентификатор_ на продукт) КАТО b
ВКЛ. (a.supplier_id = b.supplier_id) И (a.product_id = b.product_id);

Заявка Q035.Показва справка за размера на приходите и разходите по продукти. За да направите това, се създава списък с продукти според таблиците m_income и m_outcome, след което за всеки продукт от този списък се изчислява сумата от неговите постъпления според таблицата m_income и сумата от неговите разходи според таблицата m_outcome:

ИЗБЕРЕТЕ product_id, SUM (in_amount) КАТО сума_приход,


SUM (out_amount) AS сума_изход
ОТ
(ИЗБЕРЕТЕ идентификатор на продукт, сума КАТО в_сума, 0 АС изходяща_сума
ОТ m_доход
СЪЮЗ ВСИЧКИ
SELECT product_id, 0 AS in_amount, сума AS out_amount
ОТ m_outcome) КАТО t
ГРУПА ПО product_id;

Заявка Q036. EXISTS връща TRUE, ако наборът, прехвърлен към него, съдържа елементи. Функцията EXISTS връща FALSE, ако наборът, предаден към нея, е празен, тоест не съдържа елементи. Следната заявка показва продуктовите кодове, които се съдържат както в таблиците m_income, така и в m_outcome:

ИЗБЕРЕТЕ DISTINCT идентификатор на продукт


ОТ m_income КАТО a
КЪДЕ СЪЩЕСТВУВА (ИЗБЕРЕТЕ product_id ОТ m_outcome AS b

Заявка Q037.Показват се продуктови кодове, които се съдържат както в таблицата m_income, така и в таблицата m_outcome:

ИЗБЕРЕТЕ DISTINCT идентификатор на продукт


ОТ m_income КАТО a
WHERE product_id IN (ИЗБЕРЕТЕ product_id FROM m_outcome)

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

ИЗБЕРЕТЕ DISTINCT идентификатор на продукт


ОТ m_income КАТО a
КЪДЕ НЕ СЪЩЕСТВУВА (ИЗБЕРЕТЕ product_id ОТ m_outcome AS b
КЪДЕ b.product_id = a.product_id);

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

SELECT product_id, SUM (сума * цена) КАТО сума_сума


ОТ m_outcome
GROUP BY product_id
ИМАТЕ СУМА (сума * цена) = (ИЗБЕРЕТЕ МАКС (s_amount)
FROM (ИЗБЕРЕТЕ СУМА (сума * цена) КАТО s_сума FROM m_outcome GROUP BY product_id));

Заявка Q040. IIF запазена дума ( условен оператор) се използва за оценка булев изрази извършване на едно или друго действие в зависимост от резултата (ВЯРНО или НЕПРАВНО). В следващия пример доставката на артикул се счита за „малка“, ако количеството е по-малко от 500. В противен случай, т.е. количеството на разписката е по-голямо или равно на 500, доставката се счита за „голяма“:

ИЗБЕРЕТЕ dt, product_id, сума,


IIF (сума ОТ m_income;

SQL заявка Q041.В случай, че операторът IIF се използва няколко пъти, е по-удобно да го замените с оператор SWITCH. Операторът SWITCH (оператор с множествен избор) се използва за оценка на булев израз и извършване на действие въз основа на резултата. В следващия пример доставената партида се счита за „малка“, ако количеството стоки в партидата е по-малко от 500. В противен случай, т.е., ако количеството стоки е по-голямо или равно на 500, партидата се счита за „голяма ":

ИЗБЕРЕТЕ dt, product_id, сума,


SWITCH (сума = 500, "голям") AS знак
ОТ m_доход;

Заявка Q042.При следваща заявка, ако количеството стоки в получената партида е по-малко от 300, тогава партидата се счита за „малка“. В противен случай, ако условието за количество SELECT dt, product_id, amount,
IIF (сума IIF (сума ОТ m_income;

SQL заявка Q043.При следваща заявка, ако количеството стоки в получената партида е по-малко от 300, тогава партидата се счита за „малка“. В противен случай, ако условието за количество SELECT dt, product_id, amount,
SWITCH (сума сума > = 1000, "голям") AS знак
ОТ m_доход;

SQL заявка Q044.В следващата заявка продажбите са разделени на три групи: малки (до 150), средни (от 150 до 300), големи (300 или повече). След това за всяка група се изчислява общата сума:

ИЗБЕРЕТЕ Категория, SUM (сума_изход) AS Ctgry_Total


ОТ (ИЗБЕРЕТЕ сума * цена КАТО сума_сума,
IIf (сума * цена IIf (сума * цена ОТ m_outcome) AS t
ГРУПА ПО КАТЕГОРИЯ;

SQL заявка Q045.Функцията DateAdd се използва за добавяне на дни, месеци или години към дадена дата и получаване на нова дата. Следваща заявка:
1) добавя 30 дни към датата от полето dt и показва новата дата в полето dt_plus_30d;
2) добавя 1 месец към датата от полето dt и показва новата дата в полето dt_plus_1m:

ИЗБЕРЕТЕ dt, dateadd ("d", 30, dt) AS dt_plus_30d, dateadd ("m", 1, dt) AS dt_plus_1m


ОТ m_доход;

SQL заявка Q046.Функцията DateDiff изчислява разликата между две дати в различни единици (дни, месеци или години). Следната заявка изчислява разликата между датата в полето dt и текущата дата в дни, месеци и години:

ИЗБЕРЕТЕ dt, DateDiff ("d", dt, Дата ()) КАТО последния_ден,


DateDiff ("m", dt, Дата ()) КАТО последните_месеци,
DateDiff ("гггг", dt, Дата ()) КАТО последните_години
ОТ m_доход;

SQL заявка Q047.Броят дни от датата на получаване на стоките (таблица m_income) до текущата дата се изчислява с помощта на функцията DateDiff и се сравнява датата на изтичане (таблица m_product):


DateDiff ("d", dt, Дата ()) КАТО последните_дни
ОТ m_income КАТО ВЪТРЕШНО ПРИСЪЕДИНЕНИЕ m_product AS b
ON a.product_id = b.id;

SQL заявка Q048.Изчислява се броят на дните от датата на получаване на стоката до текущата дата, след което се проверява дали този брой надвишава срока на годност:

ИЗБЕРЕТЕ a.id, product_id, dt, lifeday,


DateDiff ("d", dt, Date ()) AS last_days, IIf (last_days> lifedays, "Yes", "No") AS date_expire
ОТ m_income a INNER JOIN m_product b
ON a.product_id = b.id;

SQL заявка Q049.Изчислява се броят на месеците от датата на получаване на стоката до текущата дата. Колоната month_last1 изчислява абсолютния брой месеци, колоната month_last2 изчислява броя на пълните месеци:

ИЗБЕРЕТЕ dt, DateDiff ("m", dt, Дата ()) КАТО месец_последен1,


DateDiff ("m", dt, Date ()) - iif (day (dt)> day (date ()), 1,0) AS month_last2
ОТ m_доход;

SQL заявка Q050.Показва се тримесечен отчет за количеството и количеството капитализирани стоки за 2011 г.:

ИЗБЕРЕТЕ квартал, SUM (outcome_sum) КАТО Общо


ОТ (ИЗБЕРЕТЕ сума * цена КАТО сума_изход, месец (dt) AS m,
ИЗКЛЮЧВАТЕЛ (m = 10.4) КАТО квартал
ОТ m_доход КЪДЕ година (dt) = 2011) КАТО t
ГРУПА ПО квартал;

Заявка Q051.Следната заявка помага да разберете дали потребителите са успели да въведат информация в системата за потреблението на артикул в количество, по-голямо от сумата на получаването на артикула:

SELECT product_id, SUM (в_сума) КАТО сума_на_приход, SUM (изход_сума) КАТО сума_изход


FROM (ИЗБЕРЕТЕ product_id, сума * цена като сума_на_сума, 0 като сума_изход
от m_income
СЪЮЗ ВСИЧКИ
ИЗБЕРЕТЕ product_id, 0 като сума_сума, сума * цена като изходяща_сума
от m_outcome) КАТО t
GROUP BY product_id
ИМАТЕ СУМА (в_сума)
Заявка Q052.Номерирането на редовете, върнати от заявка, се изпълнява по различни начини. Например, можете да преномерирате редовете на отчет, изготвен в MS Access, като използвате самия MS Access. Можете също да преномерирате, като използвате езици за програмиране като VBA или PHP. Понякога обаче това трябва да се направи в самата SQL заявка. Така че следната заявка ще номерира редовете на таблицата m_income според нарастващия ред на стойностите на полето за ID:

ИЗБЕРЕТЕ БРОЯ (*) като N, b.id, b.product_id, b.amount, b.price


ОТ m_income a INNER JOIN m_income b ON a.id GROUP BY b.id, b.product_id, b.amount, b.price;

Заявка Q053.Първите пет сред продуктите се показват по обем на продажбите. Първите пет записа се показват с помощта на оператора TOP:

ИЗБЕРЕТЕ ТОП 5, product_id, sum (сума * цена) КАТО suma


ОТ m_outcome
GROUP BY product_id
ПОРЪЧАЙ ПО сума (сума * цена) DESC;

Заявка Q054.Показват се петте лидери сред продуктите по размер на продажбите и в резултат редовете са номерирани:

ИЗБЕРЕТЕ БРОЙ (*) КАТО N, b.product_id, b.summa


ОТ


FROM m_outcome GROUP BY product_id) AS a
ВЪТРЕШНО ПРИСЪЕДИНЕНИЕ
(ИЗБЕРЕТЕ product_id, сума (сума * цена) AS suma,
summa * 10000000 + product_id AS id
FROM m_outcome GROUP BY product_id) AS b
ON a.id> = b.id
GROUP BY b.product_id, b.summa
ПРИ БРОЙ (*) ПОРЪЧКА ПО БРОЙ (*);

Заявка Q055.Следната SQL заявка показва използването на математическите функции COS, SIN, TAN, SQRT, ^ и ABS в MS Access SQL:

SELECT (изберете брой (*) от m_income) като N, 3,1415926 като pi, k,


2 * pi * (k-1) / N като x, COS (x) като COS_, SIN (x) като SIN_, TAN (x) като TAN_,
SQR (x) като SQRT_, x ^ 3 като "x ^ 3", ABS (x) като ABS_
ОТ (ИЗБЕРЕТЕ БРОЙ (*) КАТО k
FROM m_income AS A INNER JOIN m_income AS b ON a.idGROUP BY b.id) t;

SQL заявка. Примери в MS Access. АКТУАЛИЗИРАНЕ: 1-10

Заявка U001.Следната SQL заявка за промяна увеличава цените на артикули с код 3 в таблицата m_income с 10%:

АКТУАЛИЗИРАНЕ m_income SET цена = цена * 1.1


WHERE product_id = 3;

Заявка U002.Следната заявка за актуализиране на SQL увеличава с 22 единици броя на всички продукти, започващи с думата "Нефт" в таблицата m_income:

АКТУАЛИЗИРАНЕ m_income SET сума = сума + 22


WHERE product_id IN (ИЗБЕРЕТЕ идентификатор ОТ m_product WHERE title LIKE "Oil *");

Заявка U003.Следната SQL заявка за промени в таблицата m_outcome понижава цените за всички стоки, произведени от OOO "Sladkoe" с 2 процента:

АКТУАЛИЗИРАНЕ m_outcome SET цена = цена * 0,98


WHERE product_id IN
(ИЗБЕРЕТЕ a.id ОТ m_product a INNER JOIN m_supplier b
ON a.supplier_id = b.id WHERE b.title = "(! LANG: OOO"Сладкое"");. !}

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

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

База данни - файл или набор от файлове за съхранение на подредени структури от данни и техните връзки. Много често системата за управление се нарича база данни - тя е само съхранение на информация в определен формат и може да работи с различни СУБД.

маса - Представете си папка, която съхранява документи, групирани по определен критерий, например списък с поръчки за последния месец. Това е таблицата в компютъра.Отделна таблица има свое уникално име.

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

Колона и ред- всички работихме с електронни таблици, които също имат редове и колони. Всяка релационна база данни работи с таблици по подобен начин. Редовете понякога се наричат ​​записи.

Първичен ключ- всеки ред от таблицата може да има една или повече колони за уникална идентификация. Без първичен ключ е много трудно да актуализирате, модифицирате и изтриете необходимите редове.

Какво е SQL?

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

От 1992 г. съществува общоприет стандарт, наречен ANSI SQL. Той дефинира основния синтаксис и функции на операторите и се поддържа от всички лидери на пазара на СУБД, като ORACLE. Невъзможно е да разгледаме всички характеристики на езика в една малка статия, така че ще разгледаме накратко само основни SQL заявки . Примерите ясно показват простотата и възможностите на езика:

  • създаване на бази данни и таблици;
  • извличане на данни;
  • добавяне на записи;
  • промяна и изтриване на информация.

SQL типове данни

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

Създаване на таблици и бази данни

Има два начина за създаване на нови бази данни, таблици и други заявки в SQL:

  • чрез конзолата на СУБД
  • Използване на онлайн инструменти за администриране, включени в сървъра на базата данни.

Операторът създава нова база данни СЪЗДАЙТЕ БАЗА ДАННИ<наименование базы данных>; ... Както можете да видите, синтаксисът е прост и сбит.

Създаваме таблици вътре в базата данни с израза CREATE TABLE със следните параметри:

  • име на таблица
  • имена на колони и типове данни

Като пример, нека създадем таблица със стоки със следните колони:

Създаваме таблица:

СЪЗДАВАЙТЕ ТАБЛИЦА Стока

(commodity_id CHAR (15) НЕ НУЛИ,

vendor_id CHAR (15) НЕ NULL,

commodity_name CHAR (254) NULL,

commodity_price DECIMAL (8,2) NULL,

commodity_desc VARCHAR (1000) NULL);

Таблицата има пет колони. Името е последвано от типа данни, колоните са разделени със запетаи. Стойността на колоната може да бъде нула (NULL) или трябва да бъде попълнена (NOT NULL) и това се определя при създаването на таблицата.

Извличане на данни от таблица

Операторът за избор на данни е най-често използваните SQL заявки. За да получим информация, е необходимо да посочим какво искаме да изберем от такава таблица. Нека започнем с прост пример:

ИЗБЕРЕТЕ име_на стока ОТ Стока

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

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

За заявка за няколко полета ги изброяваме, разделени със запетаи, както е в следния пример:

ИЗБЕРЕТЕ идентификатор на стока, име_на стока, цена_на стока ОТ Стока

Възможно е да се получи стойността на всички колони на реда в резултат на заявка. За да направите това, използвайте знака "*":

ИЗБЕРЕТЕ * ОТ Стока

  • Освен това SELECT поддържа:
  • Сортиране на данни (оператор ORDER BY)
  • Избор според условията (КЪДЕ)
  • Термин за групиране (GROUP BY)

Добавете линията

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

  • добавете нов цял ред;
  • част от низ;
  • резултати от запитване.

За да добавите пълен ред, трябва да посочите името на таблицата и стойностите на колоните (полета) на новия ред. Нека дадем пример:

ВМЕСТЕ В СТОКОВИ СТОКИ ("106", "50", "Coca-Cola", "1,68", "Без алкохол,)

Примерът добавя нов продукт към таблицата. Стойностите са посочени след VALUES за всяка колона. Ако няма съответна стойност за колоната, тогава трябва да се посочи NULL. Колоните се попълват със стойности в реда, посочен при създаването на таблицата.

Ако добавите само част от ред, трябва изрично да посочите имената на колоните, както е в примера:

INSERT INTO Стока (идентификатор на стока, идентификатор на доставчик, име на стока)

СТОЙНОСТИ ("106", '50 "," Coca-Cola ",)

Въведохме само идентификаторите на продукта, доставчика и неговото име, а останалите полета оставихме празни.

Добавяне на резултати от заявка

INSERT се използва главно за добавяне на редове, но може да се използва и за добавяне на резултатите от оператор SELECT.

Промяна на данните

За да промените информацията в полетата на таблицата на базата данни, трябва да използвате оператора UPDATE. Операторът може да се използва по два начина:

  • Всички редове в таблицата се актуализират.
  • Само за конкретна линия.

UPDATE има три основни елемента:

  • таблицата, в която трябва да направите промени;
  • имена на полета и техните нови стойности;
  • условия за избор на редове за промяна.

Нека да разгледаме един пример. Да приемем, че цената на артикул с ID = 106 се е променила, така че този ред трябва да бъде актуализиран. Пишем следния оператор:

АКТУАЛИЗИРАНЕ на стока SET commodity_price = "3.2" WHERE commodity_id = "106"

Посочихме името на таблицата, в нашия случай Стока, където ще се извърши актуализацията, след това след SET - новата стойност на колоната и намерихме желан входкато посочите желаната стойност на ID в WHERE.

За да модифицирате множество колони, няколко двойки колона-стойност са посочени след оператора SET, разделени със запетаи. Нека разгледаме пример, който актуализира името и цената на продукт:

АКТУАЛИЗАЦИЯ НАБОР на стока commodity_name = 'Fanta', commodity_price = "3.2" WHERE commodity_id = "106"

За да премахнете информация в колона, можете да я зададете на NULL, ако структурата на таблицата го позволява. Трябва да се помни, че NULL е точно "не" стойност, а не нула под формата на текст или числа. Нека изтрием описанието на продукта:

АКТУАЛИЗИРАНЕ НА COMmodity SET commodity_desc = NULL WHERE commodity_id = "106"

Изтриване на редове

SQL заявките за изтриване на редове в таблица се изпълняват от оператора DELETE. Има два случая на употреба:

  • определени редове се изтриват в таблицата;
  • всички редове в таблицата се изтриват.

Пример за изтриване на един ред от таблица:

ИЗТРИВАНЕ ОТ Стока WHERE commodity_id = "106"

След DELETE FROM посочваме името на таблицата, в която ще бъдат изтрити редовете. Клаузата WHERE съдържа условие, при което ще бъдат избрани редовете за изтриване. В примера изтриваме реда за продукта с ID = 106. Много е важно да се уточни КЪДЕ. пропускането на този израз ще изтрие всички редове в таблицата. Това важи и за промяна на стойността на полетата.

Инструкцията DELETE не включва имена на колони или метасимволи. Изтрива редове изцяло, но не може да изтрие нито една колона.

Използване на SQL в Microsoft Access

Обикновено се използва интерактивно за създаване на таблици, бази данни, за управление, модифициране, анализиране на данни в база данни и за вграждане на заявки за SQL Access чрез удобен интерактивен дизайнер на заявки (Query Designer), с помощта на който можете да изграждате и незабавно изпълнявате SQL оператори на всякакви сложност...

Поддържа се и режимът на достъп до сървъра, при който СУБД на Access може да се използва като генератор на SQL заявки към всеки източник на ODBC данни. Тази възможност позволява на приложенията на Access да взаимодействат с всеки формат.

SQL разширения

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

Най-често срещаните диалекти на езика:

  • Oracle Database - PL / SQL
  • Interbase, Firebird - PSQL
  • Microsoft SQL Server - Transact-SQL
  • PostgreSQL - PL / pgSQL.

SQL в Интернет

MySQL се разпространява под GNU General Public License. Има търговски лиценз с възможност за разработване на персонализирани модули. Като неразделна част той е включен в най-популярните сборки на интернет сървъри, като XAMPP, WAMP и LAMP, и е най-популярната СУБД за разработване на приложения в Интернет.

Той е разработен от Sun Microsystems и в момента се поддържа от Oracle Corporation. Поддържат се бази данни до 64 терабайта, SQL: стандарт за синтаксис 2003, репликация на база данни и облачни услуги.



Свързани статии: