Основы языка SQL

Основы языка SQL

Язык структурированных запросов SQL (Structured Query Language) существует в нескольких стандартах. Наиболее распространенными являются стандарты SQL-89 и SQL-92. Последний также называют стандартом ANSI. Из-за частичной несовместимости стандартов языка существует множество его диалектов. Мы рассмотрим только основные команды SQL для простых операций с таблицами баз данных.

 

 

В языке SQL нет многих типов команд, которые присущи большинству языков программирования. Так, в нем отсутствуют операторы цикла, перехода и т. д. SQL-запрос — это команда на языке SQL.

 

 

Язык SQL по своей сути ориентирован на доступ к данным, него обычно включают в состав различных средств разработки. Безусловно, разработчики Delphi не могли остаться в стороне. Многие компоненты Delphi для работы с базами данных поддерживают язык SQL.

 

Все SQL-запросы можно условно разделить на два вида:

  1. статический SQL-запрос — включается в код приложения во время его разработки и не изменяется во время выполнения. Единственным способом поправить что-либо в запросе такого типа является включение в SQL-запрос параметров и их дальнейшая модификация в ходе работы приложения;
  2. динамический SQL-запрос — создается и изменяется в процессе выполнения приложения. Такие запросы являются самыми гибкими и могут более адекватно отвечать конкретным желаниям пользователя.

Все операторы и команды языка SQL можно разделить на три группы. Рассмотрим эти группы, а также операторы, входящие в каждую из групп.

Операторы определения данных предназначены для создания, удаления и изменения структуры данных. Основные из них перечислены в табл. 11.1. 

Таблица 11.1. Основные операторы определения данных

DROP VIEW Удаляет представление
CREATE TABLE Предназначен для создания таблицы базы данных
ALTER TABLE Изменяет структуру таблицы
DROP TABLE Удаляет таблицу
CREATE INDEX Создает индекс
DROP INDEX Удаляет индекс
CREATE VIEW Создает представление

Операторы управления данными служат для управления привилегиями доступа к данным. Основные операторы этой группы представлены в табл. 11.2. 

Таблица 11.2. Основные операторы управления данными
 

Оператор Описание
Grand  Назначает привилегии пользователя
REVOKE Отменяет привилегии пользователей

Операторы манипулирования данными осуществляют работу с записями таблиц. Наиболее часто используемые операторы кратко описаны в табл. 11.3. 

Таблица 11.3. Основные операторы манипулирования данными 

Оператор Описание
SELECT Производит выборку записей по определенному формату
UPDATE Предназначен для изменения и обновления записей
INSERT Вставляет новые записи в таблицу
DELETE Удаляет записи из таблицы

Применение приведенных в табл. 11.1-11.3 операторов мы рассмотрим далее на этом занятии.

ВНИМАНИЕ: Обратите внимание на тот факт, что проверка синтаксиса запроса происходит только во время работы программы. Компилятор Delphi не обрабатывает SQL-запросы на этапе разработки приложения. 

Результатом выполнения запроса обычно является набор данных, который называется результирующим набором данных.

 

Осталось отметить, что регистр букв команд SQL-запросов не влияет на их выполнение. Мы воспользуемся этим удобством и для наглядности будем применять прописные буквы для операторов языка SQL. По соглашениям, принятым в SQL, точка с запятой также не требуется в конце каждой команды. Элементы списков, такие как имена таблиц и нолей, обязательно разделяются запятыми. Имена таблиц и полей заключаются в апострофы пли кавычки, например, 'Number', "Table 1". В случае, если имя не содержит пробелов и других специальных символов, его можно не заключать в кавычки.

 

В языке SQL, кроме операторов, имеется несколько функций, основные из которых будут рассмотрены далее.

Статистические функции — функции, предназначенные для статистической обработки данных. Наиболее часто используемые статистические функции перечислены в табл. 11.4.

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

Функция Описание
AVG( ) Получение среднего значения
COUNT( ) Определяет количество значений
COUNT(*) Определяет количество ненулевых значений
MAX() Максимальное значение
MIN() Минимальное значение
SUM() Сумма значений

Строковые функции — функции, предоставленные для работы со строковыми значениями. Наиболее часто задействуем ые из них представлены в табл. 11.5.

Таблица 11.5 Основные строковые функции

