ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЗНАНИЙ ТЕМА 5 СТРУКТУРИРОВАННЫЙ ЯЗЫК ЗАПРОСОВ SQL.

Презентация:



Advertisements
Похожие презентации
Лекция 15 Лекция 15 Управление реляционными базами данных. Языки определения данных и языки манипулирования данными. Способы выражения запросов: процедурный.
Advertisements

Базы данных Михайлова Елена Георгиевна, мат.-мех. ф-т, кафедра информатики, доцент.
6.5. Создание реляционной БД в среде СУБД ACCESS Общие сведения Реляционные отношения в СУБД ACCESS представлены в двух формах: в виде таблиц и в виде.
База данных (БД) – Совокупность определённым образом организованной информации на определённую тему (в рамках определённой предметной деятельности); Организованная.
Технология хранения, поиска и сортировки информации в базах данных
Основные понятия БД Сама по себе БД не может обслужить запросы пользователя на поиск и обработку информации, т.е. БД – это «информационный склад». Обслуживание.
Реляционная модель – это особый метод рассмотрения данных, содержащий данные в виде таблиц, способов работы и манипуляции с ними в виде связей. структура,
Технология хранения, поиска и сортировки информации в базах данных Сумина О. В. МОУ СОШ 69.
БАЗЫ ДАННЫХ ( ВВЕДЕНИЕ ). База данных это информационная модель, позволяющая упорядоченно хранить данные о группе объектов, обладающих одинаковым набором.
Базы данных Access Вводная лекция. Определение базы данных Базы данных - это совокупность тем или иным способом структурированных данных и комплекса аппаратно-программных.
Что такое связи между таблицами В реляционной базе данных связи позволяют избежать избыточности данных. Например, в ходе создания базы данных, содержащей.
Билет Табличные базы данных (БД): основные понятия (поле, запись, первичный ключ записи); типы данных. Системы управления базами данных и принципы.
Базы данных Виды моделей данных СУБД СУБД Access.
Базы данных – это совокупность сведений (о реальных объектах, процессах, событиях или явлениях), относящихся к определенной теме или задаче, организованная.
Инструкция по созданию базы данных в Microsoft Access
Создание и редактирование базы данных 1. Рассмотрим форматы полей: символьный, числовой, дата, время. 2. Выполним практическую работу «создание и редактирование.
Презентация. Система управления базами данных (СУБД) совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих.
Введение. Цели и задачи. Основные понятия и определения. Требования к базам данных.
Информационные системы. Базы данных. Информационная система – любая система обработки информации (шир)
КАФЕДРА СИСТЕМ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ (САПР) УПРАВЛЕНИЕ БАЗАМИ ДАННЫХ.
Транксрипт:

ОРГАНИЗАЦИЯ БАЗ ДАННЫХ И ЗНАНИЙ ТЕМА 5 СТРУКТУРИРОВАННЫЙ ЯЗЫК ЗАПРОСОВ SQL

2.5. Языки БД Для работы с базами данных используются специальные языки, в целом называемые языками баз данных. В ранних СУБД поддерживалось несколько специализированных по своим функциям языков. Чаще всего выделялись два - язык определения схемы БД (SDL - Schema Definition Language) и язык манипулирования данными (DML - Data Manipulation Language). oSDL (Другое название - язык описания данных (ЯОД) - DDL (Data Definition Language)) служил главным образом для определения логической структуры БД, т.е. той структуры БД, какой она представляется пользователям. oDML содержал набор операторов манипулирования данными, т.е. операторов, позволяющих заносить данные в БД, удалять, модифицировать или выбирать существующие данные. Эти языки называются подъязыками данных, т.к. в них отсутствуют конструкции для выполнения всех вычислительных операций, используемых в языках программирования высокого уровня, таких как условные операторы или операторы цикла.

Язык описания данных Язык описания данных - это язык высокого уровня, предназначенный для задания схемы базы данных. С его помощью описываются: типы данных, подлежащих хранению в базе или выборке из БД, Структура данных; Связи между собой. DDL - это язык декларативного типа, не процедурный. Описания данных), написанные на этом языке, после трансляции отображаются в управляющие таблицы: адресных констант, указывающих на размещение в памяти ЭВМ и на связи между собой рассматриваемых данных; констант, характеризующих размерность данного и код, в котором оно представлено; другую информацию, необходимую для работы с данными программ СУБД.

DDL - описательный язык, который позволяет АБД или пользователю описать и именовать сущности и атрибуты, необходимые для работы некоторого приложения, а также связи, имеющиеся между различными сущностями, кроме того, указать ограничения целостности и защиты. Язык DDL используется как для определения новой схемы, так и для модификации уже существующей. Этот язык нельзя использовать для управления данными. Поиск, преобразование, хранение данных осуществляет СУБД.

