17216

Организация баз и банков данных

Шпаргалка

Информатика, кибернетика и программирование

ВОПРОСЫ НА ЭКЗАМЕН по предмету Организация баз и банков данных для студентов заочной формы обучения специальности 7.091501 – компьютерные системы и сети КСС Полный список вопросов Основные требования к разработке БД Реляционная модель данных Свойст...

Русский

2013-06-30

202 KB

0 чел.

ВОПРОСЫ НА ЭКЗАМЕН

по предмету «Организация баз и банков данных»

для студентов заочной формы обучения

специальности  7.091501 – компьютерные системы и сети (КСС)

Полный список вопросов

  1.  Основные требования к разработке БД
  2.  Реляционная модель данных
  3.  Свойства реляционных отношений. Ключ отношения.
  4.  Характеристика связей между отношениями
  5.  Первичный и внешний ключи
  6.  Ссылочная целостность
  7.  Поддержка ссылочной целостности
  8.  Операции реляционной алгебры
  9.  Специальные реляционные операции
  10.  Свойства операции соединения
  11.  Функциональные зависимости
  12.  Аксиомы вывода функциональных зависимостей
  13.  Первая нормальная форма
  14.  Вторая нормальная форма
  15.  Третья нормальная форма
  16.  Основные категории языка SQL
  17.  Создание структуры БД средствами SQL
  18.  Изменения структуры БД средствами SQL
  19.  Общая структура запроса на выборку
  20.  Сортировка и группировка данных в SQL
  21.  Условия выбора данных в SQL
  22.  Использование итоговых функций в SQL
  23.  Использование параметров при выборе данных в SQL
  24.  Выбор данных из нескольких таблиц. Соединение таблиц.
  25.  Подчиненные запросы. Ограничения при использовании подчиненных запросов
  26.  Логические операторы (предикаты) в SQL
  27.  Запрос на создание структуры БД
  28.  Запрос на удаление данных
  29.  Запрос на добавления данных
  30.  Запрос на изменения данных

Обязательные вопросы

  1.   Модели данных.
  2.  Структура реляционной модели данных.
  3.  Операции реляционной алгебры.
  4.  Ограничение целостности базы данных. Первичный и внешний ключи.
  5.  Типы связей между отношениями базы данных.
  6.  Функциональные зависимости между атрибутами отношения
  7.  Нормализация базы данных
  8.  Запрос на создание структуры базы данных средствами SQL.
  9.  Запрос на выборку данных средствами SQL.
  10.  Запрос на модификацию данных средствами SQL.

МАТЕРИАЛ ДЛЯ ИЗУЧЕНИЯ ОБЯЗАТЕЛЬНЫХ ВОПРОСОВ

1. Модели данных

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

Сетевые модели также создавались для мало ресурсных ЭВМ. Это достаточно сложные структуры, состоящие из "наборов" – поименованных двухуровневых деревьев. "Наборы" соединяются с помощью "записей-связок", образуя цепочки и т.д. При разработке сетевых моделей было выдумано множество "маленьких хитростей", позволяющих увеличить производительность СУБД, но существенно усложнивших последние. Прикладной программист должен знать массу терминов, изучить несколько внутренних языков СУБД, детально представлять логическую структуру базы данных для осуществления навигации среди различных экземпляров, наборов, записей и т.п. Один из разработчиков операционной системы UNIX сказал "Сетевая база – это самый верный способ потерять данные".

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

Основы реляционной модели данных были впервые изложены в статье Е.Кодда в 1970 г. Эта работа послужила стимулом для большого количества статей и книг, в которых реляционная модель получила дальнейшее развитие. Наиболее распространенная трактовка реляционной модели данных принадлежит К.Дейту. Согласно Дейту, реляционная модель состоит из трех частей:

  •  Структурной части.
  •  Целостной части.
  •  Манипуляционной части.

Структурная часть описывает, какие объекты рассматриваются реляционной моделью. Постулируется, что единственной структурой данных, используемой в реляционной модели, являются нормализованные n-арные отношения.

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

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

2. Структура реляционной модели данных.

В реляционной модели достигается гораздо более высокий уровень абстракции данных, чем в иерархической или сетевой. В реляционной модели представление данных не зависит от способа их физической организации. Это обеспечивается за счет использования математической теории отношений (само название "реляционная" происходит от английского relation - "отношение").

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