Функция Описание
|| Слияние(Конкатенация) 2-х строк
CAST(<Выражение> As<Тип>) Приводит <Выражение> к типу <Тип>
LOWER(S) Преобразует символы строки в нижний регистр
SUBSTRING(S FROM N1 TO N2) Выделяет из строки S подстроку, начиная с символа N1 и заканчивая N2
TRIM(S) Удаляет в начале и в конце строки S лишние пробелы
UPPER(S) Преобразует символы строки в верхний регистр

 

 

Оператор CREATE TABLE служит для создания повой таблицы базы данных и имеет следующий формат:

 

 

Обязательное условие — указание хотя бы одного имени поля и его типа данных.

Приведем пример объявления простой таблицы: 


 

Здесь в каталоге текущей базы данных будет создана новая таблица МуTable, состоящая из полей Number, Name и Surname. Первое поле имеет целочисленный тип (INTEGER), остальные поля — символьного типа и ограничены 20 символами.

Если при выполнении этого запроса выяснится, что таблица с таким именем уже существует, будет сгенерирована исключительная ситуация.

Оператор DROP TABLE <Имя таблицы> служит для удаления имеющейся таблицы. Если таблицы с указанным именем не существует, будет сгенерирована исключительная ситуация.

Пример:

DROP TABLE МуTable;

 

 

При выполнении этой операции будут удалены все файлы, относящиеся к таблице МуТаЫе.

Оператор ALTER TABLE предназначен для добавления или удаления полей существующей таблицы базы данных. Во время выполнения этого оператора никакие другие приложения не должны обращаться к таблице. Оператор записывается следующим образом:

 

При этом операнд ADD добавляет к таблице новое поле, а операнд DROP удаляет из таблицы существующее поле. Операнды могут располагаться внутри оператора ALTER TABLE произвольно.

Пример:

При выполнении кода примера в таблицу МуТablе добавятся два поля: Telefon и Address, целочисленного и символьного типа соответственно. Кроме того, будет удалено поле Number.

 

«Краеугольным» оператором манипулирования данными является оператор SELECT. Этот оператор используется для отбора данных, удовлетворяющих сложным условиям. Оператор SELECT имеет вид:

 

 

Параметр DISTINCT определяет, будут ли включаться в результирующий набор данных повторяющиеся записи. Если он присутствует в операторе SELECT, то повторяющиеся записи будут исключены из набора данных.

Если в список полей входят поля нескольких таблиц, для указания принадлежности поля к той или иной таблице используют составной оператор, включающий имя таблицы и, через точку, имя поля: 

 <Имя таблииы>.<Имя поля>

 

Операнд WHERE определяет критерии, которым должны удовлетворять записи в результирующем наборе данных.

Операнд GROUP BY позволяет фупиировать записи. Иногда бываем необходимо выполнить какие-либо действия над группой записей.

Операнд HAVING используется вместе с GROUP BY и позволяет выбирать записи внутри групп.

Операнд ORDER BY содержит список полей, определяющих порядок сортировки записей результирующего набора данных. По умолчанию сортировка выполняется в порядке возрастания значений. Для сортировки в порядке убывания значений необходимо после имени поля поставить параметр DESC. Приведем несколько примеров выбора записей с использованием оператора SELECT.

Пример 1. Выбор всех полей таблицы

SELECT * FROM МуТаble

 

В результате выполнения этого запроса будут выбраны все поля и записи из таблицы МуТаЫе. Символ * как раз и означает, что нас интересует таблица в целом. Вместо него можно просто перечислить через запятую все имена полей таблицы.

 

Пример 2. Выбор данных из трех полей таблицы

 

SELECT Number. Surname. Telefon
FROM МуТаblе

Будут возвращены все значения из полей Number, Surname и Telefon таблицы МуТаblе.

 

Пример 3. Выбор уникальных значений

SELECT DISTINCT Surname
FROM МуТаblе

  В ответ на запрос мы получим набор данных, который содержит все фамилии (Surname), входящие в таблицу МуТаЫе. В этом наборе данных одна и та же фамилия не появится дважды (по умолчанию), то есть будут исключены все однофамильцы.


Пример 4. Выбор данных из двух таблиц  

SELECT * FROM MyTable1. МуТаblе2

 

Выбирает все данные из таблиц MyTablel и МуТаЫе2.

Первыми будут располагаться поля таблицы MyTablel, а затем — поля второй таблицы.

 

