SQL для начинающих. DML, DDL, DCL, TCL

SQL для начинающих. DML, DDL, DCL, TCL

@stoic_ftr

SQL (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. Что такое СУБД?

Допустим, есть большая база данных, которой пользуются многие сотрудники: кто-то ищет информацию, а кто-то изменяет или даже удаляет её. Чтобы правильно обрабатывать все эти запросы, нужно специальное программное обеспечение, и именно такое ПО получило название системы управления базами данных (СУБД).

Report Page