Для разных СУБД возможны различные варианты обработки исходных текстов, составленных на DDL. oВ одних случаях описания вначале транслируются и затем, если нет синтаксических ошибок, выполняется дальнейшая обработка запроса, в котором присутствовало это описание. oВ других случаях возможна предварительная трансляция описаний для их отладки и выявления ошибок. Затем с помощью средств операционной системы готовые отлаженные описания (каждое со своим идентификатором) помещаются в специальную библиотеку описаний, откуда СУБД их выбирает по идентификатору при обработке соответствующих запросов. oВ третьих случаях может использоваться режим интерпретации описаний при обработке запросов и т. д. В ряде систем делается различие между заданием всей схемы БД и заданием ее частей – подсхем. Эти языки могут иметь некоторые отличия.

Язык манипулирования данными Язык манипулирования данными (ЯМД) - (data manipulation language (DML)) язык, используемый программистом для загрузки, доступа и обновления базы данных. DML служит для: выполнения и обеспечения требуемых операций с данными; позволяет создавать структуры файлов БД и манипулировать данными (внесение новых, удаление, выборка, сортировка, модификация структуры БД); создавать прикладные программы, экранные формы ввода и вывода информации и т.д. DML позволяет осуществлять в базе данных, т. е. с помощью команд DML делать переходы в БД от одного данного к другому по соответствующим связям между ними. В общем случае для выполнения в БД необходимо знать реализованную в базе структуру данных, иначе можно получить не те данные, которые требуются, либо не найти их, хотя они присутствуют в базе.

В состав DML также обычно входят специальные команды по установке параметров и состояний системы (SET - команды), а также функции, предназначенные для различных видов обработки данных и выполнения вспомогательных действий. Язык манипулирования данными (или язык запросов к базе данных) представлен системой команд манипулирования данными. В нем могут быть, например, следующие команды: произвести выборку из базы конкретного данного, значение которого удовлетворяет заданным условиям; произвести выборку из базы всех данных определенного типа, значения которых удовлетворяют заданным условиям; найти в базе позицию данного и поместить туда его новое значение либо удалить данное и т. д. Структура и возможности языка в значительной степени определяют облик конкретной СУБД, ее возможности.

Языки DML имеют разные базовые конструкции извлечения данных. Существуют два типа языков DML: процедурный и непроцедурный. Основное различие между ними заключается в том, что процедурные языки указывают то, как можно получить результат оператора языка DML, тогда как непроцедурные языки описывают то, какой результат будет получен. Как правило, в процедурных языках записи рассматриваются по отдельности, тогда как непроцедурные языки оперируют с целыми наборами записей. Процедурный язык DML - язык, который позволяет сообщить системе о том, какие данные необходимы, и точно указать, каких можно извлечь. Обычно операторы процедурного языка DML встраиваются в программу на языке программирования высокого уровня, которая содержит конструкции для обеспечения циклической обработки и перехода к другим участкам кода. Языки DML сетевых и иерархических СУБД обычно являются процедурными.

Непроцедурный язык DML - язык, который позволяет указать лишь то, какие данные требуются, но не то, как их следует извлекать. Непроцедурные языки часто также называют декларативными языками. Реляционные СУБД в той или иной форме обычно включают поддержку непроцедурных языков манипулирования данными чаще всего это язык структурированных запросов SQL (Structured Query Language) или язык запросов по образцу QBE (Query-by-Example). Непроцедурные языки обычно проще понять и использовать, чем процедурные языки DML, поскольку пользователем выполняется меньшая часть работы, а СУБД большая.

Языки 4GL Аббревиатура 4GL представляет собой сокращенный английский вариант написания термина язык четвертого поколения (Fourth- Generation Language). Выделяют следующие типы языков четвертого поколения: языки представления информации, например языки запросов или генераторы отчетов; специализированные языки, например языки электронных таблиц и баз данных; генераторы приложений, которые при создании приложений обеспечивают определение, вставку, обновление или извлечение сведений из базы данных; языки очень высокого уровня, предназначенные для генерации кода приложений. В качестве примеров языков четвертого поколения можно указать языки - SQL и QBE.