Пример 5. Выбор записей по значениям числового поля 

SELECT Name. Surname
FROM МуТablе
WHERE (Number>l) and (Number<100);
 

В результирующий набор данных войдут имена и фамилии первых ста человек, занесенных в таблицу МуТаblе.

 

Пример 6. Выбор записей по значению символьного поля 

SELECT Name

FROM МуТаble
WHERE Surname='Иванов';
 

Результатом будет столбец имен, учтенных нами, с фамилией Иванов.


Пример 7. Проверка частичного совпадения по символьному полю

 

SELECT Name. Surname
FROM МуТаblе
WHERE Surname LIKE 'И';
 

Будут выбраны имена и фамилии людей, занесенных в таблицу МуТаЫе, фамилии которых начинаются с буквы И.

В выражениях операции LIKE можно использовать подстановочные символы, а именно: % — замещает любое количество символов, в том числе и нулевое; _ — замещает один символ.

 

Пример 8. Проверка частичного совпадения по шаблону

SELECT Name. Surname

FROM МуТаble
WHERE Surname LIKE '%' || 'ов' || '%';
 

Будут выбраны имена и фамилии людей, в фамилиях которых найдутся символьные сочетания ов.

Операнд ORDER BY служит для упорядочения (сортировки) значений полей.

 

Пример 9. Сортировка записей по полю

SELECT * FROM МуТаblе

ORDER BY Name

 

Набор данных будет упорядочен в порядке возрастания значений по полю Name.

 

Пример 10. Сортировка по двум полям

SELECT * FROM МуТаblе

OROER BY Name, Surname DESC

Будет произведена сортировка данных сначала ло полю Name в порядке возрастания, затем — по полю Sumame в порядке убывания.

Оператор UPDATE служит для изменения значений полей в группе записей и имеет следующий формат:


Во всех записях, которые удовлетворяют условию отбора, будут изменяться значения полей.

Пример 11. Изменение значений поля

UPDATE МуТаblе

SET Oklad = Oklad + 1000;
WHERE Oklad < 1000;

 

Изменит сумму оклада (Oklad) сотрудника, если оклад составляет менее 1000 рублей. Заработная плата такого сотрудника в результате удвоится.

Оператор INSERT служит для вставки записей в таблицу и записывается следующим образом:

'INSERT INTO <Имя таблицы> (<Список лолей>)

VALUES (<Список значений>);
 

Это означает, что к таблице <Имя таблицы> будет добавлена одна запись.

Пример 12. Добавление записи в таблицу

INSERT INTO МуТаblе
(Name. Surname. Telefon)
VALUES ('Иван''Иванов',2341234)
 

В таблицу МуТаblе будет вставлена новая запись, содержащая имя и фамилию нового сотрудника, а также номер его телефона.

Оператор DELETE служит для удаления записей из таблицы и имеет следующий формат:

DELETE FROM <Иия таблицы>

[WHERE <Условия выбора>];

 

В результате его действия из таблицы будут удалены все записи, удовлетворяющие критерию отсева.


Пример 13. Удаление записей из таблицы

DELETE FROM МуТаblе
WHERE Surname = 'Иванов';

 

Удаляет из таблицы МуТаblе все записи, содержащие фамилию Иванов.

На этом мы закончим обзор основных операторов и функций языка SQL. Дополнительную информацию вы можете почерпнуть из специальной литературы, посвященной данному языку.

 

 

SQL Explorer похож на Проводник (Explorer) среды Windows. Средствами SQL Explorer можно просматривать или редактировать реляционные базы данных. Ранние версии дайной программы носили такие названия, как Explorer и Database Explorer. Новая среда разработки Delphi 7 поставляется с SQL Explorer версии 4.00. Запустить эту программу можно либо из главного меню Delphi:

Database > Explore (База данных -> Проводник),

либо с помощью главного меню Windows:

Пуск -> Программы -> Borland Delphi 7 -> SQL Explorer.

Но можно это сделать и напрямую. Для этого нужно запустить файл dbexplor.exe, который находится в подкаталоге BIN' главного каталога Delphi 7.

 

Если в левой части окна программы выбрать требуемый объест (например, таблицу), то в правой части окна можно будет просмотреть пли отредактировать свойства этого объекта. На рисучке 11.1 показаны свойства полей таблицы country.db, выбранной в качестве демонстрационного примера.

