ЯЗЫК SQL
Выводы
Реляционный подход к организации баз данных в настоящее время является наиболее распространенным, хотя наряду с общепризнанными достоинствами обладает и рядом недостатков. К числу достоинств реляционного подхода можно отнести:
· наличие небольшого набора абстракций, которые позволяют сравнительно просто моделировать большую часть распространенных предметных областей и допускают точные формальные определения, оставаясь интуитивно понятными;
· наличие простого и в то же время мощного математического аппарата, опирающегося главным образом на теорию множеств и математическую логику и обеспечивающего теоретический базис реляционного подхода к организации баз данных;
· возможность ненавигационного манипулирования данными без необходимости знания конкретной физической организации баз данных во внешней памяти.
В настоящее время основным предметом критики реляционных СУБД является их недостаточная эффективность при использование в нетрадиционных областях (наиболее распространенными примерами которых являются системы автоматизации проектирования), в которых требуются предельно сложные структуры данных. Еще одним часто отмечаемым недостатком реляционных баз данных является невозможность адекватного отражения семантики предметной области. Другими словами, возможности представления знаний о семантической специфике предметной области в реляционных системах ограничены. Современные исследования в области постреляционных систем главным образом посвящены именно устранению этих недостатков.
|
|
Рассматривая вопросы, связанные с БД и СУБД, было бы нелогично оставить в стороне язык баз данных – SQL. Чтобы получить общее представление об его особенностях и возможностях вполне достаточно ограничится перечислением основных операторов языка.
Язык SQL (эта аббревиатура должна произноситься как "сикуель", однако все чаще говорят "эс-ку-эль") в настоящее время является промышленным стандартом, который в большей или меньшей степени поддерживает любая СУБД, претендующая на звание "реляционной".
В начале 70-х годов в компании IBM была разработана экспериментальная СУБД SystemR на основе языка SEQUEL (Structured English Qeury Language – структурированный английский язык запросов), который можно считать непосредственным предшественником SQL. Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. В 1981 году IBM объявила о своем первом, основанном на SQL программном продукте – SQL/DS. Чуть позже к ней присоединились Oracle и другие производители. Первый стандарт языка SQL был принят Американским национальным институтом стандартизации (ANSI) в 1987 (так называемый SQL level 1) и несколько уточнен в 1989 году (SQL level 2). Дальнейшее развитие языка поставщиками СУБД потребовало принятия в 1992 нового расширенного стандарта (ANSI SQL-92 или просто SQL-2). В настоящее время ведется работа по подготовке третьего стандарта SQL, который должен включать элементы объектно-ориентрованного доступа к данным.
|
|
В SQL определены два подмножества языка:
· SQL-DDL (Data Definition Language) – язык определения структур и ограничений целостности баз данных. Сюда относятся команды создания и удаления баз данных; создания, изменения и удаления таблиц; управления пользователями и т.д.
· SQL-DML (Data Manipulation Language) – язык манипулирования данными: добавление, изменение, удаление и извлечение данных, управления транзакциями
Как и большинство языков программирования, SQL реализует стандартный набор типов данных дополненный парой специфических для баз данных типов значений. Перечислим основные типы данных языка:
· Символьные типы данных – содержат буквы, цифры и специальные символы: CHAR или CHAR(n),VARCHAR(n )
· Целые типы данных – поддерживают только целые числа (дробные части и десятичные точки не допускаются): INTEGER или INT,SMALLINT
· Вещественные типы данных – описывают числа с дробной частью: FLOAT и SMALLFLOAT, DECIMAL(p), DECIMAL(p,n)
· Денежные типы данных – описывают, естественно, денежные величины: MONEY(p,n).
· Дата и время – используются для хранения даты, времени и их комбинаций: DATE,TIME,INTERVAL,DATETIME
· Двоичные типы данных – позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.): BINARY,BYTE, BLOB
· Последовательные типы данных – используются для представления возрастающих числовых последовательностей: SERIAL
5.2. DDL: Операторы создания схемы базы данных
Перечислим основные операторы DDL в табл. 3 - 6
Таблица 3 – Операторы базы данных:
Команда | Описание |
Создание базы данных. | CREATE DATABASE <имя_базы_данных> |
Удаление базы данных. | DROP DATABASE <имя_базы_данных> |
Таблица 4 – Операторы модификации таблиц:
Команда | Описание |
Добавить столбцы | ALTER TABLE <имя_таблицы> ADD (<имя_столбца> <тип_столбца> [NOT NULL] [UNIQUE | PRIMARY KEY] [REFERENCES <имя_мастер_таблицы> [<имя_столбца>]],...) |
Удалить столбцы | ALTER TABLE <имя_таблицы> DROP (<имя_столбца>,...) |
Модификация типа столбцов | ALTER TABLE <имя_таблицы> MODIFY (<имя_столбца> <тип_столбца> [NOT NULL] [UNIQUE | PRIMARY KEY] [REFERENCES <имя_мастер_таблицы> <имя_столбца>]],...) |
Таблица 5 – Операторы работы с индексами
Команда | Описание |
Создание индекса | CREATE [UNIQUE] INDEX <имя_индекса> ON <имя_таблицы> (<имя_столбца>,...) [REFERENCES <имя_мастер_таблицы> [<имя_столбца>]],...) |
Удаление индекса | DROP INDEX <имя_индекса> |
Таблица 6 – Операторы управления правами доступа
Команда | Описание |
Операция передачи прав на таблицу | GRANT <тип_права_на_таблицу> ON <имя_таблицы> [<список_столбцов>] TO <имя_пользователя> Типы прав: · SELECT - получение информации из таблицы · UPDATE - изменение информации в таблице · INSERT - добавление записей в таблицу · DELETE - удаление записей из таблицы · INDEX - индексирование таблицы · ALTER - изменение схемы определения таблицы · ALL - все права |
Отмена прав | REVOKE <тип_права_на_таблицу> ON <имя_таблицы> [<список_столбцов>] FROM <имя_пользователя> |