Всеки от нас редовно се сблъсква и използва различни бази данни. Когато избираме имейл адрес, ние работим с база данни. Базите данни използват услуги за търсене, банките за съхраняване на клиентски данни и т.н.
Но въпреки постоянното използване на бази данни, дори за много разработчици на софтуерни системи има много "бели петна" поради различни тълкувания на едни и същи термини. Ще дадем кратка дефиниция на основните термини на бази данни, преди да разгледаме езика SQL. Така.
База данни - файл или набор от файлове за съхраняване на подредени структури от данни и техните връзки. Много често базата данни се нарича система за управление - тя е само хранилище на информация в определен формат и може да работи с различни СУБД.
Таблица - Нека си представим папка, в която се съхраняват документи, групирани по определен признак, например списък с поръчки за последния месец. Това е таблицата в компютъра Отделна таблица има свое уникално име.
Тип данни - вида информация, разрешена за съхраняване в определена колона или ред. Това могат да бъдат числа или текст в определен формат.
Колона и ред- всички сме работили с електронни таблици, които също имат редове и колони. Всяка релационна база данни работи с таблици по същия начин. Редовете понякога се наричат записи.
първичен ключ- всеки ред на таблица може да има една или повече колони, които да го идентифицират уникално. Без първичен ключ е много трудно да се актуализират, модифицират и изтриват желаните редове.
SQL(Английски - структуриран език за заявки) е разработен само за работа с бази данни и в момента е стандарт за всички популярни СУБД. Синтаксисът на езика се състои от малък брой оператори и е лесен за научаване. Но въпреки външната простота, това позволява създаване на sqlзаявки за сложни операции с база данни от всякакъв размер.
От 1992 г. има общоприет стандарт, наречен ANSI SQL. Той дефинира основния синтаксис и функциите на операторите и се поддържа от всички лидери на пазара на СУБД като ORACLE. Невъзможно е да покрием всички възможности на езика в една малка статия, така че ще разгледаме накратко само основните SQL заявки. Примерите ясно показват простотата и възможностите на езика:
Всички колони в таблица на база данни съхраняват един и същи тип данни. Типовете данни в SQL са същите като в другите езици за програмиране.
Има два начина за създаване на нови бази данни, таблици и други заявки в SQL:
Създава се нова база данни от оператора СЪЗДАВАНЕ НА БАЗА ДАННИ<наименование базы данных>; . Както можете да видите, синтаксисът е прост и кратък.
Създаваме таблици в базата данни, като използваме оператора CREATE TABLE със следните параметри:
Като пример, нека създадем таблица за стоки със следните колони:
Създаваме таблица:
СЪЗДАВАНЕ НА ТАБЛИЦА Стока
(commodity_id CHAR(15) NOT NULL,
vendor_id CHAR(15) NOT NULL,
commodity_name CHAR(254) NULL,
commodity_price DECIMAL(8,2) NULL,
commodity_desc VARCHAR(1000) NULL);
Таблицата има пет колони. След името идва типът данни, колоните са разделени със запетаи. Стойността на колона може да бъде празна (NULL) или трябва да бъде попълнена (NOT NULL) и това се определя при създаването на таблицата.
Операторът за избор на данни е най-често използваната SQL заявка. За да получите информация, трябва да посочите какво искаме да изберем от такава таблица. Първо прост пример:
ИЗБЕРЕТЕ commodity_name FROM Commodity
След командата SELECT посочваме името на колоната за получаване на информация, а FROM дефинира таблицата.
Резултатът от изпълнението на заявката ще бъдат всички редове на таблицата със стойности на Commodity_name в реда, в който са въведени в базата данни, т.е. без никакво сортиране. Допълнителна клауза ORDER BY се използва за подреждане на резултата.
За да направите заявка в множество полета, избройте ги разделени със запетаи, както в следния пример:
ИЗБЕРЕТЕ commodity_id, commodity_name, commodity_price ОТ Стока
Възможно е да получите стойността на всички колони на ред като резултат от заявка. За това се използва знакът "*":
ИЗБЕРЕТЕ * ОТ Стока
За добавяне на ред към таблица се използват SQL заявки с израза INSERT. Добавянето може да стане по три начина:
За да добавите пълен ред, трябва да посочите името на таблицата и стойностите на колоните (полетата) на новия ред. Ето един пример:
INSERT INTO Commodity VALUES("106 ", "50", "Coca-Cola", "1,68", "Без алкохол ,)
Примерът добавя нов продукт към таблицата. Стойностите са посочени след VALUES за всяка колона. Ако няма съответстваща стойност за колоната, тогава трябва да се посочи NULL. Колоните се попълват със стойности в реда, посочен при създаването на таблицата.
Ако добавите само част от ред, трябва изрично да посочите имената на колоните, както в примера:
INSERT INTO Commodity (commodity_id, vendor_id, commodity_name)
VALUES("106 ", '50", "Кока Кола")
Въведохме само идентификаторите на продукта, доставчика и името му, а останалите полета оставихме празни.
INSERT се използва предимно за добавяне на редове, но може да се използва и за добавяне на резултатите от оператор SELECT.
За да промените информацията в полетата на таблица на база данни, трябва да използвате израза UPDATE. Операторът може да се използва по два начина:
АКТУАЛИЗАЦИЯТА се състои от три основни елемента:
Помислете за пример. Да приемем, че цената на продукт с ID=106 се е променила, така че този ред трябва да се актуализира. Пишем следното изявление:
UPDATE Commodity SET commodity_price = "3.2" WHERE commodity_id = "106"
Посочваме името на таблицата, в нашия случай Commodity, където ще се извършва актуализацията, след това след SET - новата стойност на колоната и намираме желания запис, като посочваме желаната ID стойност в WHERE.
За да промените няколко колони, укажете няколко двойки стойност на колона, разделени със запетаи след оператора SET. Нека да разгледаме пример, в който името и цената на продукта са актуализирани:
UPDATE Commodity SET commodity_name='Fanta', commodity_price = "3.2" WHERE commodity_id = "106"
За да изтриете информация в колона, можете да я зададете на NULL, ако структурата на таблицата го позволява. Трябва да се помни, че NULL е точно "не" стойност, а не нула под формата на текст или число. Премахване на описанието на продукта:
UPDATE Commodity SET commodity_desc = NULL WHERE commodity_id = "106"
SQL заявките за изтриване на редове в таблица се изпълняват с оператора DELETE. Има два случая на употреба:
Пример за изтриване на един ред от таблица:
ИЗТРИВАНЕ ОТ Стока WHERE commodity_id = "106"
След DELETE FROM посочваме името на таблицата, в която ще се изтриват редове. Клаузата WHERE съдържа условие, според което редовете ще бъдат избрани за изтриване. В примера изтриваме продуктовата линия с ID=106. Посочването WHERE е много важно. пропускането на този израз ще изтрие всички редове в таблицата. Това се отнася и за промяна на стойността на полетата.
Операторът DELETE не указва имена на колони или метасимволи. Той премахва напълно редове, но не може да премахне нито една колона.
Обикновено се използва интерактивно за създаване на таблици, бази данни, за управление, модифициране, анализиране на данни в базата данни и за прилагане на заявки за SQL Access чрез удобен интерактивен дизайнер на заявки (Query Designer), с помощта на който можете да създавате и незабавно да изпълнявате SQL изрази с всякаква сложност.
Поддържа се и режимът на достъп до сървъра, при който Access DBMS може да се използва като генератор на SQL заявки към всеки ODBC източник на данни. Тази възможност позволява на приложенията на Access да взаимодействат с всеки формат.
Тъй като SQL заявките нямат всички функции на процедурните езици за програмиране, като цикли, разклонения и т.н., доставчиците на СУБД разработват своя собствена версия на SQL с разширени функции. На първо място, това е поддръжка за съхранени процедури и стандартни оператори на процедурни езици.
Най-често срещаните диалекти на езика:
СУБД MySQL се разпространява под GNU General Public License. Има търговски лиценз с възможност за разработване на персонализирани модули. Като неразделна част, той е включен в най-популярните сборки на интернет сървъри, като XAMPP, WAMP и LAMP, и е най-популярната СУБД за разработка на приложения в Интернет.
Той е разработен от Sun Microsystems и в момента се поддържа от Oracle Corporation. Поддържа бази данни до 64 терабайта, стандартен синтаксис SQL:2003, репликация на бази данни и облачни услуги.
SQL заявка е заявка, създадена с помощта на SQL изрази. SQL (Structured Query Language) се използва за създаване на заявки и за актуализиране и управление на релационни бази данни като бази данни на Microsoft Access.
Когато потребител създаде заявка в изгледа за проектиране на заявка, Microsoft Access автоматично създава еквивалентен SQL оператор. Има редица заявки, които могат да бъдат направени само в SQL режим. Опитните програмисти често намират за по-лесно веднага да напишат израз в SQL, отколкото да формират заявка.
Тип заявка в конструктора:
При сложни изчисления трябва последователно да направите няколко заявки, за да получите резултата. Ясно е, че тези действия трябва да се извършват автоматично без намеса на потребителя.
За това се използват макроси, състоящи се от няколко последователно изпълнявани команди.
Изчисления в заявки, възможност за създаване и редактиране на формули.
За полета от таблиците, посочени в схемата на заявката, можете да посочите всякакви изчисления.
За да извършите изчисления, трябва да добавите допълнителни изчисляеми полета към заявката, чиито стойности се изчисляват въз основа на стойностите на други полета на заявката.
Финални заявки, групиране, финални функции.
Крайната заявка се създава с помощта на режим - Обобщена заявка.
Могат да се използват три таблици, включително таблица за връзки.
В този случай можете да извикате контекстното меню от всяко място в заявката (десен бутон на мишката) и да изберете функцията „групови операции“.
Ще се покаже формулярът за заявка нова линияГрупиране.
Общи функции: в полето, за което искаме да изчислим сумите, изберете функцията "Sum" от списъка, за да сумирате всички стойности на избраните полета. Функцията Count ще преброи броя на стойностите на полетата. редактиране на информация microsoft
Заявката е извикване към СУБД за извършване на всякакви операции с данни: избиране на част от данните от общия обем, добавяне на изчислени полета, групова промяна на данни и т.н.
В заявка можете:
Видове заявки:
Заявките се използват като източници на записи за формуляри и отчети. В по-голямата си част, както във формуляри, така и в справки, преди издаване, трябва да изберете част от данните според някои условия и да сортирате данните. Това става със заявки. Заявката може да се съхранява отделно или да бъде свързана към формуляр или отчет.
В Microsoft Access има няколко вида заявки.
Microsoft Access е релационен тип СУБД, който разумно балансира всички инструменти и възможности, типични за съвременните системи за управление на бази данни. Релационната база данни улеснява намирането, анализирането, поддържането и защитата на данни, тъй като се съхраняват на едно място. Access в превод от английски означава "достъп". MS Access е една от най-мощните, гъвкави и лесни за използване СУБД. Можете да създадете повечето приложения в него, без да напишете нито един ред от програмата, но ако трябва да създадете нещо много сложно, тогава за този случай MS Access предоставя мощен език за програмиране - Visual Basic Application.
Популярността на Microsoft Access DBMS се дължи на следните причини:
Достъпността в проучването и разбираемостта позволяват на Access да бъде един от най-добрите системибързо създаване на приложения за управление на база данни;
Възможност за използване на OLE технология;
Интеграция с пакета Microsoft Office;
Пълна поддръжка на Web-технологии;
Визуалната технология ви позволява постоянно да виждате резултатите от вашите действия и да ги коригирате;
Наличието на голям набор от "майстори" за разработване на обекти.
Основните типове обекти, с които работи програмата са: таблица, заявка, форма, отчет, страница, макрос, модул.
Таблицата е обект, който се използва за съхраняване на данни. Всяка таблица включва информация за даден обект определен тип. Таблицата съдържа полета (колони), които съхраняват различни видове данни, и записи (редове). За всяка таблица трябва да се дефинира първичен ключ (едно поле, което има за всеки запис уникална стойностили няколко полета, чиято кумулативна стойност е уникална за всеки запис), което е уникален идентификатор за всеки запис на таблица.
За да се увеличи скоростта на достъп до данни, отделните полета на таблицата (или тяхната комбинация) могат да бъдат декларирани като индекси. Индексът е инструмент, който ускорява търсенето и сортирането в таблица чрез използване на ключови стойности, което прави възможно да се гарантира уникалността на редовете на таблицата. Първичният ключ на таблицата се индексира автоматично. Не е позволено да се създават индекси за полета с някои типове данни.
Заявката е обект, който позволява на потребителя да получи желаните данни от една или повече таблици. Можете също да използвате заявки за създаване на нови таблици, като използвате данни от една или повече таблици, които вече съществуват. Най-често срещаният тип заявка е заявка за избор. Заявка за избор избира данни от една или повече таблици въз основа на определени условия и след това ги показва в желания ред.
Формулярът е обект предимно за въвеждане на данни, показването им на екрана или контролиране на работата на приложение.
Доклад - обект, предназначен да създаде документ, който по-късно може да бъде отпечатан или включен в документ на друго приложение.
база за програмиране на визуално развитие
Страница - Използва се за достъп до данни в текущата база данни на Access.
Макросът е обект, който е структурирано описание на едно или повече действия, които Access трябва да изпълни в отговор на конкретно събитие.
Модулът е обект, съдържащ програми на Microsoft Visual Basic, които ви позволяват да разделите процеса на по-малки стъпки и да откриете онези грешки, които не могат да бъдат намерени с помощта на макроси.
СУБД се стартира от Старт - Програми - Microsoft Access. Изпълнете командата File - New.
Унифициран е интерфейсът за работа с обекти на база данни. За всеки от тях има стандартни режими на работа: Създаване (създаване на структурата на обектите); Конструктор (промяна на структурата на обектите); Open (View, Run - предназначен за работа с обекти на база данни).
SQL (Structured Query Language - структуриран език за заявки) от 1986г. е стандартният език за релационни бази данни. По-специално, той се използва в приложенията на Access и Excel.
SQL е информационно-логичен език, предназначен да описва съхранени данни, да извлича съхранени данни и да модифицира данни. Първоначално SQL беше основният начин, по който потребителят работеше с базата данни и беше малък набор от команди (оператори), които позволяваха създаване на таблици, добавяне на нови записи към таблици, извличане на записи от таблици, изтриване на записи и промяна на структурите на таблици. Поради нарастващата сложност езикът SQL се превърна в по-приложен език за програмиране и потребителите успяха да използват визуални създатели на заявки.
Езикът SQL е набор от оператори:
оператори за дефиниране на данни (Data Definition Language, DDL);
оператори за манипулиране на данни (Data Manipulation Language, DML);
оператори за дефиниране на достъп до данни (Data Control Language, DCL);
Изявления на езика за контрол на транзакциите (TCL).
Заявките в MS Access се съхраняват и изпълняват с помощта на езика SQL. Въпреки че повечето заявки могат да бъдат създадени с помощта на графични инструменти (шаблонни заявки), те се съхраняват като SQL изрази. В някои случаи (например в подзаявки) може да се използва само SQL.
SQL е непроцедурен език. Той просто декларира какво трябва да се направи и изпълнението се поверява на СУБД (система за управление на база данни).
SQL използва тризначна логика. Наред с традиционните булеви стойности TRUE и FALSE се използва NULL (НЕИЗВЕСТНО или БЕЗ ДАННИ).
Операциите се извършват върху цели набори от данни, а не върху отделни елементи, както е в други езици за програмиране.
SQL заявката се състои от изрази. Всяка инструкция може да съдържа множество клаузи.
С течение на времето процесът може да изисква мигриране на Microsoft Office Access (Access) файлов сървър база данни към клиент-сървър DBMS формат. Обикновено за тази цел се използва ODBC. Въпреки това, за прехвърляне към Microsoft SQL Server (MS SQL), Access и MS SQL DBMS имат удобни специализирани инструменти.
Има три начина за прехвърляне на база данни от Access към MS SQL. Разгледайте ги всички на примера на проста база данни, състояща се от две таблици и една заявка.
За да започнете прехвърлянето, трябва да щракнете върху бутона "SQL Server" в областта "Преместване на данни" на раздела "Работа с бази данни".
В прозореца, който се отваря, трябва да изберете къде ще бъдат прехвърлени данните.
Има две възможности:
Задаваме името на сървъра, към който ще прехвърлим базата данни, името на създаваната база данни и посочваме потребителското име и паролата за връзка.
За да изберете една таблица, използвайте бутона ">", а за да изберете всички таблици, използвайте бутона ">>". За да откажете прехвърлянето, бутоните "<» и «<<» соответственно.
След като изберете таблици, можете да зададете допълнителни опции за тяхното прехвърляне. По-специално, съвременните версии на Access могат да експортират не само самите таблици с данни, но и връзките между тях. Това значително намалява времето, необходимо за миграции на бази данни, тъй като не е необходимо те да се създават отново след миграцията.
Когато цялата необходима информация бъде събрана, можете или да се върнете към една от предишните стъпки за проверка, или да започнете процеса на прехвърляне, като щракнете върху бутона „Край“.
Напредъкът на процеса на прехвърляне се показва ясно в специален прозорец.
След като миграцията приключи, можете да отворите SQL Server Management Studio и да видите резултата.
Този метод е най-простият и удобен, но за съжаление ви позволява да прехвърляте само таблици и придружаващите ги елементи (индекси, връзки и др.).
MS SQL може да импортира данни от голямо разнообразие от източници. Но директен импорт от Access е възможен само за бази данни от стария формат (.mdb).
Можете да намерите подробни инструкции за импортиране на такива бази данни.
Импортирането на бази данни от нови формати (2007 и по-нови) е много по-трудно.
Има два начина за решаване на този проблем:
За съжаление ODBC подходът е доста сложен при 64-битовите версии на Windows.
Причината е, че 64-битовите версии на MS SQL са в комплект с 32-битовите версии на SQL Server Management Studio. Това обстоятелство означава, че базите данни на Access, за които са създадени източници на данни въз основа на 64-битови драйвери, не могат да бъдат импортирани с тази програма.
Отново има два изхода (което означава само методи, използващи графичен интерфейс):
Въпреки това, дори ако все пак успеете да установите процеса на импортиране, ползите от това може да са много по-малко от изразходваното време и усилия.
При импортирането се прехвърлят само самите таблици и тяхното съдържание и нищо друго (сравнете с възможностите на предишния метод).
Трябва също да се отбележи, че при директен импорт от Access проблемът с експортирането на заявки е частично решен (няма достъп до заявки през ODBC). Но по подразбиране заявките се импортират в базата данни на MS SQL под формата на обикновени таблици.
За щастие е възможно да настроите фино параметрите за импортиране и можете ръчно да замените SQL заявката за създаване на таблица със заявка за създаване на изглед.
За да направите това, в прозореца на екранната снимка по-горе за избраната заявка за достъп щракнете върху бутона „Промяна“.
В прозореца, който се отваря, щракнете върху бутона „Промяна на SQL ...“.
Ще се отвори прозорец за редактиране на SQL заявка, в който всъщност трябва да замените автоматично генерираната заявка
със собствения си.
В резултат на това заявката от Access ще бъде прехвърлена правилно в MS SQL базата данни като изглед, а не като таблица.
Разбира се, такива настройки са усърден ръчен труд, който също изисква определени знания и умения, но все пак, както се казва, „по-добре от нищо“.
Следователно този метод за прехвърляне на бази данни на Access към MS SQL е по-подходящ за квалифицирани специалисти в двете СУБД.
Следното е пример за импортиране на база данни на Access с помощта на ODBC на 32-битова версия на Windows. При 64-битова версия на Windows, когато се използва 32-битова версия на Access, импортирането е подобно, но източникът на данни се създава в 32-битовия ODBC мениджър.
Ние създаваме източник на данни.
В прозореца, който се отваря, въведете името му.
След това кликнете върху бутона "Избор" и посочете към коя база данни на Access искате да се свържете.
Когато името на източника и файла на базата данни са зададени, остава да щракнете върху бутона „Ok“ и източникът на данни за желаната база данни на Access е готов.
Сега можете да продължите директно към импортирането на базата данни в MS SQL.
За да направите това, в контекстното меню на базата данни, в която искате да импортирате, изберете елементите "Задачи" -\u003e "Импортиране на данни".
Ще се отвори „Съветникът за импортиране и експортиране на данни“.
В падащия списък „Източник на данни“ трябва да изберете „.Net Framework Data Provider for Odbc“ (ако не е избрано по подразбиране) и в реда Dsn в таблицата да посочите името на източника на данни, създаден по-горе за Access база данни. Низът за свързване ("Низ за свързване") ще се генерира автоматично.
След това трябва да посочите коя база данни, кой екземпляр на импортиране на MS SQL. За да направите това, след като щракнете върху бутона "Напред", изберете в падащия списък "Destination" или "Microsoft SQL Server Native Client" (както е показано на екранната снимка по-долу) или "Microsoft OLE DB Provider for SQL Server", посочете желаното потребителско име и парола за база данни за връзки.
След това трябва да изберете таблиците за импортиране. Както беше отбелязано по-горе, когато използвате ODBC, импортирането на заявки за Access не е налично. Следователно, за разлика от предишната екранна снимка със списък с обекти за импортиране, този списък ще съдържа само таблици.
С помощта на квадратчета за отметка можете да изберете както всички таблици наведнъж (което е направено в този пример), така и някои от тях поотделно.
След това ще се покаже прозорец с окончателните настройки за процеса на импортиране. Нека оставим всички стойности по подразбиране.
След като щракнете върху бутона "Край", процесът на импортиране ще приключи. Ако всичко е направено правилно и импортирането е успешно, прозорецът с информация за импортирането няма да съдържа грешки (вижте екранната снимка по-долу).
За да завършите съветника, просто щракнете върху бутона "Затвори".
Резултатът може да се види от SQL Server Management Studio.
Този метод е универсален за експортиране на данни от Access към всяка друга СУБД. Достатъчно е да поддържа работа с ODBC.
Пример за такъв износ вече беше обсъден по-рано в статията ""
ЗаГ-ЦАSQL даде възможност за мигриране на база данни отНе е необходим достъп, тъй като се експортират само таблици с данни, а заявките се експортират само като обикновени таблици.
Тази преносимост обаче все още е налице (версия 2014 не беше изключение). Така че нека да разгледаме и това.
Първо, нека създадем източник на данни за работа с MS SQL (нека бъде персонализиран DSN).
Посочете драйвера за източника.
След това ще започне процесът на неговото създаване и конфигуриране.
Задайте името на източника на данни и посочете името на екземпляра на MS SQL, към който искате да се свържете.
След това посочваме базата данни, към която планираме да прехвърлим таблицата или заявката. Прехвърляне чрезODBC може да се изпълнява само на вече съществуваща база данни. Следователно, ако данните трябва да бъдат прехвърлени в нова база данни, тя първо трябва да бъде създадена.
След натискане на бутона "Край" ще се покаже прозорец с обобщена информация за създавания източник на данни.
За да бъде окончателно създаден източникът на данни, просто щракнете върху бутона „OK“. Но е по-добре първо да проверите ефективността му, като щракнете върху бутона „Проверка на източника на данни“.
Ако всичко е направено правилно, ще се покаже съобщение за успешна проверка.
Сега, когато има източник на данни, можем да продължим директно към процеса на миграция. Като пример ще експортираме една единствена заявка „Заявка за контакти“ от базата данни.
За да направите това, изберете го с мишката и кликнете върху бутона "Разширени" в областта "Експортиране" на раздела "Външни данни". В падащото меню изберете „ODBC база данни“.
В този случай оригиналната стойност остава.
След като щракнете върху бутона "Ok", трябва да изберете създадения източник на данни.
След това въведете потребителското име и паролата, за да се свържете със сървъра.
След натискане на бутона "Ok" експортът ще бъде изпълнен.
Въпреки това, както бе споменато по-горе, резултатът от експортирането в случай на заявка не е правилен.
Вместо изгледа "Заявка за контакти", в базата данни на MS SQL беше създадена таблица със същото име.
Освен това, дори ако експортирате само таблици, има много допълнителни стъпки, които трябва да бъдат предприети след експортирането (пресъздаване на връзки и т.н.). Следователно описаният метод за прехвърляне на бази данни от Access към MS SQL практически вече не се използва.
Описание на образователния проект "Магазин"Схема за свързване на таблица
Описание на таблиците
m_category - продуктови категории
m_income - получаване на стоки
m_outcome - потребление на стоки
m_product - директория, описание на продукта
m_supplier - директория; информация за доставчика
m_unit - директория; единици
За да тествате на практика примерите, дадени в този урок, трябва да разполагате със следния софтуер:
Microsoft Access 2003 или по-нова версия.
За да превключите в режим на редактиране на полето на таблицата, изберете режим на проектиране в горния панел:
За да покажете резултата от SQL заявка, щракнете два пъти върху името на заявката в левия панел:
За да превключите към режима за редактиране на SQL заявка, изберете режима SQL в горния панел:
SQL заявка Q001.Примерна SQL заявка за получаване само на задължителните полета в желаната последователност:
ИЗБЕРЕТЕ dt, product_id, сума
SQL заявка Q002.В този пример на SQL заявка знакът звездичка (*) се използва за показване на всички колони на таблицата m_product, с други думи, за получаване на всички полета на релацията m_product:
ИЗБЕРЕТЕ *
ОТ m_product;
ЗаявкаSQLQ003.Изявлението DISTINCT се използва за премахване на дублиращи се записи и получаване на много уникални записи:
ИЗБЕРЕТЕ ОТДЕЛЕН product_id
SQL заявка Q004.Операторът ORDER BY се използва за сортиране (подреждане) на записи по стойностите на определено поле. Името на полето следва клаузата ORDER BY:
ИЗБЕРЕТЕ *
ОТ m_доход
SQL заявка Q005.Операторът ASC се използва в допълнение към оператора ORDER BY и се използва за дефиниране на сортиране във възходящ ред. Операторът DESC се използва в допълнение към оператора ORDER BY и се използва за дефиниране на сортиране в низходящ ред. В случай, че не са посочени нито ASC, нито DESC, се приема наличието на ASC (по подразбиране):
ИЗБЕРЕТЕ *
ОТ m_доход
SQL заявка Q006.За да изберете необходимите записи от таблицата, се използват различни логически изрази, които изразяват условието за избор. Булевият израз идва след клаузата WHERE. Пример за получаване от таблицата m_income на всички записи, за които стойността на сумата е по-голяма от 200:
ИЗБЕРЕТЕ *
ОТ m_доход
SQL заявка Q007.За изразяване на сложни условия се използват логическите операции И (конюнкция), ИЛИ (дизюнкция) и НЕ (логическо отрицание). Пример за получаване от таблицата m_outcome на всички записи, за които стойността на сумата е 20 и стойността на цената е по-голяма или равна на 10:
цена
SQL заявка Q008.За да обедините данни от две или повече таблици, използвайте инструкциите INNER JOIN, LEFT JOIN, RIGHT JOIN. Следващият пример извлича полетата dt, product_id, сума, цена от таблицата m_income и полето за заглавие от таблицата m_product. Записът на таблицата m_income е свързан със записа на таблицата m_product, когато стойността на m_income.product_id е равна на стойността на m_product.id:
SQL заявка Q009.Има две неща, на които трябва да обърнете внимание в тази SQL заявка: 1) текстът за търсене е ограден в единични кавички ("); 2) датата е във формат #месец/ден/година#, който е правилен за MS Достъп В други системи форматът на датата може да е различен. Пример за показване на информация за получаването на мляко на 12 юни 2011 г. Обърнете внимание на формата на датата #6/12/2011#:
ИЗБЕРЕТЕ dt, product_id, заглавие, сума, цена
SQL заявка Q010.Инструкцията BETWEEN се използва за проверка дали диапазон от стойности принадлежи към нея. Примерна SQL заявка, показваща информация за стоки, получени между 1 юни и 30 юни 2011 г.:
ИЗБЕРЕТЕ *
ОТ m_income INNER JOIN m_product
Заявка Q011.Показва информация за продуктите от таблицата m_product, чиито кодове също са в таблицата m_income:
ИЗБЕРЕТЕ *
ОТ m_product
Заявка Q012.Показва се списък с продукти от таблицата m_product, чиито кодове не са в таблицата m_outcome:
ИЗБЕРЕТЕ *
ОТ m_product
Заявка Q013.Тази SQL заявка връща уникален списък с кодове и имена на продукти, които имат кодове в таблицата m_income, но не и в таблицата m_outcome:
ИЗБЕРЕТЕ ОТДЕЛЕН product_id, заглавие
Заявка Q014.От таблицата m_category се показва уникален списък с категории, чиито имена започват с буквата M:
ИЗБЕРЕТЕ ОТДЕЛНО заглавие
Заявка Q015.Пример за извършване на аритметични операции върху полета в заявка и преименуване на полета в заявка (псевдоним). Този пример изчислява разход = количество*цена и печалба за всеки запис на консумация на артикул, като се приема, че печалбата е 7 процента от продажбите:
Заявка Q016.Чрез анализиране и опростяване на аритметичните операции можете да увеличите скоростта на изпълнение на заявката:
ИЗБЕРЕТЕ dt, product_id, сума, цена, сума*цена КАТО сума_на резултата,
Заявка Q017.С помощта на оператора INNER JOIN можете да комбинирате данни от множество таблици. В следващия пример, в зависимост от стойността на ctgry_id, всеки запис в таблицата m_income се съпоставя с името на категорията от таблицата m_category, към която принадлежи продуктът:
ИЗБЕРЕТЕ c.title, b.title, dt, сума, цена, сума*цена КАТО сума_доход
Заявка Q018.Функции като SUM - сума, COUNT - количество, AVG - средно аритметично, MAX - максимална стойност, MIN - минимална стойност се наричат агрегатни функции. Те приемат множество стойности и връщат една стойност, когато се обработват. Пример за изчисляване на сумата от произведението на полетата сума и цена с използване агрегатна функцияСУМА:
ИЗБЕРЕТЕ СУМА(сума*цена) КАТО Обща_сума
Заявка Q019.Пример за използване на множество агрегатни функции:
ИЗБЕРЕТЕ Sum(amount) AS Amount_Sum, AVG(amount) AS Amount_AVG,
Заявка Q020.В този пример се изчислява сборът на всички елементи с код 1, получени през юни 2011 г.:
ИЗБЕРЕТЕ Сума(сума*цена) КАТО сума_доход
Заявка Q021.Следната SQL заявка изчислява за колко са продадени стоките с код 4 или 6:
ИЗБЕРЕТЕ Сума(сума*цена) като сума_изход
Заявка Q022.Изчислява се за какво количество са продадени на 12.06.2011 г. стоки с код 4 или 6:
ИЗБЕРЕТЕ Сума(сума*цена) КАТО резултат_сума
Заявка Q023.Задачата е следната. Изчислете общата сума, за която са кредитирани стоките от категорията "Печени продукти".
За да разрешите този проблем, трябва да работите с три таблици: m_income, m_product и m_category, защото:
За да разрешим този проблем, използваме следния алгоритъм:
Заявка Q024.Проблемът с изчисляването на общата сума на кредитираните стоки от категорията "Печени продукти" ще бъде решен чрез следния алгоритъм:
- всеки запис от таблицата m_income, в зависимост от стойността на неговия product_id, от таблицата m_category, съответства на името на категорията;
- изберете записи, за които категорията е равна на "Печени продукти";
- изчислете размера на приходите = количество * цена.
FROM (m_product AS a INNER JOIN m_income AS b ON a.id=b.product_id)
WHERE c.title="Печени изделия";
!}
Заявка Q025.Този пример изчислява колко артикула са били консумирани:
SELECT COUNT(product_id) AS product_cnt
Заявка Q026.Клаузата GROUP BY се използва за групиране на записи. Обикновено записите се групират по стойността на едно или повече полета и към всяка група се прилага обобщена операция. Например, следната заявка генерира отчет за продажбата на стоки. Тоест генерира се таблица, която ще съдържа имената на стоките и сумата, за която се продават:
ИЗБЕРЕТЕ заглавие, СУМА(сума*цена) КАТО резултат_сума
Заявка Q027.Отчет за продажбите по категории. Тоест, генерира се таблица, която ще съдържа имената на категориите продукти, общата сума, за която се продават стоките от тези категории, и средната сума на продажбите. Функцията ROUND се използва за закръгляване на средната стойност до най-близката стотна (втория десетичен знак след десетичния разделител):
ИЗБЕРЕТЕ c.title, SUM(сума*цена) AS сума_изход,
Заявка Q028.За всеки продукт се изчислява общият и среден брой на неговите постъпления и се извежда информация за стоките, чийто общ брой на постъпленията е минимум 500:
ИЗБЕРЕТЕ product_id, SUM(сума) КАТО сума_сума,
Заявка Q029.Тази заявка изчислява за всеки артикул сумата и средната стойност на неговите приходи, направени през второто тримесечие на 2011 г. Ако общата сума на получаване на стоки е не по-малка от 1000, тогава се показва информация за този продукт:
ИЗБЕРЕТЕ заглавие, СУМА(сума*цена) КАТО сума_доход
Заявка Q030.В някои случаи е необходимо да се съпостави всеки запис от дадена таблица с всеки запис от друга таблица; което се нарича декартово произведение. Таблицата, получена в резултат на такова свързване, се нарича таблица на Декарт. Например, ако някоя таблица A има 100 записа, а таблица B има 15 записа, тогава тяхната декартова таблица ще се състои от 100*15=150 записа. Следната заявка свързва всеки запис в таблицата m_income с всеки запис в таблицата m_outcome:
ОТ м_доход, м_изход;
Заявка Q031.Пример за групиране на записи по две полета. Следната SQL заявка изчислява за всеки доставчик сумата и количеството на стоките, получени от него:
Заявка Q032.Пример за групиране на записи по две полета. Следната заявка изчислява за всеки доставчик сумата и количеството на техните продукти, продадени от нас:
ИЗБЕРЕТЕ доставчик_id, product_id, SUM(сума) КАТО сума_сума,
Заявка Q033.В този пример двете заявки по-горе (q031 и q032) се използват като подзаявки. Резултатите от тези заявки се обединяват в един отчет с помощта на метода LEFT JOIN. Следната заявка показва отчет за броя и количеството получени и продадени продукти за всеки доставчик. Трябва да обърнете внимание на факта, че ако някакъв продукт вече е пристигнал, но все още не е продаден, тогава клетката outcome_sum за този запис ще бъде празна. че тази заявка е само пример за използване по отношение на сложни заявкикато подзаявка. Ефективността на тази SQL заявка с голямо количество данни е под въпрос:
ИЗБЕРЕТЕ *
ОТ
Заявка Q034.В този пример двете заявки по-горе (q031 и q032) се използват като подзаявки. Резултатите от тези заявки се комбинират в един отчет с помощта на метода RIGTH JOIN. Следната заявка отпечатва отчет за сумата на плащанията на всеки клиент за платежните системи, които е използвал, и сумата на направените от тях инвестиции. Следната заявка показва отчет за броя и количеството получени и продадени продукти за всеки доставчик. Обърнете внимание, че ако даден продукт вече е продаден, но все още не е получен, клетката за сума_доход за този запис ще бъде празна. Наличието на такива празни клетки е индикатор за грешка в отчитането на продажбите, тъй като преди продажбата е необходимо първо да пристигне съответният продукт:
ИЗБЕРЕТЕ *
ОТ
Заявка Q035.Извежда се справка за размера на приходите и разходите по продукти. За да направите това, се създава списък с продукти според таблиците m_income и m_outcome, след което за всеки продукт от този списък се изчислява сумата от неговите приходи според таблицата m_income и сумата от неговите разходи според таблицата m_outcome:
ИЗБЕРЕТЕ product_id, SUM(в_сума) КАТО сума_на_прихода,
Заявка Q036.Функцията EXISTS връща TRUE, ако предаваният към нея набор съдържа елементи. Функцията EXISTS връща FALSE, ако наборът, който й е предаден, е празен, тоест няма елементи. Следната заявка връща продуктовите кодове, които се съдържат както в таблицата m_income, така и в таблицата m_outcome:
ИЗБЕРЕТЕ ОТДЕЛЕН product_id
Заявка Q037.Показани са продуктови кодове, които се съдържат както в таблицата m_income, така и в таблицата m_outcome:
ИЗБЕРЕТЕ ОТДЕЛЕН product_id
Заявка Q038.Показани са продуктови кодове, които се съдържат както в таблицата m_income, но не се съдържат в таблицата m_outcome:
ИЗБЕРЕТЕ ОТДЕЛЕН product_id
Заявка Q039.Показва се списък с продукти с най-висока сума на продажбите. Алгоритъмът е следният. За всеки продукт се изчислява сумата от неговите продажби. След това се определя максимумът от тези суми. След това за всеки продукт отново се изчислява сумата на неговите продажби и се показват кодът и сумата на продажбите на стоки, чиято сума на продажбите е равна на максимума:
ИЗБЕРЕТЕ product_id, SUM(сума*цена) КАТО сума_сума
Заявка Q040.Запазената дума IIF (условен оператор) се използва за оценка булев изрази изпълнява едно или друго действие в зависимост от резултата (ВЯРНО или НЕВЯРНО). В следния пример доставката на артикул се счита за "малка", ако количеството е по-малко от 500. В противен случай, т.е. количеството на разписката е по-голямо или равно на 500, доставката се счита за "голяма":
ИЗБЕРЕТЕ dt, product_id, сума,
SQL заявка Q041.В случай, че командата IIF се използва повече от веднъж, е по-удобно да се замени с командата SWITCH. Операторът SWITCH (оператор с множествен избор) се използва за оценка на логически израз и извършване на действие в зависимост от резултата. В следващия пример доставената партида се счита за „малка“, ако количеството стоки в партидата е по-малко от 500. В противен случай, т.е. ако количеството стоки е по-голямо или равно на 500, партидата се счита за „голяма ":
ИЗБЕРЕТЕ dt, product_id, сума,
Заявка Q042.В следващата заявка, ако количеството стоки във входящата партида е по-малко от 300, тогава партидата се счита за "малка". В противен случай, т.е. ако условието сума ИЗБЕРЕТЕ dt, product_id, сума,
IIF(сума IIF(сума ОТ m_доход;
SQL заявка Q043.В следващата заявка, ако количеството стоки във входящата партида е по-малко от 300, тогава партидата се счита за "малка". В противен случай, т.е. ако условието сума ИЗБЕРЕТЕ dt, product_id, сума,
SWITCH(сума сума сума>=1000,"голям") AS знак
ОТ m_доход;
SQL заявка Q044.В следната заявка продажбите са разделени на три групи: малки (до 150), средни (от 150 до 300), големи (300 и повече). След това за всяка група се изчислява общата сума:
ИЗБЕРЕТЕ категория, SUM(резултат_сума) AS Ctgry_Total
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
SQL заявка Q046.Функцията DateDiff е предназначена да изчислява разликата между две дати в различни единици (дни, месеци или години). Следната заявка изчислява разликата между датата в полето dt и текущата дата в дни, месеци и години:
ИЗБЕРЕТЕ dt, DateDiff("d",dt,Date()) КАТО последен_ден,
SQL заявка Q047.Броят на дните се изчислява от деня на получаване на стоките (таблица m_income) до текуща датас помощта на функцията DateDiff и датата на изтичане се сравнява (таблица m_product):
SQL заявка Q048.Изчислява се броят на дните от датата на получаване на стоките до текущата дата, след което се проверява дали този брой надвишава срока на годност:
ИЗБЕРЕТЕ a.id, product_id, dt, lifedays,
SQL заявка Q049.Изчислява се броя на месеците от датата на получаване на стоките до текущата дата. Колоната month_last1 изчислява абсолютния брой месеци, колоната month_last2 изчислява броя на пълните месеци:
ИЗБЕРЕТЕ dt, DateDiff("m",dt,Date()) КАТО month_last1,
SQL заявка Q050.Показана е тримесечна справка за количеството и сумата на получените стоки за 2011 г.:
ИЗБЕРЕТЕ kvartal, SUM(резултат_сума) AS Общо
Заявка Q051.Следната заявка помага да разберете дали потребителите са успели да въведат в системата информация за потреблението на стоки за сума, по-голяма от сумата на получаване на стоките:
ИЗБЕРЕТЕ product_id, SUM(in_sum) КАТО доход_sum, SUM(out_sum) AS outcome_sum
ИЗБЕРЕТЕ COUNT(*) като N, b.id, b.product_id, b.amount, b.price
Заявка Q053.Показани са първите пет сред продуктите по обем на продажбите. Изходът на първите пет записа се извършва с помощта на инструкцията TOP:
ИЗБЕРЕТЕ ТОП 5, product_id, sum(amount*price) AS summa
Заявка Q054.Показани са първите пет сред продуктите по обем на продажбите и редовете са номерирани като резултат:
SELECT COUNT(*) AS N, b.product_id, b.summa
Заявка Q055.Следната SQL заявка показва използването на математическите функции COS, SIN, TAN, SQRT, ^ и ABS в MS Access SQL:
SELECT (изберете count(*) от m_income) като N, 3.1415926 като pi, k,
АКТУАЛИЗАЦИЯ m_income SET цена = цена*1.1
Заявка U002.Следната SQL заявка за актуализиране увеличава количеството на всички продукти в таблицата m_income с 22 единици, чиито имена започват с думата "Butter":
АКТУАЛИЗАЦИЯ m_income SET сума = сума+22
Заявка U003.Следната SQL заявка за промяна в таблицата m_outcome намалява цените на всички стоки, произведени от OOO Sladkoe с 2 процента:
АКТУАЛИЗАЦИЯ m_outcome SET цена = цена*0,98