Языки манипулирования данными (ямд)

Вид материалаДокументы

Содержание


Стандарты языка SQL.
Все команды SQL сгруппированы на подразделы
DML (Data Manipulation Language)
DQL (Data Query Language)
Средства управления транзакциями.
Средства администрирования данными.
Программный SQL.
Типы данных, используемых в БД MySQL
Дробные числа
Бинарные данные
Дата и время
Идентификаторы MySQL
Подобный материал:
Языки манипулирования данными (ЯМД)


До появления реляционных БД существовали языки манипулирования данными, которые были ориентированны на операции с данными, представленными в виде логических записей файла (списки).

Это требовало от пользователей детального знания об организации хранения данных на магнитных носителях.

Кроме этого процедуры поиска и выборки данных выполнялись очень медленно.

С появлением реляционных БД стали развиваться и языки управления БД.


Первый язык предложил Кодд назывался Alpha. Он был основан на реляционном исчислении.


Затем появились другие реляционные языки.

Делятся на два класса:
  1. Алгебраические языки - запросы выполняются с помощью спец. операций (JOIN - соединить, INTERSECT - пересечь, SUBTRACT - вычесть и т.д.).
  2. Языки исчисления предикатов – эти языки представляют набор правил, с помощью которых записываются новые выражения для определения новых таблиц из заданной совокупности уже существующих таблиц.


В основном разработку ЯМД вели:

IBM разработали языки ISBL, SQL, QBE

Университеты США разработали PIQUE, QUEL


QBE (Query-By-Example - запрос по образцу)

SQL (Structured Query Language - структурированный язык запросов)


ANSI (Американским Национальным Институтом Стандартов)

ISO (МЕЖДУНАРОДНОЙ ОРГАНИЗАЦИЕЙ ПО СТАНДАРТИЗАЦИИ).


Победил язык SQL. Он стал стандартом для систем управления БД.

Большинство коммерческих СУБД расширяют стандарт SQL, расширяя стандарты операторов.

Мы будем изучать стандарт с небольшим расширением SQL.


Стандарты языка SQL.


Международный стандарт 1989 г . (SQL1)

Носил общий характер. В нем не были выделены разделы команд.


Международный стандарт 1992 г . (SQL2)

Появились новые команды, которые:
  • Alter table, Drop table - позволяли манипулировать таблицами.
  • Users, Tables, Views, Columns, Domains, Table_privileges, Table_constraints … - Команды манипулирования структурами таблиц и схемой БД.
  • Create domain имя char(25) . . . - Команды управления доменами
  • Date, Time, Datetime, . . . Появились новые типы данных
  • Управление транзакциями и сессиями
  • Подключение к БД
  • Развитие динамического SQL


Стандарт 1999г. (SQL3)
  • Механизм триггеров
  • Абстрактные типы данных
  • Расширение модели транзакций (контрольные точки, многозвенные транзакций)


Стандарт 2003г. SQL:2003
  • Использование подпрограмм и типов SQL в языке программирования Java
  • XML-документы в среде SQL


Язык SQL может быть использован двумя способами:
  1. Операторы языка SQL встраиваются в язык программирования (вложенный);
  2. Выполнение команды SQL в интерактивном режиме (интерактивный).


Все команды SQL сгруппированы на подразделы:


DDL (Data Definition Language)

Создает объекты БД.


Оператор

Смысл

CREATE TABLE

Создать таблицу

DROP TABLE

Удалить таблицу

ALTER TABLE

Изменить таблицу

CREATE VIEW

Создать представление

ALTER VIEW

Изменить представление

DROP VIEW

Удалить представление

CREATE INDEX

Создать индекс

DROP INDEX

Удалить индекс


DML (Data Manipulation Language)

Команды SQL, которые определяют какие значения представлены в таблице в любой момент времени.


Оператор

Смысл

DELETE

Удалить строки

INSERT

Вставить строку

UPDATE

Обновить строку


DQL (Data Query Language)

Язык запросов. Заменяет все операторы реляционной алгебра. Позволяет сформировать результирующую таблицу в соответствии с запросом.


Оператор

Смысл

SELECT

Выбрать строки


Средства управления транзакциями.

Транзакция - группа последовательных операций, которая представляет собой логическую единицу работы с данными. Транзакция может быть выполнена целиком либо успешно, соблюдая целостность данных и независимо от параллельно идущих других транзакций, либо не выполнена вообще и тогда она не должна произвести никакого эффекта.


Оператор

Смысл

COMMIT

Завершить транзакцию

ROLLBACK

Откатить транзакцию

