Язык SQL (Structured Query Language). Интерактивный и встроенный SQL. Составные части SQL. Типы данных SQL. Основные типы команд SQL 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Язык SQL (Structured Query Language). Интерактивный и встроенный SQL. Составные части SQL. Типы данных SQL. Основные типы команд SQL



Язык SQL (Structured Query Language). Интерактивный и встроенный SQL. Составные части SQL. Типы данных SQL. Основные типы команд SQL

SQL – это язык структурированных запросов (Structured Query Language) к реляционным БД.

Используя SQL-запросы, можно выбирать из таблиц БД только необходимые записи. При этом мы можем получить доступ не просто к одной таблице, а к сложной выборке из связанных между собой таблиц или наборов данных. SQL как стандартный способ управления БД реализован во многих СУБД, включая Microsoft Access и SQL Server.

Существуют две формы языка SQL: интерактивный SQL и встроенный SQL.

Интерактивный SQL используется для задания SQL-запросов пользователем и получения результата в интерактивном режиме.

Встроенный SQL состоит из команд SQL, встроенных внутрь программ, обычно написанных на каком-то другом языке (Паскаль, С, C++и др.).

Составные части SQL. И интерактивный, и встроенный SQL подразделяются на следующие составные части: DDL, или язык определения данных; DML, или язык манипулирования данными; DQL, или язык запросов; DCL, или язык управления данными; Команды администрирования данных; Команды управления транзакциями.

Типыданных SQL

CHARACTER (CHAR) представляет собой символьные строки фиксированной длины.

INTEGER — представление целых чисел в диапазоне от –231 до +231.

SMALLINT — используется для представления целых чисел в диапазоне от –215 до +215.

DECIMAL (точность [, масштаб ])— десятичное число с фиксированной точкой, точность определяет количество значащих цифр в числе. Масштаб указывает максимальное число цифр справа от точки.

FLOAT [(точность)] — число с плавающей точкой и указанной миним. точностью.

REAL — число такое же, как при типе FLOAT, за исключением определения точности по умолчанию (в зависимости от конкретной реализации SQL).

DOUBLE PRECISION — число аналогично REAL, но точность в два раза выше точности REAL.

Дата и время -Тип данных, предназначенный для представления даты и времени, также является нестандартным, хотя и чрезвычайно полезным.

Неопределенные или пропущенные данные (NULL) Для обозначения отсутствующих, пропущенных или неизвестных значений атрибута в SQL используется ключевое слово NULL.

Типы команд SQL

1. Команды языка определения данных (data definition language — DDL) позволяют создавать новые таблицы в БД, добавлять индексы и т.д.: CREATE TABLE - создать таблицу, ALTER TABLE - модифицировать таблицу, DROP TABLE - удалить таблицу, CREATE INDEX - создать индекс, ALTER INDEX - модифицировать индекс, DROP INDEX - удалить индекс.

2. Команды языка обработки данных (data manipulation language — DML) используются для добавления, корректировки и удаления строк в таблицах и включают команды: INSERT - вставить данные в таблицу, UPDATE - обновить данные, DELETE - удалить данные.

3. Команда языка запросов данных (dataquerylanguage — DQL) (единственная команда) используется для получения данных из таблиц и определения формы представления этих данных: SELECT - выполнить запрос из таблиц базы.

4. Команды языка управления данными (data control language— DCL) определяют доступ отдельных пользователей и групп пользователей к объектам БД посредством полномочий, предоставляемых и отменяемых командами: GRANT - предоставить привилегии, REVOKE - отменить привилегии.

5. Команды языка обработки транзакций (transaction processing language — TPL) обеспечивают обновление всех строк, используемых в операторе DML, и включают следующие команды: BEGIN TRANSACTION - начать транзакцию, COMIT TRANSACTION - завершить транзакцию, SAVE TRANSACTION - создать точку сохранения внутри транзакции.

6. Команды языка управления курсором (cursor control language — CCL) выполняют операции с отдельными строками одной или нескольких таблиц и включают команды: DECLARE CURSOR, FETCH INTO и UPDATE WHERE CURRENT.

Строковые функции

LENGTH — определение длины строки LENGTH (<строка>)

· LFAD(<строка>,<длина>[,<подстрока>]) — дополнение строки слева.

· RPAD(<строка>,<длина>[,<подстрока>]) — дополнение строки справа.

· LTRIM(<строка>[,<подстрока>]) — удаление левых граничных символов.