С помощью SQL Explorer вы можете:

  • работать с псевдонимами;
  • просматривать структуру баз данных или таблиц:
  • просматривать и редактировать записи, содержащиеся в таблицах;
  • оздавать, редактировать и выполнять SQL-запросы;
  • оперировать со словарями данных. 

Работа с псевдонимами ничем не отличается от таковой в программе BDE Administrator, которую мы рассмотрели ранее.

Для просмотра структуры базы данных или таблицы нужно в левой части окна SQL Explorer выбрать интересующую базу данных или таблицу. После выбора таблицы имеется возможность просматривать ее объекты. К объектам таблицы относятся:

  • поля (Fields);
  • индексы (Indices);
  • ограничения значений полей (Validity Checks);
  • ограничения ссылочной целостности (Referential Constraints);
  • права доступа (Security Specs);
  • файлы, входящие в состав таблицы (Family Members).

Если для базы данных или таблицы установлен режим ограничения доступа, при попытке открыть ее будет запрошено имя пользователя и его пароль. Для просмотра и редактирования содержимого таблицы следует выделить название таблицы и в правой области окна SQL Explorer выбрать вкладку Data (Данные), как показано на рис. 11.2.

Рис 11.2. Просмотр и редактирование записей таблицы

 

Записи таблицы отображаются в сетке, аналогичной компоненту DBGrid. Для перемещения по записям и внесения в них изменений можно воспользоваться аналогом компонента DBNavigator, расположенным в верхней правой области окна SQL Explorer. 

 

Кнопка Explore BLOBs (Просмотр полей BLOB), находящаяся на панели инструментов и имеющая вид конвертас картинкой, позволяет просматривать BLOB-поля. При этом содержимое каждого BLOB-поля будет выводиться в отдельном окне.

 

Для редактирования и запуска SQL-запросов применяется текстовый редактор, расположенный на вкладке Enter SQL (Ввод SQL-запроса). Выполнение запроса происходит при нажатии кнопки Execute Query (Выполнение запроса), обозначенной желтой молнией. Результат будет отображен в области окна непосредственно под текстовым редактором. В программе допускается работать одновременно с несколькими запросам и. Переключение между запросами осуществляется с помощью кнопок с изображением синих треугольников — Next Query (Следующий запрос) и Previous Query (Предыдущий запрос). Результат выполнения демонстрационного запроса показан на рис. 11.3.

Рис. 11.3. Результат выполнения запроса 

 

Для работы со словарями данных нужно перейти на вкладку Dictionary (Словарь) в левой части окна SQL Explorer. При этом структура выбранного словаря данных будет отображена в виде иерархического дерева. Если словарей данных нет, то программа выдаст соответствующее сообщение. Со словарем данных можно выполнять следующие операции (рис. 11.4):

  • выбор нового словаря (Select);
  • регистрация словаря в хранилище объектов (Register);
  • исключение словаря из хранилища объектов (Unregister);
  • создание нового словаря (New);
    • удаление выбранного словаря (Delete);
    • вставка в словарь данных из базы данных (Import from Database);
    • вставка в словарь данных из файла (Import from File);
    • экспортирование данных из словаря в файл (Export to File).

Рис. 11.4. Допустимые операции над словарями данных 

 

 

Программа SQL Monitor позволяет отслеживать выполнение SQL-запросов к удаленным базам данных. Запуск программы осуществляется с помощью команды главного меню

 Delphi Database -> SQL Monitor (Базаданных -> SQLMonitor).

Кроме того, программу можно запустить из главного меню Windows:

Пуск -> Программы -> Borland Delphi 7 -> SQL Monitor.

 

Ну и, конечно, с помощью простого запуска файла sqlmon.exe, который расположен в папке BIN главного каталога Delphi 7.

 

Для локальных баз данных эта программа не применима, так как она отслеживает операции доступа к удаленным базам данных с помощью драйверов SQL Links, а в локальных базах данных работают другие, локальные драйверы.

 

Кроме того, SQL Monitor не может быть использован, если в вашем приложении имеются компоненты с закладки InterBase, так как в этом случае драйверы SQL Links не задействованы и осуществляется прямой доступ к базе данных через BDE.

 

После запуска программа автоматически следит за порядком выполнения SQL-запросов и ведет журнал работы с удаленной базой данных. Запросы отслеживаются для указанного клиента. При отладке Delphi-приложения клиентом становится Delphi 7. Строки журнала выводятся в верхней части окна программы.


