146.00K
Category: databasedatabase

Практическая-работа-1

1.

Министерство науки и высшего образования РФ ФГБОУ ВО Тихоокеанский
государственный университет Институт экономики и управления
ПРАКТИЧЕСКАЯ РАБОТА №1 Тема:
Существующие основные разновидности языка SQL
Дисциплина: Проектирование информационных систем
Выполнил: Климов Егор
Васильевич ПИ(б)-41
Составитель: Серебрякова Т.А.

2.

1. Введение: история и стандартизация SQL
SQL (Structured Query Language) — язык структурированных запросов,
стандарт для работы с реляционными базами данных.
История:
1970 г. — Эдгар Кодд публикует реляционную модель данных.
1974 г. — Дональд Чемберлин и Рэймонд Бойс разрабатывают SEQUEL
(позже SQL) в IBM.
1979 г. — первая коммерческая реализация (Oracle).
Стандартизация:
Год
Стандарт
Нововведения
1986
SQL-86
Базовый стандарт ANSI
1992
SQL-92
JOIN, подзапросы, транзакции
1999
SQU1999
2003
SQU2003
Оконные функции, XML
2016
SQL:2016
JSON-поддержка, безопасность на уровне строк
Рекурсивные запросы, процедурные расширения,
триггеры
NoSQL: появился как альтернатива для Big Data, но не заменил SQL.
Современный подход — гибридное использование (Polyglot Persistence).
Преимущества SQL: стандартизация, мощные запросы, ACID-транзакции,
безопасность. Недостатки: сложность синтаксиса, различия диалектов,
ограниченное горизонтальное масштабирование.
2. Режимы работы с SQL
2.1 Интерактивный SQL

3.