· RTRIM(<строка>[,<подстрока>]) — удаление правых граничных символов

· SUBSTR (<строка>,<нзчало>[,<количество>)) — выделение подстроки.

· INSTR (<строка>,<подстрока>[,<начало поиска> [,<номер вхождения>]]) — поиск подстроки.

Функции работы с числами

· ABS — абсолютное значение.

· FLOOR — урезает значение числа с плавающей точкой до наибольшего целого

· CEIL — самое малое целое, равное или большее заданного числа.

· Гиперболические функции — COSH, SINH, TANH

· Тригонометрические функции — COS, SIN, TAN и т.д.

· Функция округления— ROUND

· Функция усечения— TRUNC

· Функция возведения в степень — POWER

Функции преобразования из одного типа данных в другой:

· TO_CHAR, TO_NUMBER, TO_DATE, CAST.

SELECT COUNT

FROM EXAM_MARKS;

Предложение GROUP BY (группировать по) позволяет группировать записи в подмножества, определяемые значениями какого-либо поля, и применять агрегирующие функции уже не ко всем записям таблицы, а раздельно к каждой сформированной группе

Предположим, требуется найти максимальное значение оценки, полученной каждым студентом, тогда запрос имеет вид:

SELECT STUDENT_ID, MAX (MARK)

FROM EXAM_MARKS

GROUP BY STUDENT_ID;


Однозвенная архитектура

Однозвенная (one-tier, single-tier) архитектура – это система, в которой все службы БД, приложения и представления (пользовательский интерфейс) размещены на одной системе. Системы такого типа не производят обработку вне тех компьютеров, на которых они исполняются.

Примером однозвенной архитектуры может служить БД Microsoft Аccess с локальными службами представления.

Пример однозвенной архитектуры с SQL Server найти гораздо труднее.


20. Общие понятия и определения целостности. Принципы поддержки целостности в СУБД. Преимущества и недостатки средств обеспечения целостности данных. Примеры использования объекта «ограничения целостности» в базе данных.

Одним из основополагающих понятий в технологии БД является понятие целостности.

В реляционной модели под целостностью понимается соответствие информационной модели предметной области, хранимой в БД, объектам реального мира и их взаимосвязям в каждый момент времени.

Поддержка целостности в реляционной модели данных в ее классическом понимании включает в себя 3 аспекта:

· поддержка структурной целостности

· поддержка языковой целостности

· поддержка ссылочной целостности (Declarative Referential Integrity, DRI)

Поддержка структурной целостности:

трактуется как то, что реляционная СУБД должна допускать работу только с однородными структурами данных типа "реляционное отношение". При этом понятие "реляционного отношения" должно удовлетворять всем ограничениям, накладываемым на него в классической теории реляционной БД.

Поддержка языковой целостности:

Состоит в том, что реляционная СУБД должна обеспечивать языки описания и манипулирования данными не ниже стандарта SQL. Не должны быть доступны иные низкоуровневые средства манипулирования данными, не соответствующие стандарту.

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

Поддержка ссылочной целостности:

Означает обеспечение одного из заданных принципов взаимосвязи между экземплярами кортежей взаимосвязанных отношений:

· кортежи подчиненного отношения уничтожаются при удалении кортежа основного отношения, связанного с ними.

· кортежи основного отношения модифицируются при удалении кортежа основного отношения, связанного с ними, при этом на месте ключа родительского отношения ставится неопределенное Null значение.

Ссылочная целостность обеспечивает поддержку непротиворечивого состояния БД в процессе модификации данных при выполнении операций добавления или удаления.

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

Преимущества и недостатки:

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

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

Примеры правил:

вес детали должен быть положительным; количество знаков в телефонном номере не должно превышать 25; возраст родителей не может быть меньше возраста их биологического ребёнка и т.д.

Главное средство обеспечение доменной целостности в SQL Server - это ограничение CHECK. Оно может быть определено при создании таблицы или добавлено позднее при помощи команды ALTER TABLE, например:

ALTER TABLE dbo.Employees

ADDCONSTRAINT CK_birthdate CHECK (BirthDate> '01-01-1900' AND BirthDate<getdate())

Понятие подзапроса. Примеры формирования связанных и вложенных подзапросов.

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

Запросы, отделенные круглыми скобками и входящие в состав конструкций HAVING, WHERE, FROM, SELECT и WITH внешнего запроса SELECT или каких-либо других перечисленных запросов, заключающих в себе эти конструкции, называются вложенными запросами (подзапросами).

