Как удобно обращаться к базе данных?
Использовать SQL для обращения к RDBMS и не только к ним
SQL - один из самых востребованных языков
SQL (Structured Query Language - язык структурированных запросов)
SQL - формальный декларативный язык, применяемый для создания, модификации и управления данными в произвольной реляционной базе данных, управляемой соответствующей системой управления базами данных
Первоначально SQL был основным средством доступа пользователя к информации базы данных
Первоначально SQL позволял выполнять следующие операции с таблицами БД:
создание новой таблицы
добавление записей в таблицу
изменение содержимого записей
удаление записей из таблицы
чтение записей из одной или нескольких таблиц
изменение структур таблиц
По мере развития СУБД SQL усложнился и обогатился новыми конструкциями типа:
индексы
представления
триггеры
хранимые процедуры
SQL стал приобретать черты, свойственные языкам программирования
На SQL реализуется и простая бизнес-логика, если текущей БД достаточно для ее реализации
Сейчас SQL - это инструмент разработчика, а не конечного пользователя
Строгая математическая основа
Реляционная модель данных
реляционная алгебра
реляционное исчисление
Стандарты
ANSI SQL-86 – SQL:2019
Большое количество людей знают SQL
Производители СУБД реализуют поддержку SQL для расширения количества пользователей
SQL Dialect != SQL Standard.
Не все производители RDBMS реализуют SQL Standard.
Поэтому стоит учить и использовать SQL Standard, а не SQL Dialect конкретного производителя.
Популярные диалекты:
PL/pgSQL для PostgreSQL
T-SQL для SQL Server
PL/SQL для Oracle® Database
DDL (Data Definition Language)
DQL (Data Query Language)
DML (Data Manipulation Language)
DCL (Data Control Language)
TCL (Transaction Control Language)
DDL (Data Definition Language) - язык определения данных;
используется для определения структур хранящихся в БД данных
Операторы DDL позволяют создавать, изменять и удалять объекты в БД.
Допустимые типы объектов зависят от используемой СУБД и обычно включают базы данных, пользователей, таблицы, представления, хранимые процедуры и ряд более вспомогательных объектов типа роли и индексы
DQL (Data Query Language) - язык запросов данных;
используется для извлечения данных из таблиц
DML (Data Manipulation Language) - язык манипуляции данными;
используется для вставки, изменения и удаления данных в таблицах
DCL (Data Control Language) - язык определения доступа к данным;
используется для контроля доступа к информации БД.
Операторы DCL определяют привилегии пользователя и позволяют выдавать и отбирать права на использование DDL и DML определенных операторов к определенным объектам БД.
TCL (Transaction Control Language)- язык управления транзакциями;
используется для контроля обработки транзакций в БД.
Операторы TCL включают, как правило, оператор COMMIT
для сохранения изменений, сделанных в ходе транзакции, и ROLLBACK
для их отмены.
Оператор SAVEPOINT
можно использовать для разбиения транзакции на несколько частей, и, в зависимости от определенных условий, часть из них "откатить".
База данных/Database - это упорядоченный набор структурированной информации или данных, необходимых для данной предметной области.
Схема/Schema с точки зрения базы данных представляет собой контейнер объектов типа таблиц, триггеров, хранимых процедур и т.п.
Schema создается внутри объекта Database.
Сервер может управлять несколькими Databases, каждая из которых может включать несколько Schemas.
Schema не связана с учетной записью пользователя.
Понятие Schema имеет тождественный смысл с Database.
Database является контейнером объектов, к которым пользователь получает доступ.
Начиная с версии 2005 жесткая связь между пользователями и схемами была отменена.
Пользователи могут получить доступ на выполнение определенных операций с объектами схемы:
чтение
запись
обновление
выполнение
Schema привязывается к пользователю
Наименование схемы, как правило, является учетной записью пользователя
Схема создается при создании пользователем первого объекта, и все последующие объекты созданные этим пользователем становятся частью этой схемы.
Кроме этого она позволяет создавать схему как контейнер одновременно с объектами базы данных.
Boolean types
Character types
Integer types
Decimal types
Binary data
Date/time types