
- •Введение
- •Прочие команды
- •Структура базы данных
- •Ключи, ограничения
- •Индексы
- •Представления
- •Процедуры и функции
- •Триггеры
- •Пользователи и сессии
- •Инструментарий скачать субд
- •Инсталляция
- •Выполнение запросов
- •Использование примеров
- •Комментарий
- •Идентификаторы
- •Обзор типов данных
- •Интервал времени
- •Литералы
- •Выражения и операции
- •Строковые операции
- •Алгебраические операции
- •Операции отношения
- •Логические операции и предикаты
- •Условные выражения
- •Прочие операции
- •Обзор функций
- •Математические функции
- •Строковые функции
- •Работа с датами
- •Преобразование типов
- •Функции Oracle
- •Функции PostgreSql
- •Функции MySql
- •Создание таблицы
- •Значения полей по умолчанию
- •Ключи и ограничения
- •Настройка внешнего ключа
- •Создание по выборке
- •Дополнительные параметры таблицы
- •Изменение, удаление таблицы
- •Переименование таблицы или ее столбца
- •Добавление/удаление столбца
- •Первичный ключ
- •Уникальный ключ
- •Внешний ключ
- •Безошибочное удаление таблиц
- •Добавление записей
- •Значения по умолчанию
- •Подзапросы
- •Вставка по условию
- •Обновление записей
- •Обновление подзапросом
- •Обновление по данным другой таблицы
- •Удаление записей
- •Выборка записей
- •Выборка констант
- •Выборка по столбцам таблиц
- •Синонимы (алиасы)
- •Уникальные записи
- •Выборка по условию
- •Выборка по группам
- •Соединения
- •Агрегатные функции, группировка данных
- •Операции над выборками
- •Добавление итогов
- •Нумерация записей
- •Обеспечение уникальности первичного ключа
- •Столбцы с автоинкрементом
- •Индексы
- •Представления
- •Динамический sql (dsql)
- •Процедурные операторы блоковая структура кода
- •Присвоение
- •Условный оператор
- •Оператор выбора
- •Безусловный цикл
- •Цикл с предусловием
- •Цикл по счетчику
- •Цикл по элементам
- •Операторы выхода/продолжения итерации
- •Выборка в переменные
- •Хранимые процедуры
- •Вызов процедур
- •Исключения
- •Курсоры
- •Триггеры
- •Числа прописью
- •Транзакции, конкурирующие запросы
- •Управление аккаунтами пользователи
- •Права доступа
- •Права доступа MySql
- •Права доступа PostgreSql
- •Права доступа Oracle
- •Удаление прав доступа
- •Роли PostgreSql
- •Роли Oracle
- •Роли MySql
- •Файловый вывод/ввод
- •Информация о базе данных
Справочник по SQL
http://darkraha.com/rus/sql/index.php
http://www.w3schools.com/sql/default.asp
SQL Задачи и решения Учебник. Сергей Моисеенко.
Интерактивный учебник по SQL
Введение 3
DDL (Data Definition Language) 3
DML (Data Manipulation Language) 3
прочие команды 4
Структура базы данных 4
ключи, ограничения 4
индексы 5
представления 5
процедуры и функции 5
триггеры 5
схема 6
пользователи и сессии 6
Инструментарий 6
скачать СУБД 6
инсталляция 6
выполнение запросов 7
использование примеров 7
Комментарий 7
Идентификаторы 8
Обзор типов данных 8
Интервал времени 9
Oracle 9
PostgreSQL 9
MySQL 10
Литералы 11
Выражения и операции 11
строковые операции 11
алгебраические операции 11
операции отношения 12
логические операции и предикаты 12
условные выражения 12
прочие операции 13
Обзор функций 13
математические функции 13
строковые функции 14
работа с датами 14
Преобразование типов 15
функции Oracle 16
функции PostgreSQL 17
функции MySQL 17
Создание таблицы 18
значения полей по умолчанию 18
ключи и ограничения 18
настройка внешнего ключа 19
создание по выборке 19
дополнительные параметры таблицы 20
Изменение, удаление таблицы 20
переименование таблицы или ее столбца 20
добавление/удаление столбца 20
первичный ключ 20
уникальный ключ 21
внешний ключ 21
безошибочное удаление таблиц 21
Добавление записей 21
значения по умолчанию 22
подзапросы 22
вставка по условию 22
Обновление записей 23
обновление подзапросом 23
обновление по данным другой таблицы 23
Удаление записей 24
Выборка записей 24
выборка констант 25
выборка по столбцам таблиц 25
синонимы (алиасы) 26
уникальные записи 26
выборка по условию 27
выборка по группам 27
Соединения 27
Агрегатные функции, группировка данных 29
Операции над выборками 30
Добавление итогов 31
Нумерация записей 32
Oracle 32
MySQL 33
PostgreSQL 33
Обеспечение уникальности первичного ключа 33
столбцы с автоинкрементом 34
Индексы 35
Представления 35
Динамический SQL (DSQL) 36
Процедурные операторы 36
блоковая структура кода 36
присвоение 37
условный оператор 37
оператор выбора 37
метки 38
безусловный цикл 38
цикл с предусловием 38
цикл по счетчику 39
цикл по элементам 39
операторы выхода/продолжения итерации 39
Выборка в переменные 40
Хранимые процедуры 40
Oracle 41
PostgreSQL 41
MySQL 42
вызов процедур 42
Исключения 42
Oracle 42
PostgreSQL 43
MySQL 43
Курсоры 44
Oracle 44
PostgreSQL 44
MySQL 45
Триггеры 46
Oracle 46
PostgreSQL 47
MySQL 47
Числа прописью 48
Транзакции, конкурирующие запросы 50
Схема 52
PostgreSQL 52
Oracle 53
MySQL 53
Управление аккаунтами 53
пользователи 53
права доступа 54
права доступа MySQL 54
права доступа PostgreSQL 55
права доступа Oracle 56
удаление прав доступа 56
роли 56
роли PostgreSQL 56
роли Oracle 57
роли MySQL 57
Файловый вывод/ввод 58
Oracle 58
MySQL 58
PostgreSQL 59
Информация о базе данных 59
Введение
SQL (Structured Query Language) - язык, разработанный специально для обслуживания реляционных баз данных. Главная цель SQL предоставить интерфейс с базой данных, поэтому он может использоваться всеми видами пользователей:
разработчики приложений;
администраторы базы данных;
простые конечные пользователи (редко).
Очень часто SQL любят называть языком четвертого поколения, в котором программист указывает, что ему нужно, а не как что-то сделать.
Внутри SQL часто выделяют два языка или две группы команд, которые рассмотрены ниже. Также SQL не отвергает процедурное программирование, позволяя создавать процедуры, функции и триггеры. Но эти возможности, как и реализация ООП зависят от конкретной СУБД. В принципе стандарты языка разрабатываются как SQL99 и SQL2003, и возможно в будущем эти различия не станут столь значимыми.
DDL (Data Definition Language)
Команды этой группы управляют структурой базы данных:
создавать, изменять и уничтожать БД и ее объекты (CREATE, ALTER, DROP);
переименовать объекты (RENAME);
стереть все данные в объектах без удаления объектной структуры (TRUNCATE);
добавлять комментарий к объектам БД. (COMMENT).
DML (Data Manipulation Language)
Команды этой группы позволяют запрашивать и обрабатывать данные в существующих объектах:
получить данные из одной и более таблиц (SELECT);
добавлять новые записи в таблицу (INSERT);
изменять данные в таблицах (UPDATE);
изменять или вставлять данные (MERGE);
удалять данные (DELETE).
Команды управления транзакциями позволяют управлять изменениями, сделанные DML командами, другими словами подтвердить или отменить изменение:
применить изменения, т.е. совершить транзакцию (COMMIT);
отменить последние изменения, т.е. сделать откат базы данных с точки сохранения (ROLLBACK);
сохранить текущее состояние базы данных (SAVEPOINT).
Прочие команды
Остальные команды, например управляющие привилегиями (GRANT, REVOKE), можно отнести к административным командам.
Структура базы данных
Большинство современных баз данных (хранилища) являются объектно-реляционными, т.е. множеством объектов, как двухмерные таблицы данных, связанных между собой. Комплекс программ управляющих объектами БД и обеспечивающих ее целостность обычно называют системой управления базой данных, или сокращенно СУБД. Как правило, конечный пользователь БД работает не с СУБД, а со специально разработанными программами с дружественным интерфейсом, скрывающих структуру БД и SQL запросы. Сравнивая с объектно-ориентированным программированием, можно сказать, что каждая таблица задает тип объекта данных, где столбец - свойство объекта. А каждая строка представляет непосредственно экземпляр объекта.
Строку таблицы иногда называют записью таблицы, а ячейку записи полем.
Ключи, ограничения
Для различных служебных целей в таблице можно создать ключи:
первичный ключ (primary key) - множество столбцов, по которым можно уникально идентифицировать запись в таблице. Поля таких столбцов обязательно должны иметь значение и не повторяться. В нашем примере столбец id во всех таблицах может использоваться для первичного ключа;
уникальный ключ (unical key) - множество столбцов, чье общее значение должно быть уникально. Например, если в уникальный ключ входит два столбца, то две записи могут иметь одинаковое значение в первом столбце только в том случае, если значения во втором столбце у них различны;
внешний ключ (foreign key) - определяет ссылку на запись в другой таблице. Значения полей столбца входящего во внешней ключ одной таблицы идентичны значениям полей столбца другой таблицы (обычно это первичный ключ), на которую ссылается ключ. Пустое значение (null) для внешних ключей разрешается, что означает отсутствие ссылки на данный момент. Использование внешних ключей устраняет избыточность информации в базе данных, позволяя не вводить одни и те же данные несколько раз. В нашем примере столбцы fk_author и fk_janr являются внешними ключами, ссылающиеся на первичные ключи таблиц авторов и жанров соответственно. Таблицы без внешних ключей, как таблицы жанров и авторов называют словарями или справочниками.
Кроме ключей обычно позволяется наложить ограничения (constraints) на значения столбцов таблицы. За правильностью обычно следит СУБД. Например, если попытаться вставить в таблицу две записи с одинаковым значением первичного ключа, то сразу возникнет ошибка. То же самое произойдет, если в качестве значения внешнего ключа указать ссылку на не существующую запись или значение поля не удовлетворяет условию ограничения.