Вложенные подзапросы могут быть простыми и связанными. Если результат вложенного запроса не зависит от результата внешнего, то такой вложенный запрос называется простым.

Вложенные подзапросы:

Предположим, та фамилия студента («Петров»), но неизвестно значение поля STUDENT_ID для него. Чтобы извлечь данные обо всех оценках этого студента, можно записать следующий запрос:

SELECT *

FROM EXAM_MARKS

WHERE STUDENT_ID =

(SELECT STUDENT_ID

FROM STUDENTSURNAME='Петров' );

Как работает запрос SQL со связанным подзапросом?

1) Выбирается строка из таблицы, имя которой указано во внешнем запросе.

2) Выполняется подзапрос и полученное значение применяется для анализа этой строки в условии предложения WHERE внешнего запроса.

3) По результату оценки этого условия принимается решение о включении или не включении строки в состав выходных данных.

4) Процедура повторяется для следующей строки таблицы внешнего запроса.

В некоторых случаях для гарантии получения единственного значения в результате выполнения подзапроса используется DISTINCT.

Широко применяется в подзапросах оператор IN, задающий список значений, с которыми сравниваются другие значения для определения истинности задаваемого этим оператором предиката. Подзапросы можно применять внутри предложения HAVING.

Пусть требуется определить количество предметов обучения с оценкой, превышающей среднее значение оценки студента с идентификатором 301:

SELECT COUNT (DISTINCT SUBJ_ID ), MARK

FROM EXAM_MARKS

GROUP BY MARK

HAVING MARK >

(SELECT AVG( MARK )

FROM EXAM_MARKS

WHERE STUDENT_ID = 301 );

Связанныеподзапросы:

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

При использовании подзапросов во внутреннем запросе можно ссылаться на таблицу, имя которой указано в предложении FROM внешнего запроса. В этом случае такой связанный подзапрос выполняется по одному разу для каждой строки таблицы основного запроса.

Пример: выбрать сведения обо всех предметах обучения, по которым проводился экзамен 20 января 2006 г.

SELECT *

FROM SUBJECT SU

WHERE '20/01/2006' IN

(SELECT EXAM_DATE

FROM EXAM_MARKS EX

WHERE SU.SUBJ_ID=EX.SUBJ_ID );

Пример создания триггера

В стандарте SQL1 ни хранимые процедуры, ни триггеры были не определены.

В добавлении к стандарту SQL2, выпущенному в 1996 году, те и другие объекты были стандартизированы и определены.

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

CREATE TRIGGER <имя_триггера>

ON <имя_таблицы>

FOR {[INSERT][, UPDATE] [, DELETE] }

[WITH ENCRIPTING]

AS

SQL-операторы (Тело триггера)

Имя триггера является идентификатором во встроенном языке программирования СУБД и должно удовлетворять соответствующим требованиям.

В параметре FOR задается одна или несколько операций модификации, которые запускают данный триггер.

Параметр WITH ENCRIPTING имеет тот же смысл, что и для хранимых процедур, он скрывает исходный текст тела триггера.

Существует несколько правил, которые ограничивают набор операторов, которые могут быть использованы в теле триггера.

 

Так, в большинстве СУБД действуют следующие ограничения:

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

· Нельзя использовать в триггере команду удаления объектов DROP для всех типов базовых объектов БД.

· Нельзя использовать в теле триггера команды изменения базовых объектов ALTER TABLE, ALTER DATABASE.

· Нельзя изменять права доступа к объектам БД, то есть выполнять команду GRAND или REVOKE.

· Нельзя создать триггер для представления VIEW.

· В отличие от хранимых процедур, триггер не может возвращать никаких значений, он запускается автоматически сервером и не может связаться самостоятельно ни с одним клиентом.


Абстрактные типы данных

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

OLTP и OLAP-системы

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

Другим типом приложений являются так называемые OLAP-приложения (On-Line Analitical Processing (OLAP) - оперативная аналитическая обработка данных). Это обобщенный термин, характеризующий принципы построения систем поддержки принятия решений (DecisionSupportSystem - DSS), хранилищ данных (DataWarehouse), систем интеллектуального анализа данных (DataMining).

