Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

билет 1

.pdf
Скачиваний:
16
Добавлен:
12.04.2015
Размер:
910.57 Кб
Скачать

SELECT staffNo, IName, salary

FROM Staff

WHERE salary > 10000;

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

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

Используемая терминология

Стандарт ISO SQL не поддерживает таких формальных терминов, как отношение, атрибут и кортеж, вместо них применяются термины таблица, столбец и строка. В нашем обсуждении языка SQL мы в основном будем опираться на терминологию ISO. Кроме того, следует отметить, что стандарт SQL не предусматривает строгой поддержки тех определений реляционной модели данных. Например, в языке SQL допускается, что созданная в результате выполнения операции SELECT таблица может содержать повторяющиеся строки, устанавливается определенная последовательность столбцов, а пользователю разрешается сортировать строки в таблице.

Запись операторов SQL

Здесь кратко описана структура операторов SQL и представлена система обозначений, которая используется для определения формата различных конструкций языка SQL. Оператор SQL состоит из зарезервированных слов, а также из слов, определяемых пользователем. Зарезервированные слова являются постоянной частью языка SQL и имеют определенное значение. Их следует записывать именно так, как указано в стандарте, и нельзя разбивать на части для переноса из одной строки в другую. Слова, определяемые пользователем, задаются самим пользователем (в соответствии с определенными синтаксическими правилами) и представляют собой имена различных объектов базы данных — таблиц, столбцов, представлений, индексов и т.д. Слова в операторе размещаются в соответствии с установленными синтаксическими правилами. Хотя в стандарте это не указано, многие диалекты языка SQL требуют задания в конце оператора некоторого символа, обозначающего окончание его текста; как правило, с этой целью используется точка с запятой (;).

Большинство компонентов операторов SQL не чувствительно к регистру. Это означает, что могут использоваться любые буквы — как строчные, так и прописные. Одним важным

исключением из этого правила являются символьные литералы — данные, которые должны вводиться точно так же, как были введены соответствующие им значения, хранящиеся в базе данных. Например, если в базе данных хранится значение фамилии 'SMITH1' , а в условии поиска указан символьный литерал 'Smith1' , то эта запись не будет найдена.

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

Каждая конструкция в операторе должна начинаться с новой строки.

Начало каждой конструкции должно быть обозначено таким же отступом, что и начало других конструкций оператора.

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

Для определения формата операторов SQL мы будем применять следующую расширенную форму системы обозначений BNF (Backus Naur Form — форма БэкусаНаура).

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

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

Вертикальная черта ( ) указывает на необходимость выбора одного из нескольких приведенных значений, например a | b | с.

Фигурные скобки определяют обязательный элемент, например {а}.

Квадратные скобки определяют необязательный элемент, например [а].

Многоточие (...) используется для указания необязательной возможности повторения конструкции от нуля до нескольких раз, например {а b}, [с...]. Эта запись означает, что после а или b может следовать от нуля до нескольких повторений с, разделенных запятыми.

На практике для определения структуры базы данных (в основном ее таблиц) используются операторы DDL, а для заполнения этих таблиц данными и выборки из них информации с помощью запросов — операторы DML. В этой главе вначале мы познакомимся с операторами DML и лишь затем обратимся к операторам языка DDL.

Подобный подход отражает большую важность операторов DML с точки зрения рядового пользователя.

Основные операторы языка SQL DML:

SELECT — выборка данных из базы;

INSERT — вставка данных в таблицу;

UPDATE — обновление данных в таблице;

DELETE — удаление данных из таблицы.

SQL Structured Query Language

SQL (ˈɛsˈkjuˈɛl; англ. Structured Query Language — «язык структурированных

запросов») — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL основывается наисчислении кортежей.

SQL является, прежде всего, информационно-логическим языком, предназначенным для

описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL нельзя назвать языком программирования [источник не указан 715 дней].[5]

Изначально, SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:

создание в базе данных новой таблицы;

добавление в таблицу новых записей;

изменение записей;

удаление записей;

выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);

изменение структур таблиц.

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

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

Каждое предложение SQL — это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:

запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);

запросы на получение данных;

запросы на добавление новых данных (записей)

запросы на удаление данных;

обращения к СУБД.

Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы — это операции над таблицами. В соответствии с этим, запросы делятся на

запросы, оперирующие самими таблицами (создание и изменение таблиц);

запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.

