Похожие презентации:
Без имени 1 (1)
1.
SQLСтруктура языка
Выполнили:
Студенты группы б-ИВЧТ-21
Урюпин Илья Александрович
Глебов Борис Васильевич
Проверил:
Доцент кафедры ИКСП
Пчелинцева Елена Германовна
2.
ВведениеSQL (Structured Query
Language) — это
непроцедурный язык
программирования,
предназначенный для работы с
реляционными базами данных
3.
СтандартизацияСтандарт
Год
принятия
Описание
SQL86
1986 Минимальный стандартный синтаксис языка SQL.
SQL89
1989 Вводит набор операторов, которые должны реализовывать все
СУБД, поддерживающие стандарт.
SQL92
1992 Более полный стандарт, охватывающий манипулирование
схемой БД, управление транзакциями и сессиями,
динамический SQL.
SQL99
1999 Стандартизирует объектные и некоторые процедурные
расширения языка SQL.
SQL:2023
2023 Девятая редакция спецификации языка SQL для манипуляции
данными в реляционных СУБД.
4.
Структура языкаData Definition Language
(DDL)
Определение, изменение и удаление
структур базы данных, таких как
таблицы и индексы.
Data Query Language
(DQL)
Выполнение запросов к данным в базе
данных.
Transaction Control Language
(TCL)
Обеспечение целостности данных.
Атомарность, согласованность,
изоляция и долговечность.
Data Manipulation Language
(DML)
Манипулирование данными в базе
данных, включая операции
добавления, обновления, удаления и
выборки данных.
Data Control Language
(DCL)
Управление правами и разрешениями
в базе данным, предоставление или
отзыв доступа к данным.
5.
Операторы DDL – Data Definition LanguageCREATE: используется для создания новых объектов.
CREATE [TEMPORARY (временная) ] TABLE [IF NOT EXISTS (создает,
только если она еще не существует) ] tbl_name
(create_definition,...) (создание столбцов)
[table_options] (настройки таблицы)
[partition_options] (создание разделов)
;
CREATE TABLE IF NOT EXISTS Fruits
(fruit_id int primary key,
name varchar(100)
);
6.
Операторы DDL – Data Definition LanguageCREATE: используется для создания новых объектов.
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
[IGNORE | REPLACE] (как обрабатывать строки с повторяющимися
значениями уникальных ключей)
[AS] query_expression (создание таблицы на основе запросе)
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) } (создание пустой
таблицы на основе другой)
7.
Операторы DDL – Data Definition LanguageALTER: используется для изменения существующих
объектов
ALTER TABLE tbl_name
[alter_option [, alter_option] ...] (изменение настроек
таблицы, изменение/добавление столбцов)
[partition_options] (изменение/добавление разделов)
ALTER TABLE employees
ADD COLUMN birth_date DATE;
рождения
-- Добавление столбца для даты
ALTER TABLE employees MODIFY COLUMN salary DECIMAL(12, 2); -Изменение типа данных столбца зарплаты
ALTER TABLE employees DROP COLUMN birth_date; -- Удаление
столбца даты рождения
8.
Операторы DDL – Data Definition LanguageDROP: используется для удаления объектов.
DROP [TEMPORARY] ( который указывает, что таблица для удаления — временная) TABLE
[IF EXISTS] (не падать с ошибкой)
tbl_name [, tbl_name] ...
[RESTRICT (предотвращает удаление таблицы, если существуют зависимые объекты) |
CASCADE (которая удаляет таблицу вместе с зависимыми объектами, такими как
представления, триггеры и хранимые процедуры) ]
Важно: При удалении таблицы привилегии, предоставленные специально для этой
таблицы, не удаляются автоматически. Их необходимо удалять вручную
DROP TABLE IF NOT EXISTS employeescc;
9.
Операторы DDL – Data Definition LanguageTRUNCATE: используется для удаления всех записей из таблицы,
сохраняя ее структуру
TRUNCATE [TABLE] tbl_name (Для этого требуется DROP привилегия. Логически TRUNCATE
TABLE похож на DELETE оператор, удаляющий все строки, или последовательность DROP
TABLE и CREATE TABLE операторов.
TRUNCATE TABLE employees;
10.
Операторы DDL – Data Definition LanguageRENAME
RENAME TABLE
tbl_name TO new_tbl_name
RENAME TABLE Fruits TO FruitsNew;
11.
INSERTОператоры DML – Data Manipulation
Language
INSERT [
LOW_PRIORITY (удаление будет задерживаться до тех пор, пока не
будет никаких процессов, затрагивающих таблицу.)|
DELAYED (позволяет добавить запись в таблицу сразу же после
того, как эту таблицу перестанет использовать другой поток)|
HIGH_PRIORITY (приоритет вставки)]
[IGNORE] (игнорирование ошибок)
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...) (выбор
разделов)]
[(col_name [, col_name] ...)](перечисление столбцов в
которые вставляем)
{ {VALUES | VALUE} (value_list) [, (value_list)] ...
}(значения для всех столбцов)
[ON DUPLICATE KEY UPDATE assignment_list] (позволяет
обновлять существующие строки , если вставляемая строка
приведет к дублированию значения в UNIQUE индекс или PRIMARY
KEY, речь про атрибуты)
12.
Операторы DML – Data ManipulationLanguage
INSERT - Добавление данных в таблицу
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...) (выбор
разделов)]
SET assignment_list (четкое указание столбец=значение)
[AS row_alias[(col_alias [, col_alias] ...)]]
[ON DUPLICATE KEY UPDATE assignment_list]
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
[PARTITION (partition_name [, partition_name] ...) (выбор
разделов)]
[(col_name [, col_name] ...)]
{ SELECT ... (вставляет строки из запроса SELECT)
| TABLE table_name (целиком из таблицы)
| VALUES row_constructor_list (несколько строк)
}
[ON DUPLICATE KEY UPDATE assignment_list]
13.
Операторы DML – Data ManipulationLanguage
INSERT - Добавление данных в таблицу
value:
{expr | DEFAULT}
value_list:
value [, value] ...
row_constructor_list:
ROW(value_list)[, ROW(value_list)][, ...](для нескольких
строк)
14.
Операторы DML – Data ManipulationLanguage
INSERT - Добавление данных в таблицу
INSERT INTO employees (id, name, salary)
VALUES (1, 'John Doe', 50000);
(Вставка одной строки)
INSERT INTO employees (id, name, salary)
VALUES (2, 'Jane Smith', 60000),
(3, 'Alice Johnson', 55000),
(4, 'Bob Brown', 70000);
(Вставка нескольких строк)
INSERT INTO employees (name, salary)
SELECT name, salary FROM temp_employees WHERE salary > 50000;
(Сами догадайтесь)
15.
Операторы DML – Data ManipulationLanguage
UPDATE - Обновить существующие данные в таблице
UPDATE
[LOW_PRIORITY] (обновление будет задерживаться до тех пор,
пока не будет никаких процессов, затрагивающих таблицу)
[IGNORE] (игнорирование ошибок)
table_reference
SET assignment_list
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
value:
{expr | DEFAULT}
assignment:
col_name = value
assignment_list:
assignment [, assignment] ..
16.
Операторы DML – Data ManipulationLanguage
UPDATE - Обновить существующие данные в таблице
UPDATE employees SET salary = 55000 WHERE id = 1;
зарплату сотрудника с id = 1)
(Обновляет
UPDATE employees SET salary = (SELECT AVG(salary) FROM
employees WHERE position = 'Developer') WHERE position =
'Manager';
17.
Операторы DML – Data ManipulationLanguage
DELETE – Удалить существующие данные в таблице
DELETE
[LOW_PRIORITY] (удаление будет задерживаться до тех пор, пока не будет никаких процессов,
затрагивающих таблицу.)
[QUICK] (Если указан QUICK, в процессе удаления не удаляются листы индекса, что делает
удаление быстрее для таблиц MyISAM(одна из основных(наряду с InnoDB) систем хранения данных
в СУБД))
[IGNORE] (игнорирование ошибок)
FROM tbl_name [[AS] tbl_alias]
[PARTITION (partition_name [, partition_name] ...)]
[WHERE where_condition]
[ORDER BY ...]
[LIMIT row_count]
18.
Операторы DML – Data ManipulationLanguage
DELETE – Удалить существующие данные в таблице
DELETE FROM employees
WHERE id = 5;
(Удаление определённых данных)
DELETE FROM employees;
(Удаление всех данных таблицы)
19.
Оператор DQL – Data QuerySELECT - Используется для извлечения данных из базы
Language
данных.
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY](перед любыми update)
[STRAIGHT_JOIN](считывание таблиц слева направо)
select_expr [, select_expr] ...
[into_option]
[FROM table_references(тут про всякие join)
[PARTITION partition_list](разделы, создаются с таблицей)]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS (window_spec)(создание окна и всякие оконные функции)
[, window_name AS (window_spec)] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}](offset – смещение с первой
возвращаемой строки, row_count – кол-во возвращаемых строк, представлены два варианта
записи)
20.
Оператор DQL – Data QuerySELECT - Используется для извлечения данных из базы
Language
данных.
SELECT first_name, last_name, email
FROM users
WHERE age > 18
ORDER BY last_name ASC;
21.
Оператор DCL – Data ControlGRANT - Назначает новые привилегии учетной записи
Language
пользователя, предоставляя доступ к определенным
объектам, действиям или функциям базы данных.
GRANT
priv_type(тип привилегии) [(column_list) (список столбцов, к которым применятся)]
[, priv_type [(column_list)]] ...
ON [object_type](к чему применяются привилегии) priv_level (предоставить привилегии) –
либо одно, либо другое
TO user_or_role [, user_or_role] ...(предоставить роли) – либо одно, либо другое
[WITH GRANT OPTION](возможность передавать привилегии другим пользователям или ролям)
[AS user(от имени кого выполняется команда)
[WITH ROLE
DEFAULT(по умолчанию)
| NONE(не использует никакие роли)
| ALL
| ALL EXCEPT role [, role ] ...(все кроме указанных)
| role [, role ] ...(конкретные роли)]
]
}
22.
Оператор DCL – Data ControlGRANT - Назначает новые привилегии учетной записи
Language
пользователя, предоставляя доступ к определенным
объектам, действиям или функциям базы данных.
priv_level: {
*(Все объекты в текущей базе данных)
| *.*(Все объекты во всех базах данных)
| db_name.*(Все объекты в указанной базе данных)
| db_name.tbl_name(Конкретная таблица в указанной базе данных)
| tbl_name(Конкретная таблица в текущей базе данных)
| db_name.routine_name(Конкретная функция или процедура в указанной базе данных)
}
GRANT SELECT, INSERT, UPDATE
ON employees
TO user_name;
23.
Оператор DCL – Data ControlREVOKE - Удаляет ранее предоставленные привилегии
Language
из учетной записи пользователя, лишая его доступа к
определенным объектам или действиям базы данных.
REVOKE [IF EXISTS](если привилегии не существует, выполнить без ошибок)
priv_type [(column_list)](что отзываем и, если, нужно список столбцов)
[, priv_type [(column_list)]] ...
ON [object_type] priv_level(у какого объекта и на каком уровне)
FROM user_or_role [, user_or_role] ...(у кого: пользователь или роль)
[IGNORE UNKNOWN USER](если указанный пользователь или роль не существует, выполнить без
ошибок)
(для отзыва всех привилегий)
REVOKE [IF EXISTS] ALL [PRIVILEGES], GRANT OPTION
FROM user_or_role [, user_or_role] ...
[IGNORE UNKNOWN USER]
(для отзыва ролей)
24.
Оператор DCL – Data ControlREVOKE - Удаляет ранее предоставленные привилегии
Language
из учетной записи пользователя, лишая его доступа к
определенным объектам или действиям базы данных.
REVOKE [IF EXISTS] role [, role ] ...
FROM user_or_role [, user_or_role ] ...
[IGNORE UNKNOWN USER]
REVOKE SELECT, INSERT
ON employees
FROM user_name;
REVOKE ALL PRIVILEGES
ON employees
FROM user_name;
25.
Оператор TCL – Transaction ControlLanguage
BEGIN TRANSACTION - Начинает новую транзакцию
COMMIT - Сохраняет все изменения, внесенные во
время транзакции.
ROLLBACK - Отменяет все изменения, сделанные во
время транзакции.
SAVEPOINT TRANSACTION - Создает точку сохранения
в текущей транзакции.
26.
Оператор TCL – Transaction ControlLanguage
START TRANSACTION
[transaction_characteristic [, transaction_characteristic] ...]
transaction_characteristic: {
WITH CONSISTENT SNAPSHOT(Модификатор не изменяет
текущий уровень изоляции транзакции, поэтому он обеспечивает
согласованный снимок только в том случае, если текущий уровень
изоляции позволяет выполнять согласованное чтение. Единственный
уровень изоляции, который допускает согласованное чтение, —
это REAPEATABLE READ. Для всех остальных уровней изоляции
предложение WITH CONSISTENT SNAPSHOT игнорируется. При
игнорировании предложения WITH CONSISTENT SNAPSHOT генерируется
предупреждение.)
| READ WRITE(по умолчанию)
| READ ONLY
}
27.
Оператор TCL – Transaction ControlLanguage
BEGIN [WORK](служит для уточнения, в некоторых опускается)
COMMIT [WORK] [AND [NO] CHAIN](указывает, начинаем ли новую
транзакцию) [[NO(блокирует)] RELEASE(освобождает)](указывает, что
происходит с ресурсами после завершения транзакции)
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}(неявное преобразование в транзакцию)
SAVEPOINT identifier(устанавливает точку сохранения с именем
identifier)
ROLLBACK [WORK] TO [SAVEPOINT](служит для уточнения, в некоторых
опускается) identifier
RELEASE SAVEPOINT identifier(удаляет именованную точку сохранения
из набора точек сохранения текущей транзакции. Коммит или откат не
выполняются. Если точка сохранения не существует, возникает ошибка.
Все точки сохранения текущей транзакции удаляются, если вы
выполняете COMMIT или ROLLBACK без указания точки сохранения)
28.
Оператор TCL – Transaction ControlLanguage
SET [GLOBAL | SESSION](без указания применяется только к следующей транзакции)
TRANSACTION
transaction_characteristic [, transaction_characteristic] ...
transaction_characteristic: {
ISOLATION LEVEL level
| access_mode
}
level: {
REPEATABLE READ(установлен по умолчанию, любые строки, которые считываются в
контексте транзакции, будут выглядеть такими же при последовательных операциях чтения в
пределах одной и той же транзакции)
| READ COMMITTED(видны только зафиксированные изменения на начало транзакции)
| READ UNCOMMITTED(видны промежуточные результаты чужих транзакций)
| SERIALIZABLE(блокирует каждую строку, которую читает)
}
access_mode: {
READ WRITE
| READ ONLY
}
29.
Оператор TCL – Transaction ControlLanguage
START TRANSACTION
[transaction_characteristic [, transaction_characteristic] ...]
transaction_characteristic: {
WITH CONSISTENT SNAPSHOT(Модификатор не изменяет
текущий уровень изоляции транзакции, поэтому он обеспечивает
согласованный снимок только в том случае, если текущий уровень
изоляции позволяет выполнять согласованное чтение. Единственный
уровень изоляции, который допускает согласованное чтение, —
это REAPEATABLE READ. Для всех остальных уровней изоляции
предложение WITH CONSISTENT SNAPSHOT игнорируется. При
игнорировании предложения WITH CONSISTENT SNAPSHOT генерируется
предупреждение.)
| READ WRITE(по умолчанию)
| READ ONLY
}