Такие системы предназначены для нахождения зависимостей между данными (например, можно попытаться определить, как связан объем продаж товаров с характеристиками потенциальных покупателей), для проведения анализа "что если…". OLAP-приложения оперируют с большими массивами данных, уже накопленными в OLTP-приложениях, взятыми их электронных таблиц или из других источников данных. Такие системы характеризуются следующими признаками:

· Добавление в систему новых данных происходит относительно редко крупными блоками.

· Данные, добавленные в систему, обычно никогда не удаляются.

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

· Запросы к системе являются нерегламентированными и, как правило, достаточно сложными.

· Скорость выполнения запросов важна, но не критична.

Схема «снежинки» получила свое название за свою форму, в виде которой отображается логическая схема таблиц в многомерной БД. Так же как и в схеме звезды, схема снежинки представлена централизованной таблицей фактов, соединенной с таблицами измерений. Отличием является то, что здесь таблицы измерений нормализованы с рядом других связанных измерительных таблиц, — в то время как в схеме звезды таблицы измерений полностью денормализованы, с каждым измерением представленным в виде единой таблицы, без соединений на связанные таблицы в схеме снежинки. Чем больше степень нормализации таблиц измерений, тем сложнее выглядит структура схемы снежинки. Создаваемый «эффект снежинки» затрагивает только таблицы измерений, и не применим к таблицам фактов.

Схема «звезды», схема звёздного соединения, звездоподобная схема, звёздная схема (от англ. starschema) — специальная организация реляционных таблиц, удобная для хранения многомерных показателей. Лежит в основе реляционного OLAP.

Модель данных состоит из двух типов таблиц: одной таблицы фактов (facttable) — центр «звезды» — и нескольких таблиц измерений (dimensiontable) по числу измерений в модели данных — лучи «звезды».

Объектно-реляционные СУБД. Подходы к построению объектно-реляционных СУБД (ОРСУБД).

Классификация СУБД

В ОРСУБД широко используются такие объектно-ориентированные компоненты, как:

· расширяемая пользователем система типов,

· инкапсуляция,

· наследование,

· полиморфизм,

· динамическое связывание методов,

· использование составных,

· поддержка идентичности объектов.

Архитектура СУОБД

ODMG-93 определяет СУОБД как СУБД, интегрирующую свойства БД и объектно-ориентированных языков программирования. В качестве основы объектной модели ODMG-93 используется объектная модель OMG.

Модель данных. Базовыми примитивами являются объекты и литералы. Каждый объект имеет уникальный идентификатор, литерал не имеет идентификатора. Объект, на который можно установить ссылку, называется экземпляром; он хранит определенный набор данных

Состояние объекта определяется набором значений, реализуемых множеством свойств. Этими свойствами могут быть атрибуты объекта или связи между объектом и одним или несколькими другими объектами.

Поведение объекта определяется набором операций, которые могут быть выполнены над объектом или самим объектом. Операции могут иметь список входных и выходных параметров строго определенного типа. Каждая операция может также возвращать типизированный результат.

БД хранит объекты, позволяя совместно использовать их различным пользователям и приложениям. БД основана на схеме данных, определяемой языком определения данных, и содержит экземпляры типов, определенных схемой.

Каждый тип имеет внешнюю спецификацию и одну или несколько реализаций. Спецификация определяет внешние характеристики типа: пользователю для работы с объектом предоставляется набор операций и набор атрибутов объекта, при помощи которых можно работать с реальными экземплярами. Реализация определяет внутреннее содержание объектов, например операции.

Тип также является объектом. Поддерживается иерархия супертипов и подтипов, реализуя стандартный механизм ООП — наследование.

Новые типы данных Особенность ООСУБД состоит в том, что создание нового типа не требует модификации ядра базы и основано на принципах ООП.

В ООСУБД для объектов, которые предполагается хранить в базе, требуется, чтобы их предком был конкретный базовый тип, определяющий все основные операции взаимодействия с сервером БД.

Поэтому для создания своего типа необходимо:

· унаследовать свойства любого имеющегося типа, наиболее подходящего по своему поведению и состоянию к типу, который требуется получить;

· расширить недостающие операции и атрибуты;

· переопределить, по необходимости, уже имеющиеся

Язык СУБД и запросы

Общепризнанны две группы вариантов языков запросов:

· Первая группа объединяет языки, унаследованные от SQL и представляющие собой разновидность языка OQL (ObjectQueryLanguage), стандартизованного ODMG. Объектно-реляционные СУБД используют различные варианты ограниченных объектных расширений SQL.