Каждая таблица описывается в виде перечисления своих полей (столбцов таблицы) с указанием

типа хранимых в каждом поле значений;

связей между таблицами (задание первичных и вторичных ключей);

информации, необходимой для построения индексов.

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

вставка новой строки;

изменение значений полей строки или набора строк;

удаление строки или набора строк.

Самый главный вид запроса — это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:

просмотреть полученный набор;

изменить все записи набора;

удалить все записи набора.

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

Описание

Язык SQL представляет собой совокупность

операторов; инструкций;

и вычисляемых функций.

Операторы

Согласно общепринятому стилю программирования, операторы (и другие зарезервированные слова) в SQL всегда следует писать прописными буквами.[6]

Операторы SQL делятся на:

операторы определения данных (Data Definition Language, DDL)

CREATE создает объект БД (саму базу, таблицу, представление, пользователя и т. д.)

ALTER изменяет объект

DROP удаляет объект

операторы манипуляции данными (Data Manipulation Language, DML)

SELECT считывает данные, удовлетворяющие заданным условиям

INSERT добавляет новые данные

UPDATE изменяет существующие данные

DELETE удаляет данные

операторы определения доступа к данным (Data Control Language, DCL)

GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом

REVOKE отзывает ранее выданные разрешения

DENY задает запрет, имеющий приоритет над разрешением операторы управления транзакциями (Transaction Control Language, TCL)

COMMIT применяет транзакцию.

ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции.

SAVEPOINT делит транзакцию на более мелкие участки.

Вопрос 3

Цифровой фильтр — в электронике любой фильтр, обрабатывающий цифровой сигнал с целью выделения и/или подавления определённых частот этого сигнала. В отличие от цифрового, аналоговый фильтр имеет дело с аналоговым сигналом, его свойства недискретны, соответственно передаточная функция зависит от внутренних свойств составляющих его элементов.

Характеристика цифровых фильтров

Линейный стационарный цифровой фильтр характеризуется передаточной функцией. Передаточная функция может описать, как фильтр будет реагировать на входной сигнал. Таким образом, проектирование фильтра состоит из постановки задачи (например, фильтр восьмого порядка, фильтр нижних частот с конкретной частотой среза), а затем производится расчет передаточной функции, которая определяет характеристики фильтра

.

Передаточная функция фильтра имеет вид:

где порядок фильтра - большее N или M. В данном случае это формула БИХ-фильтра. Если знаменатель равен единице, то получаем формулу КИХ-фильтра (без обратной связи).

Импульсной характеристикой называют реакцию фильтра на единичный импульс поданный на его вход. Под единичным импульсом понимается такой сигнал, что в момент времени t=0 он равен 1, а во все остальные моменты времени он равен нулю.

Если взглянуть на формулу реализующую цифровой фильтр и подставить туда единичный импульс для последовательных моментов времени, то мы увидим, что для КИХфильтров импульсная характеристика совпадает с набором коэффициентов В, и показывает веса для элементов входного временного ряда.

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

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

Сама по себе Импульсная характеристика может быть не очень удобна для изучения свойств ЦФ, поэтому вместо нее обычно используют производные от нее

Амплитудно-частотную (АЧХ) и Фазочастотную характеристики (ФЧХ).

Они связаны с импульсной характеристикой преобразованием Фурье. Эта связь опять же взаимно однозначна, т.е. из АЧХ и ФЧХ можно восстановить импульсную характеристику.

Характеристики цифровых фильтров

цифровой фильтр задается свой передаточной характеристикой , которая представляет отношение z-образов выходного сигнала ко входному :

(4

)

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

тогда Тогда подставив в передаточную характеристику дискретного

фильтра (4) , мы получим передаточную характеристику фильтра по Лапласу, из которой можно получить комплексный коэффициент передачи дискретного

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

(5

)

Амплитудно-частотная характеристика (АЧХ) цифрового фильтра может быть получена как модуль , а фазочастотная (ФЧХ) как аргумент:

(6)

Также вводят понятие групповой задержки как производной от ФЧХ:

Виды цифровых фильтров

КИХ-фильтры. Фильтр с конечной импульсной характеристикой (нерекурсивный фильтр, КИХ-фильтр) — один из видов электронных фильтров, характерной особенностью которого является ограниченность по времени его импульсной характеристики (с какогото момента времени она становится точно равной нулю). Знаменатель передаточной функции такого фильтра — некая константа.

БИХ-фильтры. Фильтр с бесконечной импульсной характеристикой (рекурсивный фильтр, БИХ-фильтр) — электронный фильтр, использующий один или более своих выходов в качестве входа, то есть образует обратную связь.Основным свойством таких фильтров является то, что их импульсная переходная характеристика имеет бесконечную длину во временной области, а передаточная функция имеет дробно-рациональный вид. Такие фильтры могут быть как аналоговыми так и цифровыми.

Выбор между КИХ- и БИХ-фильтрами зависит от относительных преимуществ обоих типов. Сравнительные характеристики фильтров обоих типов представлены в таблице:

КИХ Фильтры

БИХ фильтры

 

 

КИХ-фильтры могут иметь строго линейную

 

фазовую характеристику. Следовательно, фильтр

 

не вводит фазового искажения в сигнал, что важно

Фазовая характеристика БИХ-фильтров

во многих сферах, например, передаче данных,

нелинейна, особенно на краях полос.

биомедицине, цифровой аудио обработке или

 

обработке изображений.

 

 

 

КИХ-фильтры реализованы нерекурсивно, т.е.

Гарантировать устойчивость БИХ-

(что следует непосредственно из формулы (6.2))

фильтров удается не всегда.

они всегда устойчивы.

 

 

 

Для реализации фильтров используется ограниченное число битов. Практические последствия этого явления: шум округления и ошибки квантования

менее существенны для КИХ-фильтров

более существенны для БИХ-фильтров

 

 

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

Следовательно, для реализации предложенной

 

спецификации амплитудной характеристики с

 

КИХ необходимо больше вычислительной

Следовательно, для реализации пред-

 

мощности и памяти.

ложенной спецификации амплитудной

 

Эффективность КИХ-реализаций можно

характеристики с БИХ необходимо меньше

вычислительной мощности и памяти

значительно повысить, сыграв на вычислительной

 

скорости БПФ и обработке при нескольких

 

скоростях

 

 

 

Для получения КИХ-фильтров такое

Аналоговые фильтры легко

преобразование невозможно, поскольку для них не

преобразовать в эквивалентные цифровые

существует аналоговых прототипов. Впрочем,

БИХ-фильтры, удовлетворяющие сходным

получать произвольные частотные характеристики

спецификациям.

на КИХ-фильтрах легче.

 

 

 

Получать произвольные частотные

Получать произвольные частотные

характеристики на КИХ-фильтрах легче.

характеристики на БИХ-фильтрах сложнее.

 

 

Синтез КИХ-фильтров алгебраически сложнее,

 

если не использовать компьютерную поддержку

Синтез БИХ-фильтров осуществляется

 

разработки.

более простыми способами.

 

 

 

КИХ фильтры не рекуррентны. Это означает,

БИХ-фильтры рекуррентны. Это

что, пропустив через фильтр один и тот же сигнал,

означает, что, пропустив через фильтр один

но с "обратным ходом времени", мы получим

и тот же сигнал, но с "обратным ходом

одинаковые результаты. (верно в случае

времени", мы получим, вообще говоря,

симметричности коэффициентов)

разные результаты.

 

 

Вопрос 4

Индексы отношения. Структура индекса. Построение индекса. Поиск по индексу. Сортировка по индексу. Индекс и ключ.

Индекс (англ. index) — объект базы данных, создаваемый с целью повышения производительности поиска данных. Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному критерию путем последовательного просмотра таблицы строка за строкой может занимать много времени. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет искать строки, удовлетворяющие критерию поиска. Ускорение работы с использованием индексов достигается в первую очередь за счёт того, что индекс имеет структуру,

оптимизированную под поиск — например, сбалансированного дерева.

Некоторые СУБД расширяют возможности индексов введением возможности создания индексов по столбцам представлений[1] или индексов по выражениям.[2]Например, индекс может быть создан по выражению upper(last_name) и соответственно будет хранить ссылки, ключом к которым будет значение поля last_name в верхнем регистре. Кроме того, индексы могут быть объявлены как уникальные и как не уникальные. Уникальный индекс реализует ограничение целостности на таблице, исключая возможность вставки повторяющихся значений.

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

Обычно чем больше индексов, тем больше производительность запросов к базе данных. Однако при излишнем увеличении количества индексов падает производительность операций изменения данных (вставка/изменение/удаление), увеличивается размер БД, поэтому к добавлению индексов следует относиться осторожно.