Рефераты. Язык SQL

Язык SQL

федеральное агентство по образованию

государственное образовательное учреждение высшего профессионального образования

Российский государственный гуманитарный университет

институт ИНФОРМАЦИОННЫХ  НАУК И ТЕХНОЛОГИЙ БЕЗОПАСНОСТИ

 

 

Факультет информатики

Специальность: прикладная информатика

 

 

 

Математическая логика

Язык SQL

 

 

 

                           Выполнил

Романов А.Н.                                                         

                                                                               

 

 

 


Москва 2007


Содержание


Язык запросов SQL                                                                                                                       3         

Основные инструменты                                                                                                               9

Оператор SELECT                                                                                                                         11

Использование имён и вложенных запросов                                                                             12

Объединения и внешние соединения                                                                                         13

Математические функции и средства работы с датами                                                             15       

Группы и агрегатные функции                                                                                                     17

Оператор CASE                                                                                                                             18

Создание таблиц и манипуляции с данными                                                                             20





































Язык запросов SQL


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

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

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

Прогресс в области сетевых технологий поспособствовал возникновению проблем организации доступа к данным, располо­женным на серверах, с удаленных компью­теров — участников сети. Для оптимизации этого процесса и снижения сетевого трафи­ка Международной организацией по стан­дартизации (ISO) был разработан и внедрен структурированный язык запросов SQL.

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

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

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


быть одинакового типа. В каждой таблице, как правило, имеются специальные поля, кото­рые позволяют однозначно идентифицировать ту или иную запись — они называются пер­вичными ключами или первичными индекса­ми. Такие поля помогают отличать одну запись от другой, даже если все остальные поля не­скольких таких записей абсолютно идентичны. Например, представьте, что вы разрабатываете справочник сотрудников своей организации, и при этом каждая запись хранит данные об од­ном сотруднике, а их выборка осуществляется по полю «Фамилия». Может оказаться так, что в организации работает несколько человек с одинаковой фамилией. Чтобы отличить эти за­писи друг от друга, применяются первичные индексные поля. Чаще всего за тип данных первичного ключа берется целочисленное зна­чение счетчика — в таком случае при добав­лении новой записи в таблицу значения этого поля заполняются автоматически. Однако не запрещается использовать в качестве первич­ного ключа поле, имеющее, к примеру, сим­вольный тип данных, хотя подобные ситуации возникают крайне редко.

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

По признаку метода доступа БД делятся на локальные, сетевые и распределенные.

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

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

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

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

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

Целью любой СУБД являться предоставление пользователю простых механизмов доступа и манипулирования данными. Существует много различных методов ее достижения, одним из которых является язык SQL. Расши­фрованная и переведенная на русский язык эта аббревиатура будет выглядеть как Струк­турированный Язык Запросов.

Стандарт языка SQL. определяется Аме­риканским национальным институтом стан­дартов (ANSI) и Международной органи­зацией по стандартизации (ISO). Однако некоторые производители БД вносят в язык свои изменения и дополнения. Например, компания Огас1е создала язык PL/SQL, кото­рый является процедурным расширением оригинального SQL.

Однако и стандартный SQL может исполь­зоваться в двух различных вариантах — интерактивном и вложенном. Первый пред­ставляется собой отдельный программный модуль на SQL, который сам выполняет за­просы и отображает результаты работы. Второй — это внедрение элементов SQL в другой язык высокого уровня, например С или Delphi. В этом случае основная про­грамма самостоятельно формирует запросы для сервера SQL, а потом использует ре­зультаты выборок из базы, не предъявляя их пользователю в чистом виде.

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

Действительно, чтобы сформировать ре­ляционную базу данных на С, нужно было бы описать как минимум один объект (дву­мерный массив), называемый в SQL. табли­цей, который должен иметь возможность менять размер для вмещения любого необ­ходимого числа строк. Затем пришлось бы создавать процедуры для помещения зна­чений в такую таблицу, а также поиска и извлечения этих значений. Это непросто даже на первый взгляд. Так, если бы вы захотели найти все строки в таблице «TAB», в которых значения некоего поля «num» равно 5, то необходимо было бы выполнить по шагам весьма сложную про­цедуру.

Страницы: 1, 2, 3



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.