ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 02.09.2025

Просмотров: 327

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Пример 1. Получить содержимое всех полей таблицы Employee

SELECT * FROM Employee;

Id_employee

name

Profession_id

Brigade_id

1

Иванов И.И.

1003

2001

2

Петров П.П.

Пример2. Получить содержимое поля name таблицы Employee

SELECT name FROM Employee;

Ключевое слово DITINCT ПОЗВОЛЯЕТ ИСКЛЮЧИТЬ из результирующего набора повторяющиеся записи:

SELECT DISTINCT profession_id FROM Employee;

Каждая СУБД позволяет записывать выражения с использованием широкого набора операторов и функций. В результирующий набор помещается значение выражения, вычисленное для каждой записи таблицы. Для вновь созданного столбца требуется задать имя с помощью ключевого слова AS:

выражение AS имя

Пример. Рассчитать премию сотрудников в размере 20% от оклада

SELECT id_employee, name, salary, salary*0.2 AS bonus FROM Employee

Формат предложения FROM:

FROM таблица [JOIN таблица2 ON условие ...]

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


С точки зрения реляционной алгебры предложение FROM можно рассматривать как ограничение декартового произведения отношений.

При использовании нескольких таблиц в запросах следует указывать полное имя в виде:

Таблица. Поле.

Пример1. Получить домашние адреса сотрудников

SELECT Employee.name, EmployeeInfo.address

FROM Employee JOIN EmployeeInfo ON Employee.id_employee=EmployeeInfo.id_employee;

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

Пример 2. Получить профессии сотрудников

SELECT name, jobtitle

FROM Employee JOIN Profession ON profession_id=id_profession;

Формат предложения WHERE:

WHERE Поле ОПЕРАТОР Выражения …

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

Сточки зрения реляционной алгебры предложения WHERE можно рассматривать как ограничение отношения.

В предложении WHERE допускается использовать следующие параметры:

Отношения: <, >, =, ≤, ≥, <>

Логические: AND, OR, NOT

Специальные: IN, BETWEEN, IS, LIKE, EXISTS

Оператор IN используется для сравнения поля с несколькими значениями

jobtitle IN («слесарь», «столяр, «штукатур»)

<=> jobtitle = “слесарь” OR jobtitle = “столяр” OR jobtitle = “штукатур”

Оператор BETWEEN используется для проверки, попадает ли значение поля в заданный диапазон

salary BETWEEN 700 AND 900

<=> salary ≥ 700 AND salary ≤900

Оператор IS используется для сравнения со значением NULL (т.е. проверяет, имеет ли поле значение)

brigade_id IS NULL

Оператор LIKE используется для сравнения с шаблоном строки

В шаблоне могут использоваться символы:

_ - соответствует ровно одному любому символу

% - соответствует любому количеству любых символов

Пример условия

Результат поиска

Word LIKE ‘За_ор’

Забор

Затор

Word LIKE ‘Д%нь’

День, Длинная тень

Word LIKE ‘%й’

138-й, Последний


Пример 1. Получить список сотрудников имеющих профессию «столяр»

SELECT name

FROM Employee

WHERE profession_id = 1001;

или

SELECT name

FROM Employee JOIN Profession ON profession_id = id_profession

WHERE jobtitle = ‘столяр’;

Пример 2. Получить список сотрудников , проживающих на улице Чкалова.

SELECT name

FROM Employee JOIN EmployeeInfo

ON Employee.id_employee = EmployeeInfo.id_employee

WHERE address LIKE ‘%Чкалова%’;

Формат предложение GROUP BY

GROUP BY список полей

Предложение GROUP BY позволяет разбить исходную таблицу на группу записей с одинаковыми значениями указанных полей. В результирующем наборе каждая группа представляется одной записью.

С точки зрения реляционной алгебры предложение GROUP BY можно рассматривать как деление отношений.

При использовании предложения GROUP BY, предложение SELECT может содержать выражения, содержащие только

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

SELECT Brigade.name, Profession.jobtitle

FROM Employee

JOIN Brigade

ON Employee.brigade_id = Brigade.id_brigade

JOIN Profession

ON Employee.profession_id = Profession.id_profession

GROUP BY Brigade.name, Profession.jobtitle;

Итог:

name jobtitle

столярная столяр

слесарная слесарь

Агрегатные (агрегировать – объединять) функции позволяют получить значение, характеризующее группу записей:

MAX (поле|выражение)

находит максимальное значение поля (выражения)

MIN (поле|выражение)

находит минимальное значение поля (выражения)

AVG (поле|выражение)

находит среднее значение поля (выражения)

SUM (поле|выражение)

находит сумму значения поля (выражения)

COUNT (поле|*)

находит количество непустых полей (общее количество записей)

Пример. Получить количество сотрудников в каждой бригаде.

SELECT Brigade.name, count (*) AS count

FROM Employee

JOIN Brigade ON Employee.brigade_id = Brigade.id_brigade

GROUP BY Brigade.name;

Итог:

name count

столярная 2

слесарная 2

Агрегатные функции допустимо применять без использования предложения GROUP BY. В этом случае из действие распространяется на всю таблицу.

Пример. Найти общее количество сотрудников

SELECT count (*) AS count

FROM Employee;

Итог:

count

5

Формат предложения HAVING:

HAVING условие …

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

В условии можно использовать только те поля, которые были перечислены только в GROUP BY, а также агрегатные функции.