Определения: 

  •   Декартово произведение: Для заданных конечных множеств (не обязательно различных) декартовым произведением называется множество произведений вида: , где

Пример: если даны два множества A (a1,a2,a3) и B (b1,b2), их декартово произведение будет иметь вид С=A*B (a1*b1, a2*b1, a3*b1, a1*b2, a2*b2, a3*b2) 

  •   Отношение: Отношением R, определенным на множествах называется подмножество декартова произведения . При этом:
    •  множества называются доменами отношения
    •  элементы декартова произведения называются кортежами 
    •  число n определяет степень отношения (n=1 - унарное, n=2 - бинарное, ..., n-арное)
    •  количество кортежей называется мощностью отношения 

Пример: на множестве С из предыдущего примера могут быть определены отношения R1 (a1*b1, a3*b2) или R2 (a1*b1, a2*b1, a1*b2) 

Отношения удобно представлять в виде таблиц. На рис. 4.1 представлена таблица (отношение степени 5), содержащая некоторые сведения о работниках гипотетического предприятия. Строки таблицы соответствуют кортежам. Каждая строка фактически представляет собой описание одного объекта реального мира (в данном случае работника), характеристики которого содержатся в столбцах.

Рис.4.1 Основные компоненты реляционного отношения.

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

Именованное множество пар "имя атрибута - имя домена" называется схемой отношения. Мощность этого множества - называют степенью или "арностью" отношения. Набор именованных схем отношений представляет собой схему базы данных.

3. Операции реляционной алгебры

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

В рассмотренных ниже примерах  используются следующие отношения:

P

D1

D2

D3

Q

D4

D5

R

M

P

Q

T

S

A

B

1

11

x

x

1

x

101

5

a

5

a

2

11

y

x

2

y

105

3

a

10

b

3

11

z

y

1

z

500

9

a

15

c

4

12

x

w

50

1

b

2

d

w

10

2

b

6

a

w

300

4

b

1

b

В реляционной алгебре определены следующие операций обработки отношений:

ПРОЕКЦИЯ (ВЕРТИКАЛЬНОЕ ПОДМНОЖЕСТВО).

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

ВЫБОРКА (ОГРАНИЧЕНИЕ, ГОРИЗОНТАЛЬНОЕ ПОДМНОЖЕСТВО).

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

ОБЪЕДИНЕНИЕ.
Отношения-операнды в этом случае должны быть определены по одной схеме. Результирующее отношение содержит все строки операндов за исключением повторяющихся.

ДЕКАРТОВО ПРОИЗВЕДЕНИЕ

Входные отношения могут быть определены по разным схемам. Схема результирующего отношения включает все атрибуты исходных. Кроме того:

  •  степень результирующего отношения равна сумме степеней исходных отношений
    •  мощность результирующего отношения равна произведению мощностей исходных отношений.

СОЕДИНЕНИЕ
Данная операция имеет сходство с ДЕКАРТОВЫМ ПРОИЗВЕДЕНИЕМ. Однако, здесь добавлено условие, согласно которому вместо полного произведения всех строк в результирующее отношение включаются только строки, удовлетворяющие определенному соотношению между атрибутами соединения
1,A2) соответствующих отношений.

4. Ограничения целостности базы данных. Первичный и внешний ключи.

Целостность данных - это механизм поддержания соответствия базы данных предметной области. В реляционной модели данных определены два базовых требования обеспечения целостности:

  •  целостность ссылок
  •  целостность отношений.

Целостность отношений.

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

каждый кортеж любого отношения должен отличатся от любого другого кортежа этого отношения (т.е. любое отношение должно обладать первичным ключом).

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

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

Целостность ссылок

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

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

Требование целостности по ссылкам состоит в следующем:

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

Пусть, например, даны отношения ОТДЕЛ (N_ОТДЕЛА, ИМЯ_ОТДЕЛА) и СОТРУДНИК (N_СОТРУДНИКА, N_ОТДЕЛА, ИМЯ_СОТРУДНИКА), в которых хранятся сведения о работниках предприятия и подразделениях, где они работают. Отношение ОТДЕЛ в данной паре является родительским, поэтому его первичный ключ "N_отдела" присутствует в дочернем отношении СОТРУДНИК. Требование целостности по ссылкам означает здесь, что в таблице СОТРУДНИК не может присутствовать кортеж со значением атрибута "N_отдела", которое не встречается в таблице ОТДЕЛ. Если такое значение в отношении ОТДЕЛ отсутствует,  значение внешнего ключа  в отношении СОТРУДНИК считается неопределенным.

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

