SQL Structured Query Language
SQL (Structured Query Language — язык структурированных запросов) - это непроцедурный язык программирования,
используемый для работы с информацией реляционной базы данных, которая управляется соответствующей системой
управления базами данных (СУБД).
Первоначально SQL был основным средством доступа пользователя к информации базы данных и позволял
выполнять следующие операции с таблицами БД:
- создание новой таблицы;
- добавление записей в таблицу;
- изменение содержимого записей;
- удаление записей из таблицы;
- чтение записей из одной или нескольких таблиц;
- изменение структур таблиц.
По мере развития СУБД SQL усложнился и обогатился новыми конструкциями типа индексы, представления,
триггеры, хранимые процедуры — и стал приобретать черты, свойственные языкам программирования. Изначально SQL
создавался как простой стандартизированный язык извлечения и управления данными, содержащимися в реляционной
СУБД. Но со временем он усложнился настолько, что превратился в инструмент разработчика, а не конечного
пользователя.
Таким образом использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению
операций над всеми записями, входящими в набор.
SQL состоит из четырех отдельных частей:
- DDL (Data Definition Language) - язык определения данных; используется для определения
структур хранящихся в БД данных. Операторы DDL позволяют создавать, изменять и удалять
объекты в БД. Допустимые типы объектов зависят от используемой СУБД и обычно включают
базы данных, пользователей, таблицы, представления, хранимые процедуры и ряд более
вспомогательных объектов типа роли и индексы. Список некоторых операторов :
- Операторы DDL (Data Definition Language) - операторы определения объектов базы данных
- CREATE SCHEMA - создать схему БД;Ц
- DROP SHEMA - удалить схему БД;
- CREATE TABLE - создать таблицу;
- ALTER TABLE - изменить структуру таблицы;
- DROP TABLE - удалить таблицу;
- CREATE DATABASE - создать базу данных;
- DROP DATABASE - удалить базу данных;
- CREATE SEQUENCE - создать последовательность;
- DROP SEQUENCE - удалить последовательность;
- CREATE VIEW - создать представление;
- DROP VIEW - удалить представление;
- CREATE INDEX - создать индекс;
- DROP INDEX - удалить индекс;
- CREATE CONSTRAINT - создать ограничение (Primary Key, Foreign Key);
- DROP CONSTRAINT - удалить ограничение (Primary Key, Foreign Key).
- DML (Data Manipulation Language) - язык манипуляции данными; используется для извлечения,
вставки, изменения и удаления данных в таблицах. Операторы DML :
- SELECT - чтение инфомации (из одной или нескольких таблиц);
- INSERT - добавить строки в таблицу;
- UPDATE - изменить строки в таблице;
- DELETE - удалить строки в таблице;
- DCL (Data Control Language) - язык определения доступа к данным; используется для контроля
доступа к информации БД. Операторы DCL определяют привилегии пользователя и позволяют выдавать
и отбирать права на использование DDL и DML определенных операторов к определенным объектам БД.
- GRANT - предоставление доступа пользователю или приложению на манипулирование объектами;
- DENY — явный запрет доступа для пользователя;
- REVOKE - отмена запрета или разрешения пользователя.
- TCL (Transaction Control Language) - язык управления транзакциями; используется для контроля
обработки транзакций в БД. Операторы TCL включают, как правило, оператор commit для сохранения
изменений, сделанных в ходе транзакции, и rollback для их отмены. Оператор savepoint можно
использовать для разбиения транзакции на несколько частей, и, в зависимости от определенных
условий, часть из них "откатить".
- BEGIN TRANSACTION — начать транзакцию;
- COMMIT - зафиксировать внесенные изменения;
- ROLLBACK - откатить внесенные изменения.
Необходимо отметить, что SQL реализует декларативную парадигму программирования: с помощью
данного языка пользователь описывает запрос, а СУБД принимает решение, как этот запрос выполнить, т.е.
планирует элементарные операции, необходимые для выполнения данного запроса.
Примеры запросов SQL
Data Definition Language DDL
/* Создание таблицы students с полями id, name, group. ID — первичный ключ.
Сравнение в utf8, движок InnoDB. */
CREATE TABLE students (
id INT 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=InnoDB;
/* Добавление в таблицу students поля "date birth" после поля ID с
разрешением не заполненных значений. */
ALTER TABLE students
ADD COLUMN date_birth DATE NULL;
-- Удаление таблицы studets.
DROP TABLE studets;
Data Manipulation Language DML
-- Вставка строки в таблицу books
INSERT INTO books (title, author, description)
VALUES ('12 стульев', 'Ильф, Петров', 'Книга о преприимчивом авантюристе');
-- Чтение заголовка и описания книг из таблицы books
SELECT title, description
FROM books;
-- Изменение строки с ID равным 4
UPDATE books
SET author = 'Ильф и Петров'
WHERE id = 4;
-- Удаление записи с ID равным 12
DELETE FROM books
WHERE id = 12;
Data Control Language DCL
-- Предоставление права чтения таблицы students пользователю alex.
GRANT SELECT ON students TO alex;
-- Запрет права выборки из таблицы orders пользователя alex.
DENY SELECT ON orders TO alex;
-- Отменить запрет.
REVOKE SELECT ON total FROM piter;
Transaction Control Language TCL
-- Добавление новой строки в таблицу books. Удаление записи. Откатить все изменения.
BEGIN TRANSACTION;
INSERT INTO books (id, title, author, year, description)
VALUES ('О вреде алкоголя', 'Лев Медведев', 2001, 'Никто не выжил');
ROLLBACK;
-- Добавление новой строки в таблицу books. Принять изменения.
BEGIN TRANSACTION;
INSERT INTO books (id, title, author, year, description)
VALUES ('О вреде алкоголя', 'Лев Медведев', 2003, 'Размышления о мире сквозь призму стакана.');
DELETE FROM books WHERE id=3;
COMMIT;
|