среда, 15 июля 2015 г.

SQL: классификация команд

Существует четыре группы команд:
 DML (Data Manipulation Language ) — работа со строками 
 DDL (Data Definition Language) — работа со структурой базы 
 DCL (Data Control Language) — работа с правами
 TCL (Transaction Control Language) — работа с транзакциями.


Data Manipulation Language (работа со строками)
Приведенные ниже команды группы DML работают исключительно со строками и выполняются преимущественно клиентом:
  • INSERT — добавление строк(и);
  • SELECT — выборка строк(и);
  • UPDATE — изменение строк(и);
  • DELETE— удаление строк(и);
1
2
3
--Вставка строки в таблицу books
INSERT INTO books (title, author, `year`, `description`)
    VALUES ('Лабиринт тайных книг', 'Флавия Эрметес', 2001, 'Книга о книгах');
1
2
3
4
--Выборка заголовка и описания книги с ID равным 5 из таблицы books.
SELECT title, description
    FROM books
        WHERE id=5;
1
2
3
4
--Изменение строки с ID равным 4.
UPDATE books
    SET author = 'Петр Иваныч'
        WHERE  id = 4;
1
2
3
--Удаление записи с ID равным 3.
DELETE FROM books
    WHERE  id=3;

Data Definition Language (работа со структурой базы)
Команды DDL подразумевают под собой создание и организацию структуры как самой БД так и ее объектов. Со строками такая группа операторов не работает вовсе.
  • CREATE — создание объекта (например таблицы);
  • ALTER— изменение объекта (например добавление/изменение полей);
  • DROP — удаление объекта;
1
2
3
4
5
6
7
8
9
10
11
--Создание таблицы students с полями id, name, group. ID — первичный ключ.
--Сравнение в utf8, движок MyISAM.
CREATE TABLE students (
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(255) NOT NULL,
    `group` VARCHAR(255) NULL DEFAULT NULL,
    PRIMARY KEY (`id`)
)
COMMENT='Студенты'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
1
2
3
--Добавление в таблицу students поля "date birth" после поля ID с разрешением не заполненных значений.
ALTER TABLE `students`
    ADD COLUMN `date birth` DATE NULL AFTER `id`;
1
2
--Удаление таблицы studets.
DROP TABLE studets;

Data Control Language (работа с правами доступа)
Следующая группа служит для разграничения прав пользователей, т.к. с одной базой скорее всего будут работать как минимум несколько человек/клиентов. По-умолчанию у новых пользователей прав никаких нет.
  • GRANT — назначения прав пользователю;
  • DENY — явный запрет для пользователя;
  • REVOKE — отменить запрет или разрешение;
1
2
--Назначение права выборки из таблицы student пользователю new_user.
GRANT SELECT ON student TO new_user;
1
2
--Запрет права выборки из таблицы student пользователя new_user.
DENY SELECT ON student TO new_user;
1
2
--Отменить запрет.
REVOKE SELECT ON student FROM new_user;

Transaction Control Language (работа с транзакциями)
Группа команд по работе с транзакциями, в остальном — тема целой статьи.
  • BEGIN TRANSACTION — начать транзакцию;
  • COMMIT — принять изменения внесенные текущей транзакцией;
  • ROLLBACK — откат;
1
2
3
4
5
--Добавление новой строки в таблицу books. Принять изменения.
BEGIN TRANSACTION;
INSERT INTO books (title, author, year, description)
    VALUES ('Новая книга', 'Василий Ежиков', 2005, 'Книга о новом');
COMMIT WORK;
1
2
3
4
5
6
--Добавление новой строки в таблицу books. Удаление записи. Откатить все изменения.
BEGIN TRANSACTION;
INSERT INTO books (title, author, year, description)
    VALUES ('Новая книга', 'Василий Ежиков', 2005, 'Книга о новом');
DELETE FROM books WHERE id=3;
ROLLBACK WORK;

Комментариев нет:

Отправить комментарий