SQL для начинающих. DML, DDL, DCL, TCL
@stoic_ftrSQL (Structured Query Language) — это язык запросов, предназначенный для управления данными в реляционных базах данных. Он позволяет добавлять, извлекать, изменять и удалять данные, а также управлять структурой базы данных и правами пользователей. Для лучшего понимания SQL важно разобраться с его основными компонентами, которые разделяются на несколько категорий:
1. DML (Data Manipulation Language) — Язык управления данными
DML — это команды, которые позволяют работать с данными в таблицах: выбирать, добавлять, изменять и удалять их. Основные команды DML:
1.1. SELECT — выборка данных
Команда SELECT используется для извлечения данных из таблицы.
Пример: Допустим, у нас есть таблица customers, где хранятся данные о клиентах. Мы хотим выбрать всех клиентов и их адреса.
SELECT name, address FROM customers;
Этот запрос вернет список имён клиентов и их адресов.
1.2. INSERT — добавление данных
Команда INSERT добавляет новые строки в таблицу.
Пример: Добавим нового клиента в таблицу customers:
INSERT INTO customers (name, address)
VALUES ('Иван Иванов', 'Москва, ул. Ленина, 1');
Теперь в таблице появится новая строка с именем Иван Иванов и адресом Москва, ул. Ленина, 1.
1.3. UPDATE — обновление данных
Команда UPDATE позволяет изменить существующие данные.
Пример: Изменим адрес клиента Иван Иванов:
UPDATE customers SET address = 'Москва, ул. Пушкина, 10' WHERE name = 'Иван Иванов';
Этот запрос обновит адрес Ивана Иванова на новый.
1.4. DELETE — удаление данных
Команда DELETE удаляет данные из таблицы.
Пример: Удалим запись о клиенте Иван Иванов:
DELETE FROM customers WHERE name = 'Иван Иванов';
Этот запрос удалит все строки, где имя клиента — Иван Иванов.
2. DDL (Data Definition Language) — Язык определения данных
DDL — это команды для создания, изменения и удаления объектов базы данных, таких как таблицы и индексы.
2.1. CREATE — создание таблицы
Команда CREATE создает новую таблицу в базе данных.
Пример: Создадим таблицу для хранения информации о заказах:
CREATE TABLE orders(order_id INT PRIMARY KEY,
customer_id INT,
order_date DATE );
Эта команда создаст таблицу orders с колонками order_id, customer_id и order_date.
2.2. ALTER — изменение структуры таблицы
Команда ALTER изменяет структуру существующей таблицы.
Пример: Добавим новую колонку в таблицу orders:
ALTER TABLE orders ADD total_amount DECIMAL(10, 2);
Теперь в таблице orders появится новая колонка total_amount для хранения суммы заказа.
2.3. DROP — удаление таблицы
Команда DROP удаляет таблицу из базы данных.
Пример: Удалим таблицу orders:
DROP TABLE orders;
Эта команда полностью удалит таблицу orders и все её данные.
3. DCL (Data Control Language) — Язык управления доступом
DCL — это команды для управления правами доступа к данным в базе данных.
3.1. GRANT — предоставление прав
Команда GRANT позволяет администратору базы данных предоставить пользователю определенные права.
Пример: Предоставим пользователю user1 право на выборку данных из таблицы customers:
GRANT SELECT ON customers TO user1;
Теперь пользователь user1 сможет выполнять запросы SELECT для таблицы customers.
3.2. REVOKE — отзыв прав
Команда REVOKE позволяет отозвать ранее предоставленные права.
Пример: Отзовем у пользователя user1 право на выборку данных из таблицы customers:
REVOKE SELECT ON customers FROM user1;
Теперь пользователь user1 не сможет выполнять запросы SELECT для таблицы customers.
4. TCL (Transaction Control Language) — Язык управления транзакциями
TCL — это команды для управления транзакциями, которые помогают гарантировать целостность данных.
4.1. BEGIN TRANSACTION — начало транзакции
Команда начинает новую транзакцию. Все изменения, сделанные в её рамках, можно подтвердить или отменить.
4.2. COMMIT — подтверждение транзакции
Команда COMMIT завершает транзакцию, фиксируя все изменения в базе данных.
Пример:
BEGIN TRANSACTION; UPDATE customers SET address = 'Москва, ул. Тверская, 5' WHERE name = 'Иван Иванов'; COMMIT;
Этот набор команд изменяет адрес клиента и сохраняет изменения в базе данных.
4.3. ROLLBACK — откат транзакции
Команда ROLLBACK отменяет все изменения, сделанные в рамках транзакции.
Пример:
BEGIN TRANSACTION; UPDATE customers SET address = 'Москва, ул. Тверская, 5' WHERE name = 'Иван Иванов'; ROLLBACK;
Здесь изменения адреса не будут сохранены, так как выполнен откат транзакции.
ТОП-5 вопросов на собеседовании по SQL:
1. Что такое транзакция и как работают команды COMMIT и ROLLBACK?
Транзакция — это последовательность одной или нескольких операций SQL, которые выполняются как единое целое. Транзакция гарантирует, что все операции либо завершатся успешно, либо будут отменены, если возникнет ошибка. Это обеспечивает целостность данных в базе.
COMMIT: Подтверждает все изменения, сделанные в рамках транзакции, и сохраняет их в базе данных.
Пример:
BEGIN TRANSACTION; UPDATE customers SET address = 'Москва, ул. Ленина, 1' WHERE customer_id = 1; COMMIT;
Здесь изменения адреса клиента сохранятся после выполнения COMMIT.
ROLLBACK: Отменяет все изменения, сделанные в рамках транзакции, и возвращает данные к состоянию до начала транзакции.
Пример:
BEGIN TRANSACTION; UPDATE customers SET address = 'Москва, ул. Ленина, 1' WHERE customer_id = 1; ROLLBACK;
В данном примере изменения не будут сохранены, так как выполнен ROLLBACK.
Транзакции гарантируют, что база данных останется в согласованном состоянии, даже если возникнет ошибка.
2. Что подразумевается под СУБД? Какие существуют типы СУБД?
База данных — структурированная коллекция данных. Система управления базами данных (СУБД) — программное обеспечение, которое взаимодействует с пользователем, приложениями и самой базой данных для сбора и анализа данных. СУБД позволяет пользователю взаимодействовать с базой данных. Данные, хранящиеся в базе данных, могут быть изменены, извлечены и удалены. Они могут быть любых типов, таких как строки, числа, изображения и т. д.
Существует два типа СУБД:
- Реляционная система управления базами данных: данные хранятся в отношениях (таблицах). Пример — MySQL.
- Нереляционная система управления базами данных: не существует понятия отношений, кортежей и атрибутов. Пример — Mongo.
3. В чем разница между типом данных CHAR и VARCHAR в SQL?
И Char, и Varchar служат символьными типами данных, но varchar используется для строк символов переменной длины, тогда как Char используется для строк фиксированной длины. Например, char(10) может хранить только 10 символов и не сможет хранить строку любой другой длины, тогда как varchar(10) может хранить строку любой длины до 10, т.е. например 6, 8 или 2
4. Что такое ограничения (Constraints)?
Ограничения (constraints) используются для указания ограничения на тип данных таблицы. Они могут быть указаны при создании или изменении таблицы. Пример ограничений:
- NOT NULL - значение не может быть NULL
; - CHECK - значения столбца должны соответствовать заданным условиям;
- DEFAULT - предоставляет столбцу значения по умолчанию;
- UNIQUE - гарантирует уникальность значений в столбце;
- PRIMARY KEY - первичный ключ, который используется в качестве основного ключа и может быть использован для связи с дочерней таблицей, содержащей внешний ключ;
- FOREIGN KEY - беспечивает связь двух таблиц. По сути, это поле или несколько полей, которые ссылаются на
PRIMARY KEYв родительской таблице.
5. Что такое СУБД?
Допустим, есть большая база данных, которой пользуются многие сотрудники: кто-то ищет информацию, а кто-то изменяет или даже удаляет её. Чтобы правильно обрабатывать все эти запросы, нужно специальное программное обеспечение, и именно такое ПО получило название системы управления базами данных (СУБД).