Материал: Письменные лекции по дисциплине «Базы данных»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

2.7.4. RIGHT JOIN

RIGHT JOIN выполняет те же самые функции, что и LEFT JOIN, за исключением того, что правая таблица будет прочитана первой. Таким образом, если в запросах из предыдущей главы LEFT заменить на RIGHT, то таблица результатов, грубо говоря, отразится по вертикали. То есть, в результате вместо значений TableA будут записи TableB и наоборот.

2.8. Изменение таблицы Переименование таблицы:

ALTER TABLE "Все заказы(кп)"

RENAME TO "Все заказы(кп1)"

Аналогичный результат может быть получен следующим образом:

RENAME "Все заказы(кп)" TO "Все заказы(кп1)"

Добавление нового поля:

ALTER TABLE "Клиент(кп)"

ADD ( "Образование" CHAR(20) )

Удаление поля:

ALTER TABLE "Клиент(кп)"

DROP ("Образование")

Переименование поля:

ALTER TABLE "Клиент(кп)"

RENAME column "Образование" TO "Степень"

2.9. Типы данных MySQL

Числовые данные — это все целые числа (без дробной части) и вещественные числа (с дробной частью).

Строковые данные — последовательность символов, заключенная в кавычки. В MySQL в качестве стандарта используются одинарные кавычки и для совместимости с другими базами данных рекомендуется именно их использование.

Календарные данные — тип для обозначение даты и времени, принимает различные формы, например строковую «2007-11-23» или числовую 20071123. Особенностью этого типа данных является их

хранение в едином внутреннем формате, что позволяет производить операции сложения и вычитания, в независимости от внешнего представления.

NULL — специальный тип данных, означает отсутствие информации.

Числовые данные делятся на точечные (это BOOLEAN, INTEGER,

DECIMAL) и приближенные (FLOAT, REAL, DOUBLE PRECISION).

Одни из основных строковых типов данных: CHAR(N) (строгий реальный размер: не больше, не меньше заданного N), VARCHAR(N) (нестрогий реальный размер: не больше заданного N) и TEXT (нестрогий реальный размер вплоть до 2^16-1 символов).

Одни из основных календарных типов данных: DATE (от

'1000-01-01' до '9999-12-31'), TIME (от '-828:59:59' до

'828:59:59') и DATETIME (от '1000-01-01 00:00:00' до

'9999-12-31 00:00:00').

Подробнее: https://kbss.ru/blog/bd_mysql/153.html

2.10. Параллелизм Параллелизм — возможность параллельной обработки в СУБД

многих параллельных транзакций к одним и тем же данным в одно и то же время.

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

Лекция 3. Хранимые процедуры и функции

Хранимая процедура MySQL;

Переменные;

Параметры процедуры;

Операторы IF и CASE;

Оператор RETURN.

3.1. Хранимая процедура MySQL

Хранимая процедура MySQL представляет собой подпрограмму, которая хранится в базе данных. Она содержит имя, список параметров и операторы SQL. Все популярные системы управления базами данных поддерживают хранимые процедуры. Они были введены в MySQL 5.

Существует два типа процедур (подпрограмм): хранимые процедуры (не возвращающие значения) и функции, возвращающие значения, которые используются в операторах SQL (например, pi()).

Основное отличие заключается в том, что функции могут использоваться как любое выражение в операторах SQL (простой вызов: pi()), а хранимые процедуры должны вызываться с помощью оператора

CALL (CALL proc).

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

имя_базы_данных.имя_хранимой_процедуры

Полный синтаксис

CREATE [DEFINER = { user | CURRENT_USER }]

PROCEDURE имя_процедуры ([параметры_процедуры[,...]]) [характеристики ...] тело_подпрограммы

параметры_процедуры: [ IN | OUT | INOUT ] имя_параметра type type: Любой валидный тип данных MySQL

характеристики: COMMENT 'string' | LANGUAGE SQL

| [NOT] DETERMINISTIC

| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }

| SQL SECURITY { DEFINER | INVOKER }

тело_подпрограммы: Валидный оператор программы SQL

Можно ещё внутрь хранимой функции и хранимой процедуры добавлять ключевые слова BEGIN и END для того, чтобы выделить тело подпрограммы.

IN — параметр на вход (чтение), OUT — параметр на выход (запись), INOUT — параметр, который будет меняться в течение выполнения процедуры (и чтение, и запись).

Достоинства хранимой процедуры:

упрощает управление кодом;

позволяет ограничить доступ к данным в таблицах и уменьшить вероятность нежелательных действий в отношении этих данных;

обычно выполняются быстрее, чем обычные SQL-инструкции, так как код процедур компилируется один раз при первом ее запуске, а затем сохраняется в скомпилированной форме.

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

Проверка версии MySQL

mysql>SELECT VERSION();

+

-----------

+

| VERSION() |

+-----------

 

+

| 5.6.12

|

+-----------

 

+

1

row in set (0.00 sec)

Разделитель — символ или строка символов, которая используется для закрытия оператора SQL. По умолчанию в качестве разделителя используется точка с запятой (;). Но это вызывает проблемы в хранимых

процедурах и триггерах MySQL, поскольку она может иметь много операторов, и каждый должен заканчиваться точкой с запятой. Поэтому в качестве разделителя будем использовать двойной знак доллара — $$. Чтобы позже снова использовать в качестве разделителя ; выполните команду DELIMITER ; $$. Ниже приведен код для смены разделителя:

mysql> DELIMITER $$ ;

Теперь DELIMITER по умолчанию — $$.

mysql> DELIMITER ; $$

Теперь DELIMITER по умолчанию — ;.

Пример процедуры MySQL:

mysql> DELIMITER $$;

mysql> CREATE PROCEDURE job_data() -> SELECT * FROM JOBS; $$

Query OK, 0 rows affected (0.00 sec)

Пояснение:

Команда CREATE PROCEDURE создает хранимую процедуру;

Следующая часть — это имя процедуры job_data;

Имена процедур не чувствительны к регистру, поэтому job_data равносильно JOB_DATA;

Нельзя использовать две процедуры с одним именем в одной и той же базе данных.

Можно использовать имена в формате

имя_процедуры.имя_базы_данных, например, hr.job_data.

Имена процедур могут быть разделены. Если имя разделено, оно может содержать пробелы.

Максимальная длина имени процедуры составляет 64 символа.

Избегайте использования имен встроенных функций MySQL.