Существуют две основные стратегии поддержания ссылочной целостности:

  •  RESTRICT (ОГРАНИЧИТЬ)- не разрешать выполнение операции, приводящей к нарушению ссылочной целостности. Это самая простая стратегия, требующая только проверки, имеются ли кортежи в дочернем отношении, связанные с некоторым кортежем в родительском отношении.
  •  CASCADE (КАСКАДИРОВАТЬ)- разрешить выполнение требуемой операции, но внести при этом необходимые поправки в других отношениях так, чтобы не допустить нарушения ссылочной целостности и сохранить все имеющиеся связи. Изменение начинается в родительском отношении и каскадно выполняется в дочернем отношении. В реализации этой стратегии имеется одна тонкость, заключающаяся в том, что дочернее отношение само может быть родительским для некоторого третьего отношения. При этом может дополнительно потребоваться выполнение какой-либо стратегии и для этой связи и т.д. Если при этом какая-либо из каскадных операций (любого уровня) не может быть выполнена, то необходимо отказаться от первоначальной операции и вернуть базу данных в исходное состояние. Это самая сложная стратегия, но она хороша тем, что при этом не нарушается связь между кортежами родительского и дочернего отношений.

Первичный и внешний ключи

Поскольку отношение – это множество, а множества по определению не содержат совпадающих элементов, то никакие два кортежа отношения не могут быть дубликатами друг друга в любой произвольно-заданный момент времени. Пусть R – отношение с атрибутами A1, A2, ..., An. Говорят, что множество атрибутов K=(Ai, Aj, ..., Ak) отношения R является возможным ключом R тогда и только тогда, когда удовлетворяются два независимых от времени условия:

Уникальность: в произвольный заданный момент времени никакие два различных кортежа R не имеют одного и того же значения для Ai, Aj, ..., Ak.

Минимальность: ни один из атрибутов Ai, Aj, ..., Ak не может быть исключен из K без нарушения уникальности.

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

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

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

Формальное определение.

Пусть дано отношение . Подмножество атрибутов отношения будем называть внешним ключом, если:

  1.  Существует отношение ( и не обязательно различны) с потенциальным ключом .
  2.  Каждое значение в отношении всегда совпадает со значением для некоторого кортежа из , либо является null-значением.

Замечание. Внешний ключ, также как и возможный, может быть простым и составным.

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

Замечание. Внешний ключ, как правило, не обладает свойством уникальности. Так и должно быть, т.к. в дочернем отношении может быть несколько кортежей, ссылающихся на один и тот же кортеж родительского отношения. Это, собственно, и дает тип отношения "один-ко-многим".

Замечание. Для внешнего ключа не требуется, чтобы он был компонентом некоторого возможного ключа.

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

Отношение – Таблица (иногда Файл),
Кортеж –
Строка (иногда Запись),
Атрибут –
Столбец, Поле.

5. Типы связей между отношениями (сущностями) базы данных.

Любой фрагмент предметной области может быть представлен как множество сущностей, между которыми существует некоторое множество связей. Дадим определения:

Сущность (entity) - это объект, который может быть идентифицирован неким способом, отличающим его от других объектов. Примеры: конкретный человек, предприятие, событие и т.д.

(МОЖНО РАССМАТРИВАТЬ СУЩНОСТЬ КАК ТАБЛИЦУ) !!!

Связь (relationship) - это ассоциация, установленная между несколькими сущностями.

Между двумя сущностям, например, А и В возможны четыре вида связей.

Первый тип – связь ОДИН-К-ОДНОМУ (1:1): в каждый момент времени каждому представителю (экземпляру) сущности А соответствует 1 или 0 представителей сущности В:

Студент может не "заработать" стипендию, получить обычную или одну из повышенных стипендий.

Второй тип – связь ОДИН-КО-МНОГИМ (1:М): одному представителю сущности А соответствуют 0, 1 или несколько представителей сущности В.

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