В современных СУБД обычно поддерживается единый интегрированный язык, содержащий все необходимые средства для работы с БД, начиная от ее создания и обеспечивающий базовый пользовательский интерфейс с базами данных. Стандартным языком наиболее распространенных в настоящее время реляционных СУБД является язык SQL (Structured Query Language). Из истории SQL: В 1974 году Д. Чемберлен, работавший в той же лаборатории компании IBM, что и Кодд, публикует определение языка, получившего название "Structured English Query Language", или SEQUEL. В 1976 году была выпущена переработанная версия этого языка, SEQUEL/2; впоследствии его название пришлось изменить на SQL по юридическим соображениям аббревиатура SEQUEL уже использовалась кем-то ранее. Но до настоящего времени многие по-прежнему произносят аббревиатуру SQL как "си-квэл", хотя официально ее рекомендуется читать как "эс-кью-эл".

Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. В 1981 году IBM объявила о своем первом, основанном на SQL программном продукте, SQL/DS. Первый Стандарт на язык SQL был выпущен Национальным институтом стандартизации США (ANSI) в 1986 году. В 1987 году Международная организация по стандартизации (ISO) приняла этот стандарт в качестве международного (SQL level /уровень/ 1). В 1989 году был утвержден (SQL level 2). В 1992 был принят расширенный стандарт (ANSI SQL-92 или просто SQL-2). В 1999 году была выпущена версия стандарта SQL3. Эта версия содержит дополнительные средства поддержки объектно-ориентированных функций управления данными. В настоящее время язык SQL поддерживается СУБД различных типов, начиная от персональных компьютеров и заканчивая мэйнфреймами. SQL задумывался как средство работы конечного пользователя, однако стал настолько сложным, что превратился в инструмент программиста.

Все СУБД, претендующие на название реляционные реализуют свой диалект SQL. Многие нереляционные системы имеют доступ к реляционным данным. Ни одна СУБД в полной мере не поддерживает стандарт SQL, однако во всех диалектах есть дополнительные возможности, т.е. диалект есть некоторое подмножество некоторого надмножества стандарта SQL, что затрудняет переносимость приложений с одной СУБД на другую. В SQL определены два подмножества языка: SQL-DDL (Data Definition Language) - язык определения структур и ограничений целостности баз данных. Сюда относятся команды создания и удаления баз данных; создания, изменения и удаления таблиц; управления пользователями и т.д. SQL-DML (Data Manipulation Language) - язык манипулирования данными: добавление, изменение, удаление и извлечение данных, управления транзакциями Прежде всего язык SQL сочетает средства SDL(DDL) и DML, т.е. позволяет определять схему реляционной БД и манипулировать данными. При этом внутренняя часть СУБД (ядро) вообще не работает с именами таблиц и их столбцов.

Язык SQL содержит специальные средства определения ограничений целостности БД, которые хранятся в специальных таблицах-каталогах. Обеспечение контроля целостности БД производится на языковом уровне (при компиляции операторов модификации БД). Специальные операторы языка SQL позволяют определять представления БД, фактически являющиеся хранимыми в БД запросами. Авторизация доступа к объектам БД производится на основе специального набора операторов SQL. Идея состоит в том, что для выполнения операторов SQL разного вида пользователь должен обладать различными полномочиями. Пользователь, создавший таблицу БД, обладает полным набором полномочий для работы с этой таблицей. В их число входит полномочие на передачу всех или части полномочий другим пользователям, включая полномочие на передачу полномочий. (Полномочия пользователей описываются в специальных таблицах-каталогах, контроль полномочий поддерживается на языковом уровне).

Еще один стандартный язык работы с базами данных - NDL (Network Database Language) построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо интерфейса SQL, и большинство таких компаний участвуют в работе, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. SQL стал частью архитектуры приложений (например, такой как System Application Architecture (SAA) корпорации IBM), а также является стратегическим выбором многих крупных и влиятельных организаций (например, консорциума Х/Open, занятого разработкой стандартов для среды UNIX), Язык SQL также принят в качестве федерального стандарта обработки информации (Federal Information Processing Standard FIPS), который должен соблюдаться в СУБД для получения разрешения продавать ее на территории США. Консорциум разработчиков SQL Access Group прилагает усилия по созданию расширений языка SQL, которые позволят обеспечить взаимодействие разнородных систем. Стандарт ISO SQL не поддерживает таких формальных терминов, как отношение, атрибут и кортеж, вместо них применяются термины таблица, столбец и строка.

SQL (Structured Query Language – структурированный язык запросов) основывается на некоторой смеси алгебраических и логических конструкций. В то же время SQL подвергается суровой критике как раз за недостаточное соответствие реляционным принципам Имеются два SQL: Интерактивный и Вложенный. Большей частью, обе формы работают одинаково, но используются различно. Интерактивный SQL используется для функционирования непосредственно в БД, чтобы производить вывод для использования его пользователем. В этой форме SQL команда сейчас же выполнится и вывод (если он вообще получится) можно увидеть немедленно. Вложенный SQL состоит из команд SQL помещенных внутри программ, написанной на другом языке (типа КОБОЛА или Паскаль). Это делает эти программы более мощными и эффективным. Однако, допуск этих языков требует некоторых расширений к интерактивному SQL. Далее рассматривается SQL в интерактивной форме. Интерактивная форма SQL наиболее полезна непрограммистам. Все что находит отражение в интерактивном SQL, в основном применимо и к вложенной форме.