SAVEPOINT

Сохранить промежуточную точку выполнения транзакции


Средства администрирования данными.

Управления правами доступа.


Оператор

Смысл

ALTER DATABASE

Изменить БД

ALTER DBAREA

Изменить область хранения БД

ALTER PASSWORD

Изменить пароль

CREATE DATABASE

Создать БД

CREATE DBAREA

Создать область хранения

DROP DATABASE

Удалить БД

DROP DBAREA

Удалить область хранения БД

GRANT

Предоставить права

REVOKE

Лишить прав


Программный SQL.

Входит во вложенную форму SQL (до этого были команды интерактивные).


Оператор

Смысл

DECLARE

Определяет курсор для запроса

OPEN

Открыть курсор

FETCH

Считать строку из множества строк, определенных курсором

CLOSE

Закрыть курсор

PREPARE

Подготовить оператор SQL к динамическому выполнению

EXECUTE

Выполнить оператор SQL , ранее подготовленный к динамическому выполнению


Типы данных, используемых в БД MySQL


Целые числа

префикс_INT [UNSIGNED]

UNSIGNED задает поле для хранения беззнаковых чисел (больших или равных 0).


TINYINT - Может хранить числа от -128 до 127

SMALLINT - Диапазон от -32 768 до 32 767

MEDIUMINT - Диапазон от -8 388 608 до 8 388 607

INT - Диапазон от -2 147 483 648 до 2 147 483 647

BIGINT - Диапазон от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807


Дробные числа

Имя_Типа[(length, decimals)] [UNSIGNED]

В () необязательный параметр.

length - количество знакомест (ширина поля), в которых будет размещено дробное число при его передаче;

decimals - количество знаков после десятичной точки, которые будут учитываться;

UNSIGNED - задает беззнаковые числа.


FLOAT - число с плавающей точкой небольшой точности.

DOUBLE - число с плавающей точкой двойной точности.

REAL - синоним для DOUBLE.

DECIMAL - дробное число, хранящееся в виде строки.

NUMERIC - синоним для DECIMAL.

Строки

При поиске по текстовым полям обычно не учитывается регистр. Т.е. строки "Вася" и "ВАСЯ" считаются одинаковыми.


length - от 1 до 255.


VARCHAR (length) [BINARY]


BINARY - строка при запросе SELECT будет сравниваться с учетом регистра.


VARCHAR - может хранить не более 255 символов.

TINYTEXT - может хранить не более 255 символов.

TEXT - может хранить не более 65 535 символов.

MEDIUMTEXT - может хранить не более 16 777 215 символов.

LONGTEXT - может хранить не более 4 294 967 295 символов.


Бинарные данные

Никогда не учитывается регистр.

Различают несколько типов:

TINYBLOB - может хранить не более 255 символов.

BLOB - может хранить не более 65 535 символов.

MEDIUMBLOB - может хранить не более 16 777 215 символов.

LONGBLOB - может хранить не более 4 294 967 295 символов.

BLOD - данные не перекодируются автоматически.


Дата и время

DATE - дата в формате ГГГГ-ММ-ДД

TIME - время в формате ЧЧ:ММ:СС

DATETIME - дата и время в формате

ГГГГ-ММ-ДД ЧЧ:ММ:СС

TIMESTAMP - дата и время в формате ГГГГММДДЧЧММСС.


Константы

Целочисленная

4 -95 +364 0

Десятичная

4,0 -95.7 +364.05 0.007

С плавающей точкой

4ЕЗ -95.7Е46 +364Е-5 0.7Е1

хЕу представляет значение х*10y

Строковая

'123 Main St.'

Дата, время

Записывается по формату, указанному выше.


Идентификаторы MySQL

Идентификаторами являются имена таблиц, столбцов и других элементов БД.

Максимальные длины и допустимые символы для идентификаторов

Идентификатор

Максимальная длина (в байтах)

База данных , кроме \ , / и *.

64

Таблица файлов, кроме \, /, '.'

64

Столбец

64

Индекс

64

Псевдоним

255

Правила задания идентификаторов:
  1. Имя может включать алфавитно-цифровые символы из текущего набора символов, а также символы '_' и '$'.
  2. Имя может начинаться с любого допустимого символа.
  3. В именах нельзя применять символ точки, поскольку точка служит для расширения формата, когда можно обращаться к столбцам.


Не рекомендуется использовать имена вроде 1е, потому что выражение, подобное 1е+1, неоднозначно. Оно может интерпретироваться как выражение 1е + 1 либо как число 1е+1, в зависимости от контекста.