![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Процесори :: Дънни платки
:: Видео :: Мултимедия
:: Носители :: Периферия Комуникации :: Софтуер :: Технологии :: Links & Downloads :: Форум |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Въведение в SQL | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| SQL (Structured Query Language - структурен език за заявки) е основната технология за обработка на бази данни. Практически всяко средство за разработка на бази данни поддържа SQL. Delphi и Visual Studio също предоставят компоненти за обработка на бази данни чрез SQL. На практика всяка една база данни се контролира чрез SQL. Той определя какво да бъде изведено от базата, а не как да се осъществи това, което го прави платформено-независим. Макар различните реализации да имат определени различия, в основата си всички реализации на SQL са еднакви, така че чрез него могат еднакво добре да се обработват бази данни в Microsoft Access и в Оracle; както и в още много други приложения. Той прави възможно и създаването на собствени приложения за работа с бази данни, създадени чрез някой от гореспоменаите продукти. Като най-разпространено средсвто за обработка на бази данни, той е задължителен за всеки, който иска сериозно да се занимава с бази данни, независимо дали ще ползва готови продукти за обработката им или ще разработва приложения за работа с бази данни - Някои основни неща за SQL Всяка база данни се състои от таблици, всяка от които има име. Всяка таблица се състои от отделни колони; всяка колона има име. В основата на обработката на бази данни е извеждането на определена информация от определени колони на определени таблици. Нека разгледаме една таблица:Books
Това е една малка таблица - в практиката може да се сблъскате с таблици със десетки колони и хиляди редове. Но за целите на това ръководство тя е подходяща. И така - в основата на обработката на базите данни е заявката. Тя може да е за извеждане на информация, за промяна на информацията или друга. Всяка команда в SQL е заявка. А основната заявка е за избор на информация за обработка. Основната и най-често срещана команда в SQL е SELECT. Тя определя условието, по което се определя каква информация да бъде изведена. Нашата таблица се казва books и има 4 колони - title (заглавие), format, language (език) и size (размер). Можем да изведем цялата таблица, като използваме следната команда: SELECT * FROM books Но много по-често ни трябват определени колони. Ако не ни интересува нито формата, нито размера на книгата? Тогава използваме командата SELECT title, language FROM books Резултатът е следната таблица:
Това ни показва базовия синтаксис на командата SELECT. Тя има много повече възможности, но най-важното и задължително за да бъде използване, е: SELECT rows FROM table Какво се получава, ако трябва да изведем всички книги, които са на английски език? SELECT ни дава възможност да извеждаме само редове, отговарящи на определено условие. В случая условието е в колоната language на съответния ред да е вписано english. Можем да го направим със следната команда: SELECT * FROM books WHERE language = 'english' - Използване на WHERE WHERE предоставя множество възможности. Освен равенството, той ви позволява да използвате всички оператори за сравнение: != или <> за различно от WHERE успешно сравнява думи, като използва ASCII кода на символите. Трябва да имате предвид обаче, че макар и самите команди в SQL да не са чуствителни към главни/редовни букви (тук са дадени с главни но това не е задължително), имената на колоните, таблиците, както и стойностите в техните полета са. Т.е. командата SELECT * FROM books WHERE language = 'English' няма да изведе нищо Едно от големите предимства на командата WHERE е възможността на използването на логически оператори AND и OR за определяне на повече от едно условие. Нека приемем, че трябва да изведете заглавието на всички книги, които са на английски и са в HTML формат: SELECT title FROM books WHERE language = 'english' AND format = 'HTML' Резултатът е: - Използване на аритметика и LIKE, преименуване на колони За целите на по-нататъчното ни обучение ще използваме една по-голяма таблица: inventory
+ събиране Първото и най-очевидно място за използване на аритметика е в клаузата WHERE. Нека предположим че трябва да изведем всички книги, заедно с формата им, за които архива е не-повече от 20% от оригиналния размер. Как ще изглежда заявката? SELECT title, format, size, archived Резултатът е следната таблица:
Но защо да не покажем в таблицата, какъв процент е архива от оригиналния размер. Как? Тук идва второто приложение на аритметиката - в клаузата SELECT. Там можем да създаваме нови колони, на базата на вече съществуващите. Това са виртуални колони, които не се запазват в базата данни, но могат да ни бъдат полезни. Ето как се използва аритметика в клаузата SELECT: SELECT title, format, archived/size*100 Резултатът е следната таблица:
Тук възниква въпроса не може ли да се преименува колоната. И тук е мястото, в което трябва да споменем за няколко от основните свойства на командата SELECT. На първо място, колоните се извеждат в този ред, в който са определени в клаузата SELECT, а не в реда, вкойто са дефинирани в таблицата. Така бихме могли да изведем първо размера, а после формата. Името на всяка колона може да бъде сменено за конкретната таблица, като просто след колоната се напише новото име (в някои реализации на SQL се слага знак = между двете. Така можем да направим нашата таблица по-разбираема, просто като напишем SELECT title, format, archived/size*100 ratio
Ще разгледаме още един елемент от клаузата WHERE. Какво ще стане, ако трябва да изведем всички книги, отнасящи се до Visual Studio? Бихме могли да напишем: SELECT * FROM inventory В много случаи обаче подобен подход е нерационален. Вместо това напомощтани идва операторът LIKE. Чрез него могат да бъдат избрани всички елементи, съдържащи даден елемент. В оператора LIKE могат да се използват символите _, който обозначава един произволен символ, и %, обозначаващ произволно количество произволни символи. Така нашата заявка ще бъде: SELECT * FROM inventory Това ще изведе всеки запис, за който полето subject започва с Visual. Ако искаме да изведем книгите, отнасящи се за Visual C++ или Visual J++ можем да напишем: SELECT * FROM inventory - Основни функцииЗа целите на по-нататъчните ни упражнения ще използваме следните две таблици: programbooks
webbooks
= UNION и UNION ALL UNION връща резултата от две заявки
без повтарящите се полета. UNION ALL
връща резултата от двете заявки, включително и повтарящите се полета SELECT title FROM programbooks Резултатът е следния: = INTERSECT INTERSECT връща само записите,
намерени и при двете заявки. SELECT * FROM programbooks Резултатът е:
= MINUS MINUS връща записите от първата
заявка, които не са намерени при втората SELECT * FROM webbooks Резултатът е:
= SUM SUM Връща сумата от всички стойности
в колоната. Тя може да се прилага само върху колони, съдържащи числа.
SELECT SUM(size) FROM programbooks Резултатът е: = AVG Тази функция връща средно аритметичното от стойностите в колоната. Може
да се използва само с колони, съдържащи числови стойности SELECT AVG(size) FROM programbooks Резултатът е = MAX За разлика от предишните функции, тази може да работи и със символни
низове. Тя връща най-големия елемент от колоната. Когато става въпрос
за символен низ - връща последния в азбучен ред SELECT MAX(size) FROM programbooks Резултатът е: = MIN Тази функция връща най-малкия елемент от колоната. Както и предишната,
тя може да работи и със символни низове SELECT MIN(size) FROM programbooks Резултатът е: = COUNT Тази функция връща броя на записите, отговарящи на клаузата WHERE. Да предположим, че искате да разберете колко са книгите за Visual C++ SELECT COUNT(*) FROM programbooks Резултатът е: = ABS Тази функция връща абсолютната стойност на дадените числа = CEIL и FLOOR CEIL връща най-малкото цяло число, по-голямо или равно на подаденото. FLOOR връща най-голямото цяло число, по-малко или равно на подаденото = COS, SIN и TAN Тези функции връщат съответно косинус, синус или тангес от подадените им стойности. Имайте предвид, че те работят с радиани = LN и LOG LN връща натурален логаритъм на подадените й стойности. LOG приема два аргумента, като първия е базата. Функцията връща логаритъм от втория аргумент при база първия = POWER POWER приема два аргумента и връща първия на степен втория = SIGN Тази функция връща -1, ако аргументът е по-малък от 0; 0, ако аргументът е равен на нула; или 1, ако аргуметът е по-голям от 0 = SQRT Тази функция връща корен квадратен от подадените й стойности - Редактиране на данните Чрез SQL можете да променяте информацията в база данни, използвайки три основни процедури: добавяне, изтривне и промяна. За целите на по-нататъчните ни разглеждания, ще използваме следната таблица: inventory
- Добавяне на информация Добавянето на информация в базата данни е изключително лесно - за целта служи командата INSERT. Можете да добавите нов ред към дадена таблица като използвате: INSERT INTO tablename Това ви позволява да добавите един ред към дадена таблица. Броя на стойностите трябва да отговаря на броя на колоните, като данните се попълват в реда, в който сте определили колоните, а не в реда, в който са колоните в оригиналната таблица. Т.е. можете да попълните реда отзад-напред като просто определите имената на колоните в обратен ред. Ако не определите колони, данните се попълват подред в колоните от оригиналната таблица, започвайки от първата и продължавайки до последната. Това е изключително лесен и удобен начин да прибавим информация към базата данни. Но какво става ако трябва да добавим десетки или дори стотици нови редове? Напрактика, командата INSERT има две форми - INSERT ... VALUES, която разгелдахме, и INSERT ... SELECT. При втория вид, към таблицата се прибавя информацията, върната от стандартна заявка чрез командата SELECT. Отново, синтаксисът е: INSERT INTO tablename - Изтриване Изтриването на елемент е също толкова лесно, колкото и прибавянето му. Нещо повече - можете да изтриете един или множество елементи по един и същи начин. Използването на клаузата WHERE при триене е изключително важно за определяне на това, което да бъде изтрито. В противен случай ще изтриете цялата информация от таблицата, но таблицата ще продължи да съществува. Командата, използвана за изтриване на данни е DELETE а нейния синтаксис: DELETE FROM tablename Тази команда изтрива всички редове от посочената таблица, отговарящи на условието search_condition. Ако не използвате клаузата WHERE ще изтриете всички редове от таблицата. Нека разгледаме един пример-ще премахнем от нашата таблица книгите за Perl и Java, тъй като те се отнасят за web програмиранме и ще бъдат отделени от тази база данни. DELETE FROM inventory Сега нашата таблица изглежда така: inventory
Но да предположим, че сме конвертирали всички .doc файлове в PDF. Как да отразим тази промяна? Би било твърде нерационално да изтрием всички записи, съдържащи DOC за формат и да ги прибавим с нужната корекция. SQL предоставя за целта командата UPDATE, имаща следния синтаксис: UPDATE tablename Отново тук е важно използването на клаузата WHERE за определяне на това, кои записи да бъдат променени. С col1, col2 и т.н. се обозначават имената на колоните, които се променят, а с value1, value2 и т.н. - съответните стойности. За да променим формата в нашата таблица, ще използваме следната команда: UPDATE inventory Сега таблицата изглежда така: inventory
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Материалът е публикуван на: 03.11.2002
г. |
Автор: Максим
Крижановски |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Начало на материала :: Процесори :: Дънни платки
:: Видео :: Мултимедия
:: Носители Периферия :: Комуникации :: Софтуер :: Технологии :: Links & Downloads :: Форум |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||