Типы данных языка SQL, определенные стандартом ISO Скалярные типы данных языка SQL Логические данные (тип boolean) Логические данные состоят из различимых истинностных значений TRUE (истинный) и FALSE (ложный). Логические данные поддерживают также истин ностное значение UNKNOWN (неопределенный), заданное как значение NULL, если применение неопределенных значений-не запрещено ограничением NOT NULL. Символьные данные (тип character) Символьные данные состоят из последовательностей символов, входящих в определенный создателями СУБД набор символов. Поскольку наборы символов являются специфическими для различных диалектов языка SQL, перечень символов, которые могут входить в состав значений данных символьного типа, также зависит от конкретной реализации. В настоящее время чаще всего используются наборы символов ASCII и EBCDIC.

Битовые данные (тип bit) Битовый тип данных используется для определения битовых строк, т.е. последовательности двоичных цифр (битов), каждая из которых может иметь значение либо 0, либо 1. Для опредеяения данных битового типа используется формат, сходный с определением символьных данных. Двоичные типы данных - позволяют хранить данные любого объема в двоичном коде (оцифрованные изображения, исполняемые файлы и т.д.). Определения этих типов наиболее сильно различаются от системы к системе, часто используются ключевые слова: –BINARY –BYTE –BLOB Точные числовые данные (тип exact numeric) Тип точных числовых данных используется для определения чисел, которые имеют точное представление в компьютере. Числа состоят из цифр и необязательных символов (десятичной точки, знака "плюс" или "минус"). Данные точного числового типа определяются значностъю (precision) и длиной, дробной части (scale). Целые типы данных - поддерживают только целые числа (дробные части и десятичные точки не допускаются). Над этими типами разрешается выполнять арифметические операции и применять к ним агрегирующие функции (определение максимального, минимального, среднего и суммарного значения столбца реляционной таблицы).

Типы NUMERIC и DECIMAL предназначены для хранения чисел в десятичном формате. INTEGER или INT- целое, для хранения которого отводится, как правило, 4 байта. SMALLINT - короткое целое (2 байта), от до Округленные числовые данные (тип approximate numeric) Тип округленных числовых данных используется для описания данных, которые нельзя точно представить в компьютере, например действительных чисел. FLOAT и SMALLFLOAT - числа с плавающей точкой DECIMAL(p) - тип данных аналогичный FLOAT с числом значащих цифр p. DECIMAL(p,n) - аналогично предыдущему, p - общее количество десятичных цифр, n - количество цифр после десятичной запятой. Дата и время (тип datetime) Дата и время - используются для хранения даты, времени и их комбинаций с некоторой установленной точностью. DATE - тип данных для хранения даты. TIME - тип данных для хранения времени. DATETIME - тип данных для хранения моментов времени (год + месяц + день + часы + минуты + секунды + доли секунд). Замечание: число байт, отводимое для хранения того или иного типа данных зависит от используемой СУБД и аппаратной платформы

Интервальный тип данных interval Данные с интервальным типом используются для представления периодов времени. Любой интервальный тип данных состоит из набора полей: YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Существуют два класса данных с интервальным типом: интервалы год-месяц и интерналы сутки- время суток. В первом случае данные включают только два поля YEAR и/или MONTH. Данные второго типа могут состоять из произвольной последовательности полей DAY, HOUR, MINUTE, SECOND. Большинство СУБД умеет определять интервал между двумя датами, а также изменять дату на определенное количество времени. Данные интервального типа определяются следующим образом: INTERVAL - тип данных для хранения верменного интервала. Денежные типы данных Денежные типы данных описывают денежные величины. Вводится потому, что некоторые СУБД предусматривают для него специальные методы форматирования. Если СУБД такого типа данных не поддерживает, то используется тип данных DECIMAL(p,n). MONEY(p,n) - аналогично типу DECIMAL(p,n). Последовательные типы данных Последовательные типы данных используются для представления возрастающих числовых последовательностей. SERIAL - тип данных на основе INTEGER, позволяющий сформировать уникальное значение (например, для первичного ключа). При добавлении записи СУБД автоматически присваивает полю данного типа значение, получаемое из возрастающей последовательности целых чисел.