Работа через командную строку или графический клиент. Запрос выполняется
немедленно, результат возвращается пользователю. Пример
(psqi):
SELECT * FROM users WHERE age > 18;
Инструменты: pgAdmin, SSMS, DBeaver, Oracle SQL Developer.
2.2
Встроенный SQL (Embedded SQL)
SQL-инструкции встраиваются в код приложений (C, Java, COBOL). Препроцессор
заменяет их вызовами библиотек.
Пример (C):
EXEC SQL SELECT name INTO :name FROM employees WHERE id = 1;
2.3
Статический SQL
Запросы фиксированы в коде, план выполнения компилируется заранее.
Используется через Prepared Statements.
Пример (Java JDBC):
PreparedStatement ps = conn.prepareStatement("SELECT * FROM products WHERE
price < ?");
ps.setDouble(1, 100.0);
2.4
Динамический SQL
Запросы формируются во время выполнения программы. Гибкость, но требует
защиты от SQL-инъекций.
Пример (PL/SQL):
EXECUTE IMMEDIATE 'SELECT name FROM employees WHERE id = :id' USING
emp_id;
3. Направления развития БД
3.1
Объектно-ориентированный подход
Расширение SQL возможностями ООП: пользовательские типы, наследование
таблиц, методы. Включены в стандарт SQL: 1999.
Пример (PostgreSQL):
CREATE TYPE address AS (city VARCHAR, street VARCHAR);
CREATE TABLE customers (id SERIAL, name VARCHAR, addr address);
3.2
Распределенные БД

4.

Данные хранятся на нескольких серверах. Обеспечивают масштабируемость и
отказоустойчивость. Используют фрагментацию и репликацию.
Примеры: Citus (PostgreSQL), Oracle RAC, Greenplum.
3.3 Хранилища данных (OLAP)
Оптимизированы для аналитических запросов. Используют оконные функции,
CUBE, ROLLUP, материализованные представления.
Пример оконной функции:
SELECT department, name, salary,
RANK() OVER(PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;
4. Диалекты SQL
Каждая СУБД реализует собственный диалект, расширяющий стандарт.
4.1 PL/SQL (Oracle)
Мощный процедурный язык с блочной структурой, исключениями, пакетами и
коллекциями.
Пример:
CREATE PROCEDURE inc_sal(pct NUMBER) IS BEGIN
UPDATE employees SET salary = salary * (1 + pct/100);
COMMIT;
END;
4.2 Transact-SQL (T-SQL, Microsoft SQL Server)
Разработан Microsoft. Поддерживает переменные (@), TRY..CATCH, временные
таблицы.
Пример:
CREATE PROCEDURE Transfer(@From INT, @To INT, @Amount MONEY) AS
BEGIN TRY
BEGIN TRANSACTION
UPDATE Accounts SET Balance -= @Amount WHERE Id = @From;

5.

UPDATE Accounts SET Balance += @Amount WHERE Id = @To; COMMIT
END TRY BEGIN CATCH ROLLBACK;
THROW;
END CATCH;
4.3 PL/pgSQL (PostgreSQL)
Гибкий диалект с поддержкой массивов, JSON, возвратом таблиц.
Пример:
CREATE FUNCTION get_employees(dept VARCHAR)
RETURNS TABLE(id INT, name VARCHAR) AS $$
BEGIN
RETURN QUERY SELECT id, name FROM employees WHERE department =
dept;
END;
$$ LANGUAGE plpgsql;
4.4
Jet SQL (Microsoft Access)
Упрощенный диалект для desktop-приложений.
Пример:
SELECT Product, IIf(Stock > 10, 'Yes', 'No') AS Available FROM Products;
5. Сравнительная таблица диалектов

6.

PL/SQL (Oracle) T-SQL (MS SQL) PL/pgSQL (PG) Jet SQL (Access)
Функция
v name VARCHAR2
(Sname VARCHAR
my van INT
PARAMETERS
IF...ELSE
IF...ELSIF
lift)
TRY...CATCH
EXCEPTION
On Error
Переменные
Условный оператор
IF. . .ELSIF
Обработка ошибок
EXCEPTION
Пакеты
есть
частично
схемы
нет
JSON
с 12с
нативная
нативная
нет
Оконные функции
Да
Да
Да
нет
6.
Примеры задач на разных диалектах
Задача 1: Скользящее среднее (все диалекты — одинаково, оконная функция)
SELECT month, sales,
AVG(sales) OVER(ORDER BY month ROWS BETWEEN 2 PRECEDING AND
CURRENT ROW) AS moving_avg
FROM monthly_sales;
Задача 2: Иерархический запрос (дерево сотрудников)
Oracle:
SELECT employee_id, LEVEL FROM employees
START WITH manager_id IS NULL CONNECT BY PRIOR employee_id =
manager_id;
7. Современные тренды
1. JSON-поддержка: все современные СУБД работают с JSON (PostgreSQL, SQL
Server, Oracle, MySQL).
2.
SQL на Big Data: HiveQL, Spark SQL, Presto, BigQuery.
3.
Машинное обучение в SQL: BigQuery ML, Oracle ML, Madlib для PostgreSQL.
4.
Автооптимизация: автоматический выбор индексов, AI-настройка запросов.

7.

5. Serverless SQL: Amazon Athena, Snowflake, BigQuery (без управления
инфраструктурой).
8. Вывод:
В ходе работы изучены:
1.
2.
История и стандартизация SQL.
Режимы работы: интерактивный, встроенный, статический, динамический.
3.
Направления развития: объектные, распределенные, аналитические БД.
4.
Основные диалекты: PL/SQL, T-SQL, PL/pgSQL, Jet SQL — их особенности
и отличия.
5.
Современные тренды: JSON, Big Data, ML, автоматизация.
Ключевой вывод: SQL остается основным языком работы с данными. Знание
диалектов критически важно для проектирования эффективных информационных
систем, выбора СУБД и оптимизации запросов.
Источники:
Документация Oracle, Microsoft, PostgreSQL.
Стандарты ISO/IEC 9075.
К. Дж. Дейт — "SQL и реляционная теория".
Материалы Gartner, Forrester (2020-2026).
Официальные руководства СУБД.
English     Русский Rules