· Вторая группа языков запросов базируется на языках группы XML QL, (или XQL). Они могут применяться в качестве языков запросов в объектных и объектно-реляционных БД.

Три главных характеристики:

· целостность,

· масштабируемость

· отказоустойчивость.

Для создания ООСУБД были реализованы несколько проектов, например: ORION, O2 и Cache. ООСУБД полностью поддерживают объектно-ориентированные языки программирования. Разработчики, применяющие C++ или Smalltalk, могут использовать такие преимущества объектной технологии, как наследование, инкапсуляция и полиморфизм

Язык SQL (Structured Query Language). Интерактивный и встроенный SQL. Составные части SQL. Типы данных SQL. Основные типы команд SQL

SQL – это язык структурированных запросов (Structured Query Language) к реляционным БД.

Используя SQL-запросы, можно выбирать из таблиц БД только необходимые записи. При этом мы можем получить доступ не просто к одной таблице, а к сложной выборке из связанных между собой таблиц или наборов данных. SQL как стандартный способ управления БД реализован во многих СУБД, включая Microsoft Access и SQL Server.

Существуют две формы языка SQL: интерактивный SQL и встроенный SQL.

Интерактивный SQL используется для задания SQL-запросов пользователем и получения результата в интерактивном режиме.

Встроенный SQL состоит из команд SQL, встроенных внутрь программ, обычно написанных на каком-то другом языке (Паскаль, С, C++и др.).

Составные части SQL. И интерактивный, и встроенный SQL подразделяются на следующие составные части: DDL, или язык определения данных; DML, или язык манипулирования данными; DQL, или язык запросов; DCL, или язык управления данными; Команды администрирования данных; Команды управления транзакциями.

Типыданных SQL

CHARACTER (CHAR) представляет собой символьные строки фиксированной длины.

INTEGER — представление целых чисел в диапазоне от –231 до +231.

SMALLINT — используется для представления целых чисел в диапазоне от –215 до +215.

DECIMAL (точность [, масштаб ])— десятичное число с фиксированной точкой, точность определяет количество значащих цифр в числе. Масштаб указывает максимальное число цифр справа от точки.

FLOAT [(точность)] — число с плавающей точкой и указанной миним. точностью.

REAL — число такое же, как при типе FLOAT, за исключением определения точности по умолчанию (в зависимости от конкретной реализации SQL).

DOUBLE PRECISION — число аналогично REAL, но точность в два раза выше точности REAL.

Дата и время -Тип данных, предназначенный для представления даты и времени, также является нестандартным, хотя и чрезвычайно полезным.

Неопределенные или пропущенные данные (NULL) Для обозначения отсутствующих, пропущенных или неизвестных значений атрибута в SQL используется ключевое слово NULL.

Типы команд SQL

1. Команды языка определения данных (data definition language — DDL) позволяют создавать новые таблицы в БД, добавлять индексы и т.д.: CREATE TABLE - создать таблицу, ALTER TABLE - модифицировать таблицу, DROP TABLE - удалить таблицу, CREATE INDEX - создать индекс, ALTER INDEX - модифицировать индекс, DROP INDEX - удалить индекс.

2. Команды языка обработки данных (data manipulation language — DML) используются для добавления, корректировки и удаления строк в таблицах и включают команды: INSERT - вставить данные в таблицу, UPDATE - обновить данные, DELETE - удалить данные.

3. Команда языка запросов данных (dataquerylanguage — DQL) (единственная команда) используется для получения данных из таблиц и определения формы представления этих данных: SELECT - выполнить запрос из таблиц базы.

4. Команды языка управления данными (data control language— DCL) определяют доступ отдельных пользователей и групп пользователей к объектам БД посредством полномочий, предоставляемых и отменяемых командами: GRANT - предоставить привилегии, REVOKE - отменить привилегии.

5. Команды языка обработки транзакций (transaction processing language — TPL) обеспечивают обновление всех строк, используемых в операторе DML, и включают следующие команды: BEGIN TRANSACTION - начать транзакцию, COMIT TRANSACTION - завершить транзакцию, SAVE TRANSACTION - создать точку сохранения внутри транзакции.

6. Команды языка управления курсором (cursor control language — CCL) выполняют операции с отдельными строками одной или нескольких таблиц и включают команды: DECLARE CURSOR, FETCH INTO и UPDATE WHERE CURRENT.



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 2496; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 100.26.140.179 (0.12 с.)