DDL/DCL/TCL
DDL – Data Definition Language
CREATE
// Создать базу данных database
CREATE DATABASE database
// Cоздать таблицу table
CREATE TABLE table (
field INT,
field2 VARCHAR(255),
field3 INT
)
// Cоздать таблицу table c дополнительными параметрами
CREATE TABLE table (
field INT PRIMARY KEY,
field2 VARCHAR(255) NOT NULL,
field3 INT NOT NULL DEFAULT 18
)
ALTER
// Добавить поле field в таблицу table
ALTER TABLE table
ADD field INT NOT NULL
// Переименовать поле field в таблице table
ALTER TABLE table
RENAME COLUMN field TO field_new
// Переименовать таблицу table
ALTER TABLE table
RENAME TO table_new
DROP
// Удалить базу данных database
DROP DATABASE database
// Удалить таблицу table
DROP TABLE table
// Удалить столбец field в таблице table
ALTER TABLE table
DROP COLUMN field
DCL – Data Control Language
GRANT
// Предоставить пользователю user права на чтение в таблице table
GRANT SELECT ON table TO user
// Предоставить пользователю user права на запись в таблицу table
GRANT INSERT ON table TO user
REVOKE
// Отозвать у пользователя user права на чтение в таблице table
REVOKE SELECT ON table TO user
// Отозвать у пользователя user права на запись в таблицу table
REVOKE INSERT ON table TO user
DENY
// DENY > REVOKE
//Запретить пользователю user разрешение на чтение таблицы table
//независимо от того, какие разрешения этот пользователь мог унаследовать от роли
DENY SELECT ON table TO user
TCL – Transaction Control Language
Транзакция — это набор SQL-запросов, выполняемых над данными, которые объединены в атомарную секцию. Это значит, что промежуточные результаты операции не видны для других конкурирующих транзакций — и вся секция будет либо выполнена, либо полностью отменена в случае ошибки.
BEGIN/COMMIT
// Выполнение кода текущей транзакции. Например INSERT в таблицу table
BEGIN TRANSACTION
INSERT INTO table (field1, field2)
VALUES ('value_field1', 'value_field2')
COMMIT
BEGIN/ROLLBACK
// Откатывает текущую транзакцию и отменяет все обновления, сделанные транзакцией
BEGIN TRANSACTION
INSERT INTO table (field1, field2)
VALUES ('value_field1', 'value_field2')
ROLLBACK
Источник:
Last updated
Was this helpful?