Език за структуриране на заявки SQL.Оператор Select-структура и интерп
12.Език за структуриране на заявки SQL.Оператор Select-структура и интерпретация.
Заявките в SQL се дефинират спомощта на оператор Select.С негова помощ е възможно задаването на действия,които се реализиратс помощта на всички операции от релационната алгебра.Също така е възможно и дефинирането на допълнителни заявки,които изискват използването на т.нар. обобщаващи функции.Въпреки,че за моделиране на заявките се използва един единствен оператор,това не означава ,че моделирането на заявките е прост процес.Една и съща заявка може да се опише по много и различни начини,което се отразява на жремето за тяхното изпълнение,което е твърде съществено ,особено за големи БД.Ето защо създаването на заявки изисква определена теоретична подготовка,както и практика.
Синтаксисът на оператора Select има следния вид:
Select(<Списък от имена на полета>|*)
FROM<Списък от имена на таблици>
Ключовата дума Allозначава,че ще се изведе информация от всички записи,които удовлетворяват заявката,ключовата дума Distinct означава,че е необходимо да се изведат само различните записи в получения резултат.Символът * се използва за кратко означаване на всички полета на входните таблици.
В раздела FROM се указват имената на входните таблици,т.е. таблиците,които включват участващите в заявката атрибути,както и тези,които се използват за свързване на други таблици,когато това е необходимо.
Разделът WHERE служи за задаване на критерий по избор,чрез който ще се селектират само записите,удовлетворяващи определени условия.За дефиниране на логическите условия се използват следните предикати:
-сравнения,които се означават чрез знаците =,>,<,>=,<= и имат традиционния смисъл;
-Between A and B-използва се за означаване на стойности,които са в интервала между А и В.За указването на стойностите извън даден интервал се използва противополойния предикат Not Between A and B;
-IN-използва се за означаване на принадлежност към множество.Съществува и противоположен предикат Not IN .Тези предикати най-често се използват за принадлежност към подзаявка;
Like -използва се за задаване на сравнение по образец. Not Like има противоположен смисъл;
-Is Null-използва се за сравнение с неопределена стойност.Неопределената стойност според терминологията на релационната БД е тазаи,която не е известна в определен момент;
-Exist-използва се за указване на съществуване или несъществуване (Not Exist).Прилагат се най-често при работа с подзаявки.
Важно е да се отбележи,че само ключовите думи Select и FROM са задължителни.Останалите раздели се използват при необходимост.
SQL предлага на потребителя вградени функции,с помощта на които се изчисляват обобщаващи групови стойности.Използването на тези функции предполага предварително изпълнение на операция групиране(GROUP BY),която разделя множеството от записите на обработваната таблица на групи с еднакви стойностина атрибутите,по които се извършва групирането.Тези вградени функции са:
Count-генерира броя на редовете или стойностите в дадена колона,различни от Null ,които са избрани от конкретната заявка;
SUM-генерира аритметичната сума от всички избрани стойности от дадената колона;
AVG-генерира средно аритметичното на всички избрани стойности от дадената колона;
MIN-генерира минималната стойност от всички избрани стойности за даденото поле;
MAX-генерира максималната от всички избрани стойности за даденото поле.
Изходните данни могат да бъдат подредени посредством ORDER BY.
Освен към една таблица заявките могат да бъдат отправени към произволен брой таблици.Този вид операции се нарича съединение(JOIN).Съединението изисква таблиците да се изброяват,разделени със запетаи,след клаузата FROM на една заявка.Съединенията биват вътрешна(INNER JOIN) и външни(OUTER JOIN)От своя страна външните се делят на леви(LEFT OUTER JOIN) и десни(RIGHT OUTER JOIN)
Указването на LEFT JOIN(RIGHT JOIN)ще предизвика извличане на редовете от обединените таблици,но като задължително се генерира един запис за всеки ред от лявата(дясната) таблица,даже ако няма съответстващ ред от лявата(дясната).Когато няма съответствие ,в полетата от дясната таблица се записват стойности Null ,съответстващите редове се определят в съответствие с условието указано в клаузата ON или USING след които следва израз във формат използван в WHERE.
Подзаявките са заявки,които не са краино изходни данни,а подлежат на последваща обработка в рамките на сущата конструкция.Подзаявките могат да се използват в предикатите на конструкциите UPDATE и DELETE ,както и да се използват в клаузата FROM на заявките.Подзаявките могат да се използват и в рамките на други подзаявки.Съществуват три вида подзавки:
-подзаявкикоито могат да генерират произволен брой редове-таблични;
-генериращи не повече от един брой редове,но съдържащи произволен брой колони в него-редови;
-генериращи не повече от една стойност-скаларни.
Освен чрез използването на подзаявки,заявките могат да се комбинират ,като се обединят изходните им данни.Това се осъществява чрез клаузата UNION.Синтаксисът UNION е:
Query A UNION QUERY B
UNION връща само данните,които са общи задвата източника.
Още обобщения за Език за структуриране на заявки SQL.Оператор Select-структура и интерп