Въведение
Целта на този урок е да демонстрира как можете да пишете свои собствени SQL изрази и да ги изпълнявате от Microsoft Access 2007, 2010, 2013 2016 или 2019 (стъпките са практически идентични във всички версии). Както при всички релационни бази данни, Microsoft Access може да се програмира директно с помощта на Structured Query Language (SQL). Въпреки че най-често SQL е скрит от потребителите, за студентите в базата данни MS Access предоставя бърз и лесен начин за изследване на SQL и писане на някои доста сложни заявки. Това е особено удобно, ако нямате време или търпение да инсталирате SQL Server, Oracle, MySQL или друга по-голяма система за управление на релационни бази данни.
Примерите за SQL, използвани в този кратък урок, се основават на простите таблици за клиенти и акаунти, създадени като част от моя урок за Microsoft Access 2007, 2010 и 2013.
Може да пожелаете първо да преминете през този урок (или поне първия няколко раздела), за да създадете таблиците и да добавите необходимите данни, за да могат тези примери да работят.
Следващият раздел ще предостави много кратко въведение на езика на структурираните заявки (SQL).
Езикът на структурираните заявки (SQL)
Структуриран език за заявки (SQL, произнасян като „Sequel“) е декларативен език за програмиране, използван за манипулиране на системи за управление на релационни бази данни (RDBMS). За първи път е въведен в System R на IBM в края на 70-те години. Днес SQL се използва във всички основни релационни СУБД като Oracle, IBM DB2, Informix, Sybase, Microsoft SQL Server, MySQL, Postgres, SQLLite, Microsoft Access и много други. Въпреки че всеки доставчик на база данни предоставя някои добавени собствени функции, ядрото на SQL може да се използва в почти всяка релационна база данни.
Езикът на структурираните заявки е разделен на две основни части:
- Език за дефиниране на данни (DDL) – Използва се за създаване (дефиниране) на структури от данни като схеми, таблици, индекси, клъстери, последователности, тъй като ние ще осигурим базата данни
- Език за манипулиране на данни (DML) – Използва се за вмъкване, извличане, актуализиране и изтриване на данни от таблици.
Microsoft Access поддържа както DDL, така и DML части на SQL. През повечето време се фокусираме върху SQL заявки, които като SQL SELECT изрази се използват за извличане на данни от съществуваща база данни. Основният синтаксис за SQL оператор SELECT е:
SELECT column1, column2, ... columnN FROM tableA, tableB, ... tableZ WHERE condition1, condition2, ...conditionM ORDER BY column1, column2, ... columnN
Така например, ако приемем, че имаме таблица с име Customer с колони като FirstName, LastName, StreetAddress, City, State и Zip, можем да напишем SQL оператор SELECT по следния начин:
SELECT FirstName, LastName, City, State FROM customer
В горната заявка ние искаме данни само в колоните FirstName, LastName, City и State, а таблицата, от която получаваме тези данни, се нарича клиент. Имайте предвид, че езикът SQL не се притеснява за главни или малки букви. Така че пишете изберете първоИме... е същото като писането на ИЗБЕРЕТЕ ПЪРВО ИМЕ ... .
Малко по-сложно запитване би било, ако искаме да видим само клиенти, които живеят в Грузия и бихме искали резултатите да бъдат сортирани по фамилното име на клиента:
SELECT FirstName, LastName, City, State FROM customer WHERE state = 'GA' ORDER BY LastName
Както можете да видите, списъкът с колони, които искаме да покажем, следва ключовата дума SELECT. Името на таблицата, която правим заявка, следва ключовата дума FROM, условие state ='GA' следва ключовата дума WHERE и накрая резултатите се сортират в колоната LastName, както е описано от ключовата дума ORDER BY.
Има много повече функции на оператора SELECT на SQL, които включват запитване на множество таблици чрез „съединяването“ им заедно, групиране на колекции от записи за намиране на суми, най-големи, най-малки или средни стойности и извършване на други манипулации с изхода, който потребителите в крайна сметка ще видят. Много по-изчерпателна дискусия относно характеристиките на SQL може да бъде намерена на тази връзка.
Следващият раздел представя използването на SQL от изгледа за проектиране на заявка в MS Access.
SQL в Microsoft Access
В този раздел ще предоставим стъпките за написване на свой собствен SQL в MS Access. Това упражнение предполага, че MS Access 2007, 2010 или 2013 работи с отворена база данни „Банка“ (таблици на клиенти и сметки). Щракнете тук за урока със стъпки за създаване на тази база данни.
За да започнете:
- създайте нова заявка, като щракнете върху Създаване раздела и след това щракнете върху Дизайн на заявка икона, както е показано по-долу.
- Диалоговият прозорец „Показване на таблицата“ ще се появи, както е показано по-долу. Щракнете върху Затваряне бутон, за да го затворите.
- Щракнете върху раздела Дизайн и след това щракнете върху SQL икона от лявата страна (или дръпнете надолу бутона за изглед и изберете SQL
- В този момент ще се появи SQL изгледът на заявката Query1. По подразбиране ключовата дума SELECT се показва в прозореца.
- Редактирайте заявката, за да напишете пълен SQL оператор:
SELECT firstname, lastname FROM customer ORDER BY lastname
Прозорецът за заявка за SQL изглед сега ще се появи, както следва:
- В този момент, с въведен SQL израз, можем да изпълним заявката към базата данни, като щракнем върху бутона с удивителния знак „Изпълни“.
- Резултатите от заявката ще се покажат в изглед на лист с данни (като електронна таблица):
- За да се върнете към редактиране на SQL заявката, издърпайте надолу менюто View и изберете SQL отново.
- Може също да пожелаете да запазите заявката си. За да направите това, щракнете с десния бутон върху раздела с текущото име на заявка:Query1 и изберете Запазване .
Ще се появи диалогов прозорец с подкана за новото име на заявката. Въведете ново име, като например:Customer_Names и след това щракнете върху OK за да го запазите.
- И накрая, MS Access не предоставя начин за запазване на заявка под ново име („Запазване като“). Вместо това, което можете да направите, е да маркирате името на заявката, щракнете с десния бутон и изберете Копиране след това щракнете с десния бутон отново и изберете Поставяне . След това ще бъдете подканени за новото име на заявката.
След това ще представя някои трикове и съвети за писане и отстраняване на грешки във вашите SQL заявки.
Писане и отстраняване на грешки в SQL заявки в MS Access
Сега, когато имате основната механика на писане и изпълнение на SQL заявки, ето няколко съвета и трика за отстраняване на грешки във вашия SQL.
Редактори за MS Access SQL
Прозорецът на редактора на SQL в MS Access не е толкова интелигентен или лесен за работа. Един от начините за работа с SQL е да напишете кода в друг редактор, след което да копирате и поставите кода в Access, за да го стартирате. Налични са много различни текстови редактори. Например в рамките на Windows ще имате наличен Notepad в групата Аксесоари. Единственото предупреждение, което мога да дам тук, е да НЕ използвате MS word или друг софтуер за текстообработка, за да напишете своя SQL. Причината за това е, че MS Word и други текстови процесори ще превърнат вашите единични и двойни кавички в „ефектни кавички“, които SQL не разбира.
Например, ако имате клауза WHERE като WHERE state ='GA'
SQL очаква текстът да бъде затворен в прости кавички. MS word ще ги превърне в фантастичен знак за отваряне и затваряне на кавички, който SQL няма да разбере.
Ако получите грешка като Въведете стойност на параметъра за `GA' тогава определено ще искате да сте сигурни, че текстът ви е затворен в обикновени единични кавички.
Справяне със синтактични грешки
Синтактичните грешки могат да бъдат много разочароващи в SQL, защото често базата данни не може да определи точно къде е проблемът във вашия код. Някои от основните грешки, които Access ще покаже, включват:
Текст за грешка | Решение | Пример |
---|---|---|
Въведете стойност на параметъра за ________ | Най-често това се случва, когато името на колона (поле) не е въведено правилно (като този случай „lstname“ е написано неправилно) или изразът не може да бъде разпознат като WHERE състояние =`GA' | |
Механизмът на базата данни на Microsoft Access не може да намери входната заявка или таблица :______________ | Най-често това се случва, когато името на таблица не е въведено правилно в клаузата FROM на заявката. Например, в този случай заявката е посочила ОТ клиенти вместо ОТ клиент | |
Грешка в синтакса (липсващ оператор) в израза на заявката:______________ | В този случай в синтаксиса на заявката липсват някои ключови части. Например липсва клаузата „FROM“ и така Access отчита приблизителното местоположение на мястото, където възниква проблемът, като показва текста на заявката. |
В следващия раздел ще дам някои допълнителни съвети как да представите вашите SQL заявки и резултати за проект или домашна задача.
Документиране на вашата SQL работа
В този раздел ще опиша някои съвети за форматиране на вашите заявки и резултати, така че да бъдат представени по ясен, кратък начин върху вашите задачи и проекти.
Предполага се, че ще използвате програма за текстообработка като MS Word или друга програма за текстообработка, която поддържа копиране и поставяне на снимки и текст.
MS Access не ви позволява да поставяте коментари в SQL кода. Други СУБД позволяват това, но Access е малко по-ограничителен.
За това упражнение приемете, че въпросът за домашната работа е да покажете името и фамилията на всички клиенти и да подредите резултата по фамилното име на клиента.
- Въведете SQL заявката, както е описано в предишния раздел и я стартирайте, за да получите резултатите:
- В изгледа на лист с данни щракнете върху малкото квадратно поле вляво от заглавията на колоните и в горната част на полетата за избор на редове. Това ще доведе до осветяване на целия набор от резултати.
- Щракнете с десния бутон върху същото малко квадратно поле в ъгъла и изберете Копиране от изскачащото меню.
- Превключете към MS Word (или друга програма за текстообработка) и поставете резултатите на подходящо място:
Някои други полезни съвети, които също бяха последвани при създаването на този документ за задание:
- Не забравяйте да въведете пълното изречение, описващо заявката, която решавате (Не поставяйте просто „Въпрос 1“). Например може да искате да копирате въпроса от домашното и да го направите част от отговора.
- Когато поставяте в SQL текста за вашата заявка, използвайте шрифт Courier New, така че знаците и интервалите да се подредят. Това го прави много по-лесен за четене.
- Поставете резултатите, като използвате техниката, показана по-горе, вместо да използвате екранна снимка. Това не само ще направи файловете с документи на Word по-малки, но и ще излязат много ясно, когато го отпечатате.
- Не забравяйте да поставите вашето име, клас/курс и раздел в заданието си.
- За по-сложни заявки, които могат да включват подзаявки или вградени заявки, най-добре е да подредите подзаявките с отстъп за, за да ги улесните за четене и отстраняване на грешки. Например, вместо да пишете подзаявка като тази:
SELECT accountnumber, balance FROM accounts WHERE balance = (SELECT MIN(balance) from accounts)
Подредете подзаявката покрай скобите:
SELECT accountnumber, balance FROM accounts WHERE balance = ( SELECT MIN(balance) FROM accounts )
Следването на тези стъпки ще направи страхотно впечатление, когато предадете своите задачи и проекти.
Заключения
В този кратък урок разгледахме как да работим със SQL с помощта на MS Access. SQL е доста общ език за програмиране и всичко, което научите, докато пишете SQL под MS достъп, може лесно да бъде прехвърлено в други релационни бази данни като SQL Server, Oracle, Sybase и т.н. За повече бележки относно SQL, посетете моя Structured Query Language (SQL) страница с бележки по курса.
За още въвеждащ и разширен урок за MS Access, моля, посетете категорията Access на моя уеб сайт.