Пример. Получить список бригад с заданным количеством сотрудников


SELECT Brigade.name, count (*) AS count

FROM Employee

JOIN Brigade ON Employee.brigade_id = Brigade.id_brigade

GROUP BY Brigade.name

HAVING count (*) = 2;

Итог:

name count

столярная 2

слесарная 2

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

  1. Из исходной таблицы выбираются записи, удовлетворяющие условию WHERE.

  2. Полученный набор записей разбивается на группы в соответствии с GROUP BY.

  3. Из групп записей выбираются те, которые удовлетворяют условию HAVING.

Формат предложения ORDER BY;

ORDER BY поле [ ASC | DESK] [ …]

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

ASC – сортировка по возрастанию (по умолчанию)

DESC – сортировка по убыванию

Пример. Вывод фамилий сотрудников в алфавитном порядке

SELECT Brigade.name AS BrigadeName, Employee.name AS EmployeeName

FROM Employee JOIN Brigade ON Employee.brigade_id = Brigade.id_brigade

ORDER BY BrigadeName ASC, EmployeeName ASC.

Итог:

BrigadeName EmployeeName

слесарная Андреев А.А.

слесарная Петров П.П.

столярная Иванов И.И.

столярная Сидоров С.С.

Технология доступа к данным

Различные СУБД по-разному организуют и хранят базы данных:

- Для каждой таблицы отдельные файлы (Paradox и dBase). БД – каталог, в котором находятся файлы таблиц;

- Несколько таблиц в одном файле (MS Access и InterBase). БД – файл с путём доступа к нему.

Технологии доступа к данным решают проблему унификации доступа к различным базам данных – предоставление универсального способа доступа к разным форматам данных единым образом.

С++ Builder предлагает следующие механизмы доступа к данным:

  • BDE (IDAPI);

  • ADO; // будем рассматривать

  • dbExpress;

  • IntelBase Express.

Средства C++ Builder для работы с базами данных можно разделить на 2 вида:

  • Инструменты – специальные программы и пакеты, обеспечивающие обслуживание БД вне разрабатываемых приложений.

  • Компоненты – предназначены для создания приложений, осуществляющих операции с базами данных.

Инструменты С++ Builder для операции с БД:

BDE Administrator – утилита для настройки различных параметров BDE, настройки драйверов баз данных, создания и удаления драйверов ODBC, создания и обслуживания псевдонимов.

Database Desktop – программа предназначенная для создания и редактирования структуры и записей таблиц, а также создания, редактирования и выполнения SQL-запросов.


SQL Explorer – проводник БД, позволяющий просматривать и редактировать БД и словари данных.

SQL Monitor – программа отслеживания порядка выполнения SQL-запросов к удалённым БД.

Data Pump – программа для переноса данных (схемы базы данных и содержимого) между БД.

Компоненты для создания приложений БД в C++ Builder:

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

  • Визуальные. Используются для построения интерфейса приложения БД.

Компоненты для создания приложений БД в С++ Builder сгруппированы на следующих страницах:

Data Access – не визуальные компоненты, предназначенные для организации доступа к данным.

DataSource (источник данных)

ClientDataSet (клиентский набор данных)

DataSetProvier (провайдер набора данных)

Компоненты преобразования документа XML

Data Controls – визуальные компоненты, предназначенные для управления данными.

DBGrid (сетка или таблица)

DBNavigator (навигационный интерфейс)

DBText, DBEdit, DBMemo, DBImage, DBListBox, DBComboBox, DBCheakBox, DBRadioGroup

DBLookupListBox, DBLookupComboBox

DBRichEdit, DBCtrlGrid, DBChart

dbExpress – компоненты, предназначенные для соединения приложений для работы с БД с помощью dbExpress

SQLConnection dbExpress (соединение с сервером БД

SQLDataSet (набор данных)

SQLQuery (набор данных запроса)

SQLStoredProc (вызов хранимой процедуры сервера)

SQLTable (набор данных таблицы)

SQLMonitor (монитор выполнения SQL-запросов)

SQLClientDataSet (клиентский набор данных)

DataSnap – содержит компоненты, предназначенные для создания трёхуровневых (многоуровневых) приложений.

BDE – содержит компоненты, предназначенные для управления данными с использованием BDE.

Table

Query

StoredProc

DataBase

Session, Batch Move, UpdateSQL, NestedTable, BDEClientDataSet

ADO – компоненты, предназначенные для управления данными с использованием технологии ADO (Active Data Objects)

ADOConnection

ADOCommand

ADODataSet

ADOTable

ADOQuery

ADOStoredProc, RDSConnection

InterBase – компоненты, предназначенные для работы с сервером InterBase

IBTable, IBQuery, IBStoredProc, IBDatabase, IBTransaction, IBUpdateSQL, IBDataSet, IBSQL, IBDatabaseInfo, ...

Decision Cube – компоненты, предназначенные для построения систем принятия решений.

DecisionCube, DecisionQuery, DecisionSource, SecisionPivor, DecisionGrid, DecisionGraph

QReport – компоненты, предназначенные для построения отчётов.

В большинстве случаев назначение компонента можно определить по префиксу:

  • DB – визуальный компонент, связан с данными и используется для построения интерфейса приложения БД

  • QR – компонент используется для построения отчётов QuickReport

  • IB – компонент предназначен для работы с сервером InterBase