Так как между двумя сущностями возможны связи в обоих направлениях, то существует еще два типа связи МНОГИЕ-К-ОДНОМУ (М:1) и МНОГИЕ-КО-МНОГИМ (М:N).

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

6. Функциональные зависимости.

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

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

Определение 1. Функциональная зависимость 

В отношении R атрибут Y функционально зависит от атрибута X (X и Y могут быть составными) в том и только в том случае, если каждому значению X соответствует в точности одно значение Y: X R.

Определение 2. Полная функциональная зависимость 

Функциональная зависимость X R называется полной, если атрибут Y не зависит функционально от любого точного подмножества X.

Определение 3. Транзитивная функциональная зависимость 

Функциональная зависимость X R называется транзитивной, если существует такой атрибут Z, что имеются функциональные зависимости X Z и Z Y и отсутствует функциональная зависимость Z X.

Определение 4. Неключевой атрибут 

Неключевым атрибутом называется любой атрибут отношения, не входящий в состав первичного ключа.

Определение 5. Взаимно независимые атрибуты 

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

Пример 1. В отношении (ключевые атрибуты подчеркнуты)

Н_СОТР

ФАМ

Н_ОТД

ТЕЛ

Н_ПРО

ПРОЕКТ

Н_ЗАДАН

можно привести следующие примеры функциональных зависимостей:

Зависимость атрибутов от ключа отношения:

{Н_СОТР, Н_ПРО} ФАМ 

{Н_СОТР, Н_ПРО} Н_ОТД 

{Н_СОТР, Н_ПРО} ТЕЛ 

{Н_СОТР, Н_ПРО} ПРОЕКТ 

{Н_СОТР, Н_ПРО} Н_ЗАДАН 

Зависимость атрибутов, характеризующих сотрудника от табельного номера сотрудника:

Н_СОТР ФАМ 

Н_СОТР Н_ОТД 

Н_СОТР ТЕЛ 

Зависимость наименования проекта от номера проекта:

Н_ПРО ПРОЕКТ 

Зависимость номера телефона от номера отдела:

Н_ОТД ТЕЛ

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

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

7. Нормализации базы данных.

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

Первая нормальная форма.

Для обсуждения первой нормальной формы необходимо дать два определения:

Простой атрибут - атрибут, значения которого атомарны (неделимы).

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

Определение первой нормальной формы: 

отношение находится в 1НФ если значения всех его атрибутов атомарны.

То есть, Первая нормальная форма (1НФ) - это обычное отношение. Согласно определению отношений, любое отношение автоматически уже находится в 1НФ. Напомним кратко свойства отношений (это и будут свойства 1НФ):

  •  В отношении нет одинаковых кортежей.
  •  Кортежи не упорядочены.
  •  Атрибуты не упорядочены и различаются по наименованию.
  •  Все значения атрибутов атомарны.

Вторая нормальная форма.

