
- •Билеты по базам данных
- •М одели данных
- •Реляционная модель данных
- •Отличия отношения от реальной таблицы
- •Реляционная алгебра
- •Архитектура базы данных
- •Инфологические модели. Модель «сущность-связь».
- •Виды сущностей
- •С ущности
- •Тип Подтип Сильные Слабые
- •Определение:
- •Понятие целостности данных
- •Избыточность данных и нормальные формы
- •Язык структурированных запросов (sql). История, стандарты.
- •Синтаксис
- •Оператор select. Агрегатные функции. Предложения group by и having.
- •Оператор select. Многотабличные запросы.
- •Многопользовательские субд
- •Распределённые базы данных
- •Трансакции. Нарушение целостности при параллельном и последовательном их выполнении.
- •Трансакции. Откат, восстановление. Журнал регистраций.
- •Методы защиты бд
Язык структурированных запросов (sql). История, стандарты.
SQL (Structured Query Langauge) - структурированный язык запросов) является стандартным языком, используемым для работы с реляционными базами данных. Он позволяет исключить большую работу, необходимость которой возникает при попытке использовать языка программирования общего назначения для разработки функций работы с базой данных. Язык SQL был разработан в конце 70-х годов в компании IBM и был впервые реализован в реляционной СУБД IBM System R. В дальнейшем, благодаря своей организации, независимости от специфики компьютера и поддержке лидерами в области технологии реляционных баз данных, SQL стал и в обозримом будущем останется стандартом для всех реляционных систем обработки данных.
Первый международный стандарт языка SQL был принят в 1989 году ANSI. Этот стандарт называют SQL/89. Подавляющее большинство СУБД поддерживают этот стандарт полностью. В связи с развитием информационных технологий через некоторое время возникла необходимость расширения стандарта. В 1992 году был принят новый стандарт SQL/92. Затем в 1999 году был принят стандарт SQL/99 и, наконец, самый последний стандарт языка SQL был принят в 2003 году и носит название SQL/2003. Стоит, правда, сказать о том, что не все СУБД ограничиваются полной поддержкой стандарта и часто добавляют в язык SQL какие-то специфичные возможности с целью повышения конкурентоспособности СУБД.
Две части, из которых состоит SQL:
DDL (Data Definition Language) – язык описания данных.
DML (Data Manipulation Language) – имеет в себе операции выбрать (select), вставить (insert), удалить (delete) и обновить (update).
Язык определения данных(DDL)
Язык DDL (Data Definition Language) - категория команд языка SQL, позволяющая создавать и изменять структуру объектов базы данных, например, создавать и удалять таблицы. Основными командами языка DDL являются:
CREATE TABLE - Создание таблицы
ALTER TABLE - Изменение структуры таблицы
DROP TABLE - Удаление таблицы
CREATE INDEX – Создание индекса
ALTER INDEX – Изменение индекса
DROP INDEX - Удаление индекса
Метаданные
В общем случае, это:
Субканальная информация об используемых данных.
Структурированные данные, представляющие собой характеристики описываемых сущностей для целей их идентификации, поиска, оценки, управления ими.
Набор допустимых структурированных описаний, которые доступны в явном виде и предназначение которых может помочь найти объект.
Данные из более общей формальной системы, описывающей заданную систему данных.
Типы данных
В стандартном языке SQL применяются следующие типы данных:
INTEGER – до 10 цифр и знак
SMALL – до 5 цифр и знак
DECIMAL (p,q) – 0<p<16 всего позиций, q – число цифр после запятой
FLOAT – вещественное, определяется СУБД (REAL в ACCESS)
DOUBLE PRECISION – вещественное, определяется СУБД (FLOAT в ACCESS!), точность и диапазон больше, чем у FLOAT
CHAR(n) – строка из n (n<256) символов
Практически во всех СУБД, поддерживающих SQL, применяются дополнительно следующие типы данных:
VARCHAR(n) – строка из n символов (nmax>4096, определяется СУБД)
DATE – формат определяется специальной командой (по умолчанию mm/dd/yy)
TIME – формат определяется специальной командой (по умолчанию hh.mm.ss)
DATETIME – комбинация даты и времени
MONEY – денежный тип
Оператор CREATE TABLE
С помощью оператора CREATE TABLE в БД создаются таблицы.
CREATE [{GLOBAL│LOCAL} TEMPORARY] TABLE <имя таблицы>
({{<имя столбца> <тип> [(<длина>)] [<ограничения столбца>…]}││[<ограничение таблицы>]} ..,. [ON COMMIT {DELETE│PRESERVE}ROWS]
);
{} – единое целое
[] – не обязательно
:: = это есть (<длина> ::= <целое без знака>)
… - предшествующее выражение повторяется сколь угодно много раз
..,. – строк может быть сколь угодно много и после последней запятая не ставиться
│ - или
Временная таблица – это таблица, описание структуры которой хранится в БД постоянно, а данные удаляются после их использования (когда необходимость в них исчезает).
GLOBAL – означает, что временная таблица очищается после окончания сеанса пользователя.
LOCAL – означает, что временная таблица очищается после завершения работы и программного модуля.
ON COMMIT – по завершению трансакции.
Оператор ALTER TABLE
С помощью оператора ALTER TABLE в БД вносятся изменения в структуру таблицы.
ALTER TABLE <имя таблицы> {ADD {COLUMN <имя поля> <тип поля> [(<размер>)]
[NOT NULL] [CONSTRAINT <имя индекса>] │
ALTER COLUMN <имя поля> <тип поля> [(<размер>)]│
CONSTRAINT <описание составного индекса>│
DROP {COLUMN <имя поля>│ CONSTRAINT <имя индекса>}};
Оператор GRANT
Оператор GRANT используется для назначения разрешений на выполнения операций с объектом базы данных определенному пользователю или группе пользователей.
GRANT {разрешения}
[ON {таблица}]
TO {пользователь}
Управление разрешениями значительно упрощается с использованием ролей. Преимущества использования ролей заключается в следующем:
упрощается работа по предоставлению разрешений
упрощается механизм изменения разрешений
повышается производительность системы за счет сокращения количества проверок отдельных разрешений
Язык манипулирования данными (DML)
Data Manipulation Language (DML) — это язык, используемый в компьютерных программах или пользователями баз данных для получения, вставки, удаления или изменения данных в базах данных.
К числу элементов языка обработки данных (DML) относятся инструкции SELECT, SELECT INTO, INSERT INTO, UPDATE, DELETE, EXECUTE, TRANSACTION, TRANSFORM; операции INNER JOIN, LEFT JOIN,RIGHT JOIN, UNION; описания PARAMETERS, WITH OWNERACCESS OPTION.
Оператор SELECT. Назначение и структура.
После ввода этого оператора, ядро MS Jet возвращает из базы данных набор запрошенных записей. Оператор SELECT формирует запрос на выборку.
Пример:
SELECT Заказы. *
FROM Заказы;
Запрос читается так: выбрать (SELECT) все поля (Заказы.*) из таблицы (FROM) Заказы.
Оператор SELECT. Список выводимых столбцов. Псевдонимы.
Поля таблицы выводятся на экран дисплея в том порядке, в котором они перечислены в запросе. Имена полей при выводе результатов запроса часто неудобны для чтения. Их можно заменить в запросе псевдонимами, как показано в примере:
SELECT КодЗаказа AS Заказ, НазваниеПолучателя AS Получатель,
АдресПолучателя AS Адрес, ДатаИсполнения AS Дата
FROM Заказы
ORDER BY НазваниеПолучателя ASC;
В примере КодЗаказа, НазваниеПолучателя, АдресПолучателя и ДатаИсполнения – имена полей в таблице Заказы. При выводе результатов запроса на экран дисплея имена полей будут заменены соответствующими псевдонимами, указанными после слова AS.
Предложение
ORDER BY НазваниеПолучателя ASC
Служит для сортировки отобранных записей по возрастанию (т.е. в алфавитном порядке) значения поля НазваниеПолучателя. Если нужно сортировать по убыванию, то вместо ASC нужно использовать DESC.
Чтобы не было, в свою очередь, дублирования записей, в запросе будет использоваться слово DISTINCT.
Для вывода всех записей после слова SELECT вставляется слово ALL.
Оператор SELECT. Использование арифметических значений и функций.
В списке вывода можно указывать не только имена полей и их псевдонимы, но и выражения, включающие в себя арифметические действия (например, умножение, деление) и функции.
Что касается функций, то это могут быть:
Функция STR
Предназначена для преобразования в текстовый тип.
Функция DATEPART
Возвращает значение типа Variant (Integer), содержащее указанную часть заданной даты.