Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Запрос к БД внутри транзакции пишется на языке SQL, с помощью которого формируются предложения [41]:
- определения данных – создание/уничтожение новых таблиц;
- запросов на выборку данных;
- модификации БД (добавление, удаление, изменение);
- управления данными (управление транзакциями, привилегиями).
Кроме того, SQL позволяет выполнять:
- арифметические вычисления;
- упорядочивание строк, столбцов при выводе на экран/принтер;
- интерпретацию данных;
- сохранение результатов запроса в других таблицах;
- группирование данных, суммирование, подсчет и т.д.
Достоинства языка SQL:
- стандартность (поддерживается стандартами ANSI и ISO);
- независимость от конкретных СУБД, т.е. БД можно переносить с одной СУБД на другую без доработок;
- поддержка реляционных БД;
- немедленный доступ к данным без написания программ;
- обеспечение различного представления данных;
- возможность динамического изменения и расширения структуры БД;
- поддержка архитектуры «клиент-сервер».
У каждого объекта БД (сервер, таблица, поле таблицы) есть свое уникальное имя (в SQL имя должно содержать до 18 символов английского алфавита большими буквами).
Рассмотрим три таблицы:
OBJECTS – таблица «Технологические объекты»;
N_OBJ – номер объекта (поле «N_об»);
TIP – тип объекта;
NAIM - наименование объекта;
GOD - год постройки;
SENSORS – таблица «Датчики»;
N_SENS - инвентарный номер датчика (поле «N_дтч»);
TIP - тип датчика;
FIRMA - фирма-производитель;
MARKA - марка датчика;
GOD_UST - год установки на объект;
N_OBJ - номер объекта, на котором установлен датчик;
IZMER – таблица «Измерения»;
N_SENS - инвентарный номер датчика;
DATE - дата измерения;
TIME - время измерения;
MEAN - значение измеренной величины.
Например, если таблица OBJECTS находится на сервере SERV, то полное имя таблицы будет
SERV.OBJECTS
Для доступа к конкретному полю этой таблицы:
SERV.OBJECTS.TIP
Для заполнения таблицы используются следующие типы данных:
DEC(точность) - десятичное число с дробной частью;
NUMERIC - десятичное число с определенной точностью;
INT или INTEGER – целое число;
SMALLINT – целое число;
FLOAT(точность) – экспоненциальная форма числа;
REAL – вещественное число с заданной точностью;
DOUBLE – эквивалент REAL с более высокой точностью;
CHAR(макс. количество символов) – строковая переменная;
TIME – время.
Выборка данных из таблицы производится оператором SELECT.
Например, команда
SELECT N_SENS, TIP, N_OBJ FROM SENSORS;
выедет таблицу с тремя колонками (номер датчика, тип и номер объекта) с данными из таблицы SENSORS. Признаком завершения команды является точка с запятой.
SELECT * FROM SENSORS;
выводит все данные из таблицы SENSORS.
SELECT DISTINCT TIP, FIRMA, MARKA FROM SENSORS;
выведет все марки датчиков без дублирования (операнд DISTINCT).
Использование условий поиска:
SELECT N_SENS, TIP, MARKA FROM SENSORS
WHERE FIRMA=’Метран’;
выводит список всех датчиков, произведенных фирмой «Метран».
SELECT FIRMA, MARKA, TIP FROM SENSORS
WHERE GOD_UST>2000;
выводит список датчиков, установленных после 2000 года.
В операторе WHERE должны быть использованы логические операции: >, <, =, >=, <=, AND, OR, NOT. Кроме того, могут использоваться специальные операнды IN, BETWEEN, LIKE, IS NULL.
Операнд IN определяет набор значений, в который данное значение должно быть включено, например,
SELECT MARKA, GOD_UST FROM SENSORS
WHERE FIRMA IN (‘Метран’, ‘Siemens’, ‘Fisher’);
выводит только датчики указанных фирм;
SELECT MARKA, FIRMA FROM SENSORS
WHERE GOD_UST BETWEEN 1985 AND 1989;
выводит список датчиков, установленный в период с 1985 по 1989 год;
SELECT N_SENS FROM SENSORS WHERE MARKA IS NULL;
выводит список датчиков, у которых не указана марка.
Для получения итоговых данных могут использоваться функции: SUM – сумма значений, COUNT – количество, AVG – среднее значение, MAX и MIN – максимальное и минимальное значения.
Для группирования данных используется операнд GROUP BY:
SELECT N_SENS, MAX(MEAN) FROM IZMER
WHERE (DATE > 01/05/03 AND DATE < 31/05/03)
GROUP BY N_SENS;
выдаст таблицу из двух колонок: номер датчика и его максимальное значение, которое он дал за май 2003 года.
Упорядочивание таблиц по возрастанию производится операндом ORDER BY <поле> ASC или убыванию ORDER BY <поле> DESC.
Для объединения нескольких запросов в одну транзакцию используется оператор UNION:
SELECT … UNION SELECT …;
Для многотабличных запросов используются полные имена полей:
SELECT SENSORS.TIP,IZMER.DATE,IZMER.TIME,IZMER.MEAN
FROM SENSORS, IZMER
WHERE SENSORS.N_SENS=IZMER.N_SENS;
выводит таблицу из четырех колонок: тип датчика, дата, время и значение изерения.
Внутри операнда WHERE может находиться самостоятельная команда SELECT. В этом случае сначала выполняется вложенный запрос, затем из его результатов отбираются результаты для основного запроса.
Добавление новых записей в таблицу производится оператором INSERT INTO <таблица> VALUES, например:
INSERT INTO SENSORS VALUES (10260, ‘FE’,
‘Grundfos’, ‘Flow’, 2003, 102);
INSERT INTO SENSORS(N_SENS, TIP, N_OBJ)
VALUES (10278, ‘LE’, 102);
добавляет в таблицу SENSORS запись о новом уровнемере с номером 10278, установленном на объекте 102, без указания марки и фирмы-изготовителя.
Удаление записей:
DELETE FROM IZMER WHERE DATE=01/05/2003;
удалит все записи за 1 мая 2003 года.
Изменение записей производится командой UPDATE:
UPDATE SENSORS
SET FIRMA=’Теплоприбор’, MARKA=’ТХА-0515’
WHERE TIP=’TE’;
заменит все датчики температуры на термопары ТХА-0515 фиры «Теплоприбор».
Создание новой таблицы
CREATE TABLE SENSORS
(N_SENS INTEGER, TIP CHAR(5), MARKA CHAR(20),
GOD_UST INTEGER, N_OBJ INTEGER);
создает пустую таблицу SENSORS с указанными полями. После каждого имени поля указан тип хранимых в нем данных.
Изменение структуры таблицы:
ALTER TABLE SENSORS ADD REMNT INTEGER;
добавление поля REMNT в таблицу SENSORS.
Дата публикования: 2015-09-17; Прочитано: 436 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!