Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SQL.doc
Скачиваний:
20
Добавлен:
22.02.2015
Размер:
530.43 Кб
Скачать

1. Введение

Язык SQL (Structured Query Language — структурированный язык за­просов) был разработан в 1970 г. компанией ЮМ как язык для рабо­ты с реляционными базами данных. К настоящему времени язык стал стандартным языком, который поддерживается практическими всеми системами управления базами данных как основанными на архитекту­ре клиент/сервер (например, Microsoft SQL Server, Oracle, Sybase) так и системами, расчитанными, в основном, на небольшие базы данных (Fox Pro, Paradox). Более того, удобство языка SQL привело к тому, что на­блюдается тенденция осуществлять с его помощью доступ даже к таким данным (например, с помощью технологии OLE DB), которые обычно обрабатывались иными методами: к электронной почте, к файловой си­стеме, к всевозможным системным журналам и т.д.

Язык SQL не является универсальным языком программирования, например, в SQL отсутствуют управляющие конструкции (циклы, услов­ные операторы). По сути дела, язык состоит только из операторов вы­борки, изменения данных, и управления правами доступа. Традиционно, весь язык SQL разделяется на три части: язык определения данных DDL (data definition language), язык манипулирования данными DML (data manipulation language) и язык управления данными DCL (data control language). К DDL относятся операторы работы со схемой базы данных, к DML — операторы выборки и изменения данных таблиц, не изменя­ющие схему, язык DCL состоит, в основном, из операторов управления транзакциями и назначения прав доступа.

Для того, чтобы язык SQL можно было использовать для реально­го программирования, его либо расширяют добавляя новые операторы, либо операторы SQL используют в программах на других языках про­граммирования. В первом случае получаются всевозможные диалекты SQL, специфические для каждой системы управления базами данных (например, в Microsoft SQL Server соответствующий язык называется Transact-SQL, в Oracle — PL/SQL). Во втором случае, используются раз­личные технологии, позволяющие обращаться к базам данных, такие как встроенный SQL (Embedded SQL), ODBC, OLE DB.

В 1986 г. американским национальным институтом стандартов (ANSI) был принят первый стандарт языка SQL. С тех нор стандарт языка SQL постоянно совершенствуется, а производители систем баз данных стремятся сделать свои продукты как можно более точно со­ответствующими этому стандарту. Мы описывая элементы языка SQL будем следовать стандарту SQL'92 и более поздним.

2 Создание базы данных

2.1 Реляционные базы данных

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

Пример 1 Информацию о книгах в библиотеке можно хранить в та­кой таблице:

Code

author

title

city

publishing

year

6470234

Ope 0.

Теория графов

М.

Наука

1968

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

code

author

6479235

l_ name

f name

inst

pos

Boolos

George

M.I. T.

Prof.

Jeffrey

B.ichard

Princeton

Prof.

Вместо этого можно просто создать еще одну основную таблицу, где хранить сведения об авторах:

code

1 пате

f name

inst

pos

6479235

Boolos

George

M.I. T.

Prof.

6479235

Jeffrey

Richard

Princeton

Prof.

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

code

keyword

rank

6479234

граф

100

6479234

порядок

50

6479234

группа

10

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

Задача 1 (Библиотека) Постройте таблицы, в которых можно хра­нить информацию о читателях (имя, адрес, телефон, e-mail), и о вы­даваемых им книгах.

Задача 2 (CD) Постройте таблихщ для хранения сведений о ком-пахт дисках (фирма-производитель, номер, серия, композитор, испол­нители, треки и т.д.)

Давая задачи, мы будем использовать 4-5 различных баз данных, в скоб­ках будет указываться база данных, к которой относится задача.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]