Если вы хотите сохранить журнал работы с удаленной базой данных в текстовом файле, можно воспользоваться командой File -> Save Log (Файл -> Сохранить журнал) и указать имя файла. Очистка журнала выполняется с помощью команды Edit -> Clear Log (Файл -> Очистить журнал).

Параметры программы SQL Monitor устанавливаются в окне Trace Options (Параметры трассировки), как показано на рнс 11.6.

Рис. 11.6. Окно Trace Options 

 

Это окно вызывается через пункт меню Options -> Trace Options (Параметры -> Параметры трассировки) или комбинацией клавиш Ctrl+0.

Параметры, доступные в окне через элементы управления (табл. 11.6), задают степень детализации информации, сохраняемой в журнале.

 

Таблица 11.6. Параметры программы SQL Monitor

Параметр

Русское название

Описание

Prepared Query Statements

Готовые запросы

Подготовленные запросы, передаваемые на сервер

Executed Query Statements

Выполненные запросы

Выполненные на сервере запросы

Input Parameters

Входные параметры

Данные, передаваемые на сервер в качестве параметров запросов

Fetched Data

Возвращенные данные

Данные, возвращенные сервером

Statement Operations

Утверждение операций

Операции ALLOCATE, PREPARE, EXECUTE и FETCH

Connect/Disconnect

Соединение-отсоединение

Операции соединения с сервером и отключения от него

Transactions

Транзакции

Операции управления транзакциями

BLOB I/O

Ввод-вывод BLOB

Операции с BLOB-данными

Miscellaneous

Другие

Другие операции

 

По умолчанию все перечисленные параметры включены. Для облегчения чтения журнала рекомендуется отключать некоторые из них. Например, достаточно оставить только первый, второй и седьмой параметры (готовые и выполненные запросы, а также транзакции).

 

Программа SQL Builder предназначена для упрощения процесса создания SQL-запросов. С помощью этого средства вы сможете достаточно легко конструировать запросы и сохранять их в виде текстового файла с расширением SQL.
SQL Builder вызывается с помощью контекстного меню компонента Query. Расположите в форме компонент Query с закладки BDE палитры компонентов. Щелкните на компоненте правой кнопкой мыши и выберите пункт SQL Builder. Перед вами появится главное окно SQL Builder (рис. 11.7).
Окно программы разделено на две части: в верхней находятся таблицы, необходимые для построения запроса, внизу расположена область с настройками.
На рисунке 11.7 показан пример отбора записей из таблицы Animals базы данных DBDEMOS. По нему будут отобраны записи, значения поля WEIGHT у которых больше десяти. Для отработки запроса нажмите клавишу F9 или выполните команду меню Query -> Run Query (Запрос -> Выполнить запрос). Результат выполнения запроса можно увидеть на рис. 11.8.
Рис. 11.7. Окно программы SQL Builder 

 

Рис. 11.8. Результат выполнения запроса

 

Кратко опишем закладки в последовательности нх расположения в нижней части окна SQL Builder:

  • закладка Criteria (Условия) предназначена для задания условий отбора записей. Каждое условие вводится в отдельной строке и состоит из двух названий полей или значений, между которыми находится знак сравнения. Имена полей можно выбирать из выпадающего списка либо перетаскивать из таблиц в верхней части окна. Если условие содержит ошибку, то будет выдано соответствующее сообщение. Удалить строку условия можно с помощью пункта Delete Row (Удалить ряд)контекстного меню;
  • закладка Selection (Выбор) позволяет изменять названия заголовков столбцов при отображении результирующего набора данных. Кроме того, она предоставляет возможность включения в запрос статистических функций;
  • закладка Grouping (Группирование) предназначена для группирования записей;
  • закладка Group Criteria (Критерии группирования) содержит условия, на которых будет основано группирование записей;
  • закладка Sorting (Сортировка) определяет порядок упорядочения записей (по полям и по убыванию-возрастанию);
  • закладка Output Fields (Выходные поля) содержит поля, которые можно использовать для сортировки записей;
  • закладка Joins (Связи) предназначена для установки отношений между таблицами. 
dle

Помоги проекту! Расскажи друзьям об этом сайте:


Изменил: admin по причине: Исправлена ошибка