Очень часто первичный ключ отношения включает несколько атрибутов (в таком случае его называют составным. При этом вводится понятие полной функциональной зависимости.

Определение: 

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

Пример: 

Пусть имеется отношение ПОСТАВКИ (N_ПОСТАВЩИКА, ТОВАР,  ЦЕНА).
Поставщик может поставлять различные товары, а один и тот же товар может поставляться разными поставщиками. Тогда ключ отношения -
"N_поставщика + товар". Пусть все поставщики поставляют товар по одной и той же цене. Тогда имеем следующие функциональные зависимости:

  •  N_поставщика, товар -> цена 
  •  товар -> цена 

Неполная функциональная зависимость атрибута "цена" от ключа приводит к следующей аномалии: при изменении цены товара необходим полный просмотр отношения для того, чтобы изменить все записи о его поставщиках. Данная аномалия является следствием того факта, что в одной структуре данных объединены два семантических факта. Следующее разложение дает отношения во 2НФ:

  •  ПОСТАВКИ (N_ПОСТАВЩИКА, ТОВАР)
  •  ЦЕНА_ТОВАРА (ТОВАР, ЦЕНА)

Определение второй нормальной формы: 

Отношение находится во 2НФ, если оно находится в 1НФ и каждый неключевой атрибут функционально полно зависит от ключа.

Третья нормальная форма.

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

Определение: 

Пусть X, Y, Z - три атрибута некоторого отношения. При этом X --> Y и Y --> Z, но обратное соответствие отсутствует, т.е. Z -/-> Y и Y -/-> X. Тогда  Z транзитивно зависит от X. (“-/->” – перечеркнутая стрелка).

Пусть имеется отношение ХРАНЕНИЕ (ФИРМА, СКЛАД, ОБЪЕМ), которое содержит информацию о фирмах, получающих товары со складов, и объемах этих складов. Ключевой атрибут - "фирма". Если каждая фирма может получать товар только с одного склада, то в данном отношении имеются следующие функциональные зависимости:

  •  фирма -> склад 
  •  склад -> объем 

При этом возникают аномалии:

  •  если в данный момент ни одна фирма не получает товар со склада, то в базу данных нельзя ввести данные о его объеме (т.к. не определен ключевой атрибут)
  •  если объем склада изменяется, необходим просмотр всего отношения и изменение кортежей для всех фирм, связанных с данным складом.

Для устранения этих аномалий необходимо декомпозировать исходное отношение на два:

  •  ХРАНЕНИЕ (ФИРМА, СКЛАД)
  •  ОБЪЕМ_СКЛАДА (СКЛАД, ОБЪЕМ)

Определение третьей нормальной формы: 

Отношение находится в 3НФ, если оно находится во 2НФ и каждый неключевой атрибут нетранзитивно зависит от первичного ключа.

8. Запрос на создание структуры базы данных средствами SQL.

Операторы DDL (Data Definition Language) - операторы определения объектов базы данных

  •  CREATE TABLE - создать таблицу
  •  ALTER TABLE - изменить таблицу
  •  DROP TABLE - удалить таблицу

Создание таблицы:

 

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

       (<имя_столбца> <тип_столбца>

                [NOT NULL]

                [UNIQUE | PRIMARY KEY]

                [REFERENCES <имя_мастер_таблицы> [<имя_столбца>]]

         , ...)

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

  •  NOT NULL - в этом случае элементы столбца всегда должны иметь определенное значение (не NULL)
  •  один из взаимоисключающих параметров UNIQUE - значение каждого элемента столбца должно быть уникальным или PRIMARY KEY - столбец является первичным ключом.
  •  REFERNECES <имя_мастер_таблицы> [<имя_столбца>] - эта конструкция определяет, что данный столбец является внешним ключом и указывает на ключ какой мастер_таблицы он ссылается.

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

Пример: создание базы данных publications: 

  CREATE DATABASE publications;

CREATE TABLE authors (au_id INT PRIMARY KEY,

               author VARCHAR(25) NOT NULL);

CREATE TABLE publishers (pub_id INT PRIMARY KEY,

               publisher VARCHAR(255) NOT NULL,url VARCHAR(255));

CREATE TABLE titles (title_id INT PRIMARY KEY,

               title VARCHAR(255) NOT NULL,

               yearpub INT,

               pub_id INT REFERENCES publishers(pub_id));

CREATE TABLE titleautors (au_id INT REFERENCES authors(au_id),

               title_id INT REFERENCES titles(title_id));

CREATE TABLE wwwsites (site_id INT PRIMARY KEY,

               site VARCHAR(255) NOT NULL,

               url VARCHAR(255));

CREATE TABLE wwwsiteauthors (au_id INT REFERENCES authors(au_id),

               site_id INT REFERENCES wwwsites(site_id));

Удаление таблицы:
            DROP TABLE <имя_таблицы> 

Модификация таблицы: 

 

Добавить столбцы

ALTER TABLE <имя_таблицы> ADD   
           (<имя_столбца> <тип_столбца>   
                    [NOT NULL]   
                    [UNIQUE | PRIMARY KEY]  
                      
[REFERENCES <имя_мастер_таблицы> [<имя_столбца>]]  
            ,...)

Удалить столбцы

ALTER TABLE <имя_таблицы> DROP (<имя_столбца>,...)

Модификация типа столбцов

ALTER TABLE <имя_таблицы> MODIFY  
           (<имя_столбца> <тип_столбца>  
                    [NOT NULL]  
                    [UNIQUE | PRIMARY KEY]  
                    [REFERENCES <имя_мастер_таблицы> <имя_столбца>]]  
            ,...)

 

9. Запросы на выборку данных средствами SQL.

Для извлечения записей из таблиц в SQL определен оператор SELECT. С помощью этой команды осуществляется не только операция реляционной алгебры "выборка" (горизонтальное подмножество), но и предварительное соединение (join) двух и более таблиц. Это наиболее сложное и мощное средство SQL, полный синтаксис оператора

SELECT имеет вид:

      SELECT [ALL | DISTINCT] <список_выбора>

           FROM <имя_таблицы>, ...

           [ WHERE <условие> ]

           [ GROUP BY <имя_столбца>,... ]

              [ HAVING <условие> ]

           [ORDER BY <имя_столбца> [ASC | DESC],... ]

Порядок предложений в операторе SELECT должен строго соблюдаться (например, GROUP BY должно всегда предшествовать ORDER BY), иначе это приведет к появлению ошибок.

Этот оператор всегда начинается с ключевого слова SELECT. В конструкции <список_выбора> определяется столбец или столбцы, включаемые в результат. Он может состоять из имен одного или нескольких столбцов, или из одного символа * (звездочка), определяющего все столбцы. Элементы списка разделяются запятыми.

Пример: получить список всех авторов

        SELECT author FROM authors;

получить список всех полей таблицы authors:

        SELECT * FROM authors;

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

Например, найдем все книги, опубликованные после 1996 года:

        SELECT title FROM titles WHERE yearpub > 1996;

Допустим теперь, что нам надо найти все публикации за интервал 1995 - 1997 гг. Это условие можно записать в виде:

        SELECT title FROM titles WHERE yearpub>=1995 AND yearpub<=1997;

SQL позволяет выполнять различные арифметические операции над столбцами результирующего отношения. В конструкции <список_выбора> можно использовать константы, функции и их комбинации с арифметическими операциями и скобками. Например, чтобы узнать, сколько лет прошло с 1992 года (год принятия стандарта SQL-92) до публикации той или иной книги можно выполнить команду:

     SELECT title, yearpub-1992 FROM titles WHERE yearpub > 1992;

В арифметических выражениях допускаются операции сложения (+), вычитания (-), деления (/), умножения (*), а также различные функции (COS, SIN, ABS - абсолютное значение и т.д.).

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

  •  AVG(<имя поля>) - среднее по всем значениям данного поля
  •  COUNT(<имя поля>) или COUNT (*) - число записей
  •  MAX(<имя поля>) - максимальное из всех значений данного поля
  •  MIN(<имя поля>) - минимальное из всех значений данного поля
  •  SUM(<имя поля>) - сумма всех значений данного поля

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

          SELECT MIN(yearpub) FROM titles;

подсчитать количество книг в нашей базе данных:

          SELECT COUNT(*) FROM titles;

10. Запросы на модификацию данных средствами SQL.

Добавить новую запись в таблицу:

INSERT INTO <имя_таблицы> [ (<имя_столбца>,<имя_столбца>,...) ]

                           VALUES (<значение>,<значение>,..)

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

Например:

     INSERT INTO publishers VALUES (16,"Microsoft Press","http://www.microsoft.com");

Пример с указанием списка столбцов:

     INSERT INTO publishers (publisher,pub_id) 

            VALUES ("Super Computer Publishing",17);

Модификация записей:

     UPDATE <имя_таблицы> SET <имя_столбца>=<значение>,...

            [WHERE <условие>]

Если задано ключевое слово WHERE и условие, то команда UPDATE применяется только к тем записям, для которых оно выполняется. Если условие не задано, UPDATE применяется ко всем записям.

Пример:

     UPDATE publishers SET url="http://www.superpub.com" WHERE pub_id=17;

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

  •  операции сравнения: > , < , >= , <= , = , <> , != . В SQL эти операции могут применяться не только к числовым значениям, но и к строкам ( "<" означает раньше, а ">" позже в алфавитном порядке) и датам ( "<" раньше и ">" позже в хронологическом порядке).
  •  операции проверки на вхождение в диапазон: BETWEEN и NOT BETWEEN.
  •  отдельные операции соединяются связями AND, OR, NOT и группируются с помощью скобок.

Удаление записей

    DELETE FROM <имя_таблицы> [ WHERE <условие> ]

Удаляются все записи, удовлетворяющие указанному условию. Если ключевое слово WHERE и условие отсутствуют, из таблицы удаляются все записи.

Пример:

    DELETE FROM publishers WHERE publisher = "Super Computer Publishing";

Эта команда удаляет запись об издательстве Super Computer Publishing.

Список литературы для самостоятельного изучения

  1.  Т. Коннолли, К. Бегг, А. Страчан Базы данных: проектирование, реализация и сопровождение. Терия и практика, 2-е изд.: Пер. с англ.: Уч. Пос. – М.: Издательский дом “Вильямс”, 2000. – 1120 с.: ил.
  2.  Дейт К. Введение в системы баз данных, 7-е издание.: Пер. с англ.. – М.: Издательский дом “Вильямс”, 2001. – 1072 с., ил.
  3.  Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс.: Пер. с англ. – М.: Издательский дом “Вильямс”, 2003. – 1088 с.: ил.
  4.  С.Д. Кузнецов Введение в стандарты языка баз данных SQL - http://www.citforum.ru/database/sqlbook/index.shtml
  5.  Обзор языка структурированных запросов SQL - http://www.infocity.kiev.ua
  6.  Шкарина Л. Язык SQL: учебный курс. – СПб.: Питер, 2001.
  7.  Д.Грофф, П.Вайнберг. SQL: полное руководство. - BHV-Киев, 1999.
  8.  Зеленков Ю.А Введение в базы данных. www.vsma.ac.ru\~pharm\library\books\db\toc.html
  9.  Пушников А.Ю. Введение в системы управления базами данных. www.citforum.ru\database\dblearn\index.shtml.htm


 

А также другие работы, которые могут Вас заинтересовать

8727. Особенности социального познания. Конкретно-исторический подход к социальным явлениям 48.5 KB
  Особенности социального познания. Конкретно-исторический подход к социальным явлениям Вариант 1 Познание - процесс деятельности человека, основным содержанием которого является отражение объективной реальности в его сознании, а результатом
8728. Социальная структура. Тенденции изменения социальной структуры российского общества 47 KB
  Социальная структура. Тенденции изменения социальной структуры российского общества Вариант 1 Социальная (стратификационная) структура - расслоение и иерархическая организация различных слоев общества, а также совокупность институтов и отношений меж...
8729. Социальный статус личности. Социальные роли личности 34.5 KB
  Социальный статус личности. Социальные роли личности Вариант 1 Социальный статус - это положение в обществе, связанное с определенной совокупностью прав и обязанностей. Статусы бывают: предписанные (национальность, место рождения, социаль...
8730. Духовное производство и духовное потребление 36.5 KB
  Духовное производство и духовное потребление Вариант 1 Духовное производство - деятельность сознания в особой общественной форме, осуществляемое специализированными группами людей, которые профессионально заняты квалифицированным умственным тру...
8731. Трудовая деятельность 40 KB
  Трудовая деятельность Вариант 1 Трудовая деятельность людей (процесс материального производства) - это одна из форм человеческой деятельности, направленная на преобразование природного мира и создание материальных благ. В структуре т...
8732. Свобода в деятельности людей 36.5 KB
  Свобода в деятельности людей Вариант 1 Свобода - это самостоятельность социальных и политических субъектов (в том числе и личности), выражающаяся в их способности и возможности делать собственный выбор и действовать в соответствии со своими инт...
8733. Исторический процесс и его участники 45 KB
  Исторический процесс и его участники Вариант 1 Исторический процесс - временная последовательность сменяющих друг друга событий, которые явились результатом деятельности многих поколений людей. Основу исторического процесса составляют исторические ф...
8734. Политика как деятельность, ее объекты, субъекты, цели и средства 54.5 KB
  Политика как деятельность, ее объекты, субъекты, цели и средства Вариант 1 Слово политика произошло от греческого слова politike, что означает в переводе на русский язык государственные дела. Среди причин - поляризация общества, появление соц...
8735. Политическая идеология 32.5 KB
  Политическая идеология Вариант 1 Политическая идеология - система идей и взглядов, выражающая коренные интересы, мировоззрение, какого-либо субъекта политики (класса, нации, общества, партии, общественного движения). Политическая идеология - те...