Основи на SQL в Kylix

В тази глава ще разгледаме командите на езика за структурирани заявки. Ще научите какво е заявка и как да работите с нея.

Въведение в езика SQLЕзикът SQL съществува в няколко стандарта. Най-поддържаните и широко използвани стандарти са SQL-89 и SQL-92. Последният стандарт се нарича още стандарт ANSI. Поради наличието на много стандарти на езика, има много негови диалекти. Ще покрием само основните SQL команди за прости операции с таблици на бази данни. SQL няма много типове команди, които са общи за повечето езици за програмиране. Така че не съдържа цикъл, преход и т.н. SQL заявката е команда на езика SQL. SQL по своята същност е ориентиран към достъпа до данни и обикновено се включва в различни инструменти за разработка. Средата Kylix не остана настрана. Освен това всички компоненти на базата данни поддържат езика SQL. Всички SQL заявки могат условно да бъдат разделени на два типа:

статична SQL заявка - включва се в кода на приложението по време на неговото разработване и не се променя по време на изпълнение на приложението. Единственият начин да промените нещо в заявка от този тип е да включите параметри в SQL заявката и след това да ги промените по време на приложението;

динамична SQL заявка - създава се и се модифицира по време на изпълнение на приложението. Тези заявки са най-гъвкави и могат да отговорят на конкретни потребителски действия. Всички оператори и команди на езика SQL могат да бъдат разделени на три групи. Нека разгледаме тези групи, както и операторите, включени във всяка от групите. Оператори за дефиниране на данни - предназначени за създаване, изтриване и промяна на структурата на данните. Основните са изброени в табл. 17.1.

Таблица17.1. Основни оператори за дефиниране на данни

ОператорОписание
СЪЗДАВАНЕ НА ТАБЛИЦАПроектиран за създаване на таблица с база данни
АЛТЕР ТАБЛИЦАИзтрива таблица
ПАДВАЩА МАСАПроменя структурата на таблицата
СЪЗДАВАНЕ НА ИНДЕКССъздава индекс
ИНДЕКС НА СПАДАНЕИзтрива индекс
СЪЗДАВАНЕ НА ИЗГЛЕДСъздава изглед
ИЗГЛЕД НА КАПКАИзтрива изглед

Изявления за управление на данни - предназначени за управление на привилегиите за достъп до данни. Основните оператори са представени в табл. 17.2.

Таблица 17.2. Основни изявления за манипулиране на данни

ОператорОписание
ГРАНДИОЗЕНПрисвоява привилегии на потребителите
ОТМЕНЯПремахва потребителските привилегии

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

Таблица 17.3. Основни оператори за манипулиране на данни

ОператорОписание
ИЗБЕРЕТЕПроектиран да избира записи според определен формат
АКТУАЛИЗИРАНЕПроектиран да променя и актуализира записи
ВМЪКНЕТЕВмъква нови записи в таблица
ИЗТРИЙПремахва записи от таблица

Използване, дадено в табл. Операторите 17.1-17.3 ще бъдат обсъдени по-късно в тази глава.

ЗабележкаОбърнете внимание на факта, че проверката на синтаксиса на заявката се извършва само по времевреме на работа на приложението. Компилаторът Kylix не обработва SQL заявки по време на разработката на приложение.

Резултатът от изпълнението на заявка обикновено е набор от данни, който се нарича набор от резултати. Остава да се отбележи, че малките букви на командите за SQL заявки не засягат тяхното изпълнение. За по-голяма яснота ще използваме главни букви за SQL изрази. Точката и запетая също не е задължителна в края на всяка SQL команда. Елементите от списък, като имена на таблици и полета, трябва да бъдат разделени със запетаи. Имената на таблици и полета са затворени в единични или двойни кавички, например „Число“, „Таблица 1“. Ако името не съдържа интервали или други специални знаци, то не може да бъде поставено в кавички.

Функции на езика SQLВ допълнение към операторите, езикът SQL има няколко функции, основните от които ще бъдат разгледани по-долу. Статистически функции - функции, предназначени за статистическа обработка на данни. Най-често използваните статистически функции са изброени в табл. 17.4.

Таблица 17.4. Основни статистически функции

ОписаниеAVG()Получаване на среднотоБРОЯ()Указва броя на стойноститеБРОЯ(*)Указва броя на ненулевите стойностиMAX()Максимална стойностMIN()Минимална стойностSUM()Сума от стойности

Стрингови функции - функции, предназначени за работа с низови части. Най-често използваните от тях са представени в табл. 17.5.

Таблица 17.5. Основни низови функции

Описаниеаз азСливане (конкатенация) на двелинииКАСТ ( КАТО )Прехвърля израз към типДОЛНА(И)

Преобразува символите на низа S в малки букви

ПОДНИЗ (S ОТ N1 до N2)Избира подниз от низа s, започващ със знака N1 и завършващ със знака N2ПОДКРИТ(И)Премахва излишните интервали от началото и края на низ sГОРНА(И)Преобразува символите на низа s в главни букви

Изявления за дефиниране на данниНека разгледаме по-отблизо изразите за дефиниране на данни. Инструкцията CREATE TABLE се използва за създаване на нова таблица на база данни и има следния формат:

Този оператор трябва да посочи поне едно име на поле и неговия тип данни. Ето пример за създаване на проста таблица:

CREATE TABLE MyTable (число INTEGER, име CHAR(20), фамилия CHAR(20));

Това ще създаде нова таблица MUTable в текущата директория на базата данни, състояща се от полетата Номер, Име и Фамилия. Първото поле е от целочислен тип (INTEGER), останалите полета са от символен тип и са ограничени до 20 знака. Ако тази заявка установи, че таблица със същото име вече съществува, ще бъде хвърлено изключение. Инструкцията DROP TABLE се използва за премахване на съществуваща таблица. Ако таблица с това име не съществува, ще бъде хвърлено изключение: DROP TABLE MUTABLE;

При извършване на тази операция всички файлове, свързани с таблицата MUTATE, ще бъдат изтрити. Инструкцията ALTER TABLE е предназначена да добавя или премахва полета от текущата таблица на базата данни. Докато това изявление е в сила, никакви други приложения не трябва да имат достъп до таблицата. Този оператор има следния формат:

ALTER TABLE ADD , DROP , … ADD , DROP ;

Операндът ADD добавя ново поле към таблицата, а операторът DROP премахва съществуващо поле от таблицата. Операндите могат да бъдат поставени произволно в оператора ALTER TABLE:

ALTER TABLE MuTable ADD Telefon INTEGER, ADD Address CHAR (50), DROP Number;

Когато този пример се изпълни, две полета ще бъдат добавени към таблицата MuTable: felefon и Address, съответно с целочислен и символен тип. Освен това полето Номер ще бъде премахнато.

Изявления за манипулиране на данниОсновният израз за манипулиране на данни е операторът SELECT. Този оператор се използва за избор на данни, които отговарят на сложни условия. Изявлението SELECT изглежда така:

ИЗБЕРЕТЕ [DISTINCT] или * FROM [WHERE ] [ORDER BY] [GROUP BY] [UNION]

Резултатът от изпълнението на този оператор ще бъде набор от записи, които отговарят на дадените условия. Параметърът DISTINCT определя дали дублиращи се записи ще бъдат включени в набора от резултати. Ако присъства в оператора SELECT, дублиращите се записи ще бъдат изключени от набора от данни. Ако списъкът с полета включва полета от няколко таблици, за да посочите дали дадено поле принадлежи към определена таблица, използвайте съставен оператор, който включва името на таблицата и, разделени с точка, името на полето:

Операндът WHERE указва критериите, на които трябва да отговарят записите в резултатния набор. Операндът GROUP BY ви позволява да групирате записи. Понякога може да е необходимо да се извърши някаква операция върху група записи. Операндът HAVING се използва във връзка с GROUP BY за избиране на записи в групите. Операндът ORDER BY съдържа списък от полета, които определят реда на сортиране на записите в получения набор от данни. отПо подразбиране сортирането се извършва във възходящ ред на стойностите. За да сортирате в низходящ ред на стойностите, поставете параметъра DESC след името на полето. Операндът UNION се използва за организиране на вложени изрази SELECT. Вложените оператори SELECT понякога се наричат ​​подзаявки. Ето примери за избиране на записи чрез оператора SELECT.

Пример 17.1. Изберете всички полета в таблицаИЗБЕРЕТЕ * ОТ MyTable

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

Пример 17.2. Избор на данни от три таблични полетаSELECY Номер, Фамилия, Телефон ОТ MyTable

Пример 17-2 ще избере всички записи от полетата Номер, Фамилия и Телефон на MyTable.

Пример 17.3. Изберете уникални стойностиИЗБЕРЕТЕ ОТДЕЛНО Фамилия ОТ MyTable

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

Пример 17.4. Изберете данни от две таблициИЗБЕРЕТЕ * ОТ

Избира всички данни от таблиците MyTable1 и MyTable2. Първо ще бъдат поставени полетата на таблицата MyTable1, а след това полетата на втората таблица.

Пример 17.5. Изберете записи по числово полеИЗБЕРЕТЕ Име, Фамилия ОТ MyTable КЪДЕ (Число>l) и (Число SET = , … SET = [WHERE ]);

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

Пример 17.11. промянастойности на полетоАКТУАЛИЗИРАНЕ на MyTable SET Oklad = Oklad + 1000; WHERE Clad ( ) СТОЙНОСТИ ( );

Така към таблицата ще бъде добавен един запис.

ИЗТРИВАНЕ ОТ [КЪДЕ ];

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

Пример 17.13. Изтриване на записи от таблицаDELETE FROM MyTable WHERE Фамилия = 'Иванов';

Изтрива всички записи, съдържащи фамилното име Иванов от таблицата MyTable. Това приключва нашия преглед на основните оператори и функции на езика SQL. Можете да намерите допълнителна информация в специализираната литература за този език.