Структура языка SQL

Автор работы: Пользователь скрыл имя, 03 Сентября 2011 в 18:18, курсовая работа

Краткое описание

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

Содержание работы

Введение...................................................................................................................4
1.Типы данных языка SQL, определенные стандартом ISO...............................6
1.1. Идентификаторы языка SQL...........................................................................6
1.2. Скалярные типы данных языка SQL..............................................................6
1.3 Точные числовые данные (тип exact numeric)................................................8
2. Средства поддержки целостности данных......................................................13
2.1. Обязательные данные.....................................................................................13
2.2. Ограничения для доменов.............................................................................14
2.3. Целостность сущностей.................................................................................16
2.4. Ссылочная целостность.................................................................................17
2.5. Требования данного предприятия................................................................20
3. Определение данных.........................................................................................22
3.1. Создание баз данных......................................................................................23
3.2. Создание таблиц (оператор CREATE TABLE)............................................24
3.3. Модификация определения таблицы (оператор ALTER TABLE).............28
3.4. Удаление таблиц (оператор DROP TABLE)................................................29
3.5. Создание индекса (оператор CREATE INDEX)..........................................30
3.6. Удаление индекса (оператор DROP INDEX)...............................................32
4. Представления...................................................................................................33
5. Использование транзакций ..............................................................................34
6. Управление доступом к данным......................................................................37
Заключение.............................................................................................................40
Библиографический список..................................................................................43
Приложение............................................................................................................44

Содержимое работы - 1 файл

Базы данных- Структура языка SQL1.doc

— 178.00 Кб (Скачать файл)

    Структура языка SQL.

    Содержание.

Введение..................................................................................................................4

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

2. Манипулирование данными ..........................................................................8

3. Литералы.............................................................................................................9

4. Простые запросы.............................................................................................10

5. Использование агрегирующих  функций языка  SQL...............................12

6. Подзапросы.......................................................................................................14

7. Многотабличные запросы.............................................................................15

8. Выполнение соединений................................................................................16

8.1 Внешние соединения.....................................................................................17

8.2Ключевые слова EXISTS и NOT EXIST....................................................18

8.3 Комбинирование результирующих таблиц (операции UNION,    INTERSECT и EXCEPT)....................................................................................18

9.Изменение содержимого базы данных.........................................................21

9.1Добавление новых данных в таблицу (оператор INSERT)....................21

9.2 Модификация данных  в базе (оператор UPDATE).................................22

9.3 Удаление данных из базы (оператор DELETE).......................................23

Заключение...........................................................................................................24

Библиографический список..............................................................................27

Приложение..........................................................................................................28 
 
 
 
 

 

     Введение.

    Язык SQL является первым и пока единственным стандартным языком работы с базами данных, который получил достаточно широкое распространение. Есть еще один стандартный язык работы с базами данных, NDL (Network Database Language), который построен на использовании сетевой модели CODASYL, но он применяется лишь в немногих разработках. Практически все крупнейшие разработчики СУБД в настоящее время создают свои продукты с использованием языка SQL либо интерфейса SQL, и большинство таких компаний участвуют в работе, по меньшей мере, одной организации, которая занимается разработкой стандартов этого языка. В SQL сделаны огромные инвестиции как со стороны разработчиков, так и со стороны пользователей. Он стал частью архитектуры приложений (например, такой как System Application Architecture (SAA) корпорации IBM), а также является стратегическим выбором многих крупных и влиятельных организаций (например, консорциума Х/Open, занятого разработкой стандартов для среды UNIX), Язык SQL также принят в качестве федерального стандарта обработки информации (Federal Information Processing Standard — FIPS), который должен соблюдаться в СУБД для получения разрешения продавать ее на территории США. Консорциум разработчиков SQL Access Group прилагает усилия по созданию расширений языка SQL, которые позволят обеспечить взаимодействие разнородных систем.

    Язык SQL используется в других стандартах и даже оказывает влияние на разработку многих стандартов как инструмент их определения. В качестве примера можно привести стандарты ISO "Information Resource Dictionary System" (IRDS) и "Remote Data Access" (RDA). Разработка языка вызвала определенную заинтересованность научных кругов, выразившуюся как в выработке необходимых теоретических основ, так и в подготовке успешно реализованных технических решений. Это особенно справедливо в отношении оптимизации запросов, методов распределения данных и реализации средств защиты. Начали появляться специализированные реализации языка SQL, предназначенные для новых рынков, такие как OnLine Analytical Processing (OLAP).

 

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

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

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

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

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

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

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

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

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

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

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

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

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

 

     2. Манипулирование данными

    В этом разделе обсуждаются следующие операторы языка SQL DML:

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

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

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

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

    Ввиду сложности оператора SELECT и относительной  простоты остальных операторов DML, большая часть данного раздела посвящена обсуждению возможностей оператора SELECT и его различных форматов. Начнем с рассмотрения самых простых запросов, затем перейдем к более сложным вариантам выборки данных, использующим функции сортировки, группирования агрегирования, а также выполнения запроса к нескольким таблицам. В конце данной главы описаны операторы INSERT, UPDATE и DELETE языка SQL. Для построения примеров операторов SQL используется контекст учебного приложения DreamHome, содержимое таблиц которого представлено в табл. 1. 

 

     3. Литералы

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

    Значение  столбца rooms является литералом целочисленного типа, а значение столбца rent — это десятичный числовой литерал. Ни один из них не должен заключаться в одинарные кавычки. Значения всех остальных столбцов представляют собой символьные строки и обязательно должны быть взяты в одинарные кавычки. 

 

4. Простые запросы

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

SELECT [DISTINCT | ALL] { * I [columnExpression IAS newName]] [ , . . .]

FROM TableName [alias] [ , . . ].

[WHERE condition].

[GROUP BY columnwise] [HAVING condition]

[ORDER'BY columnList]

    Здесь параметр columnExpression представляет собой имя столбца или выражение из нескольких имен. Параметр TableName является именем существующей в базе данных таблицы (или представления), к которой необходимо получить доступ. Необязательный параметр alias — это сокращение, устанавливаемое для имени таблицы TableName. Обработка элементов оператора SELECT выполняется в следующей последовательности.

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

    •WHERE. Выполняется фильтрация строк объекта  в соответствии с заданными условиями.

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

    •HAVING. Фильтруются группы строк объекта  в соответствии с указанным условием.

    •SELECT. Устанавливается, какие столбцы  должны присутствовать в выходных данных.

    •ORDER BY. Определяется упорядоченность результатов  выполнения оператора. Порядок конструкций  в операторе SELECT не может быть изменен. Только две конструкции оператора — SELECT и FROM — являются обязательными, все остальные конструкции могут быть опущены. Операция выборки с помощью оператора SELECT является замкнутой, в том смысле, что результат запроса к таблице также представляет собой таблицу.

 

     5. Использование агрегирующих функций языка SQL

    Стандарт ISO содержит определение следующих  пяти агрегирующих функций:

    •COUNT — возвращает количество значений в указанном столбце;

    •SUM — возвращает сумму значений в указанном столбце;

    •AVG — возвращает усредненное значение в указанном столбце;

    •MIN — возвращает минимальное значение в указанном столбце;

    •МАХ  — возвращает максимальное значение в указанном столбце.

    Все эти функции оперируют со значениями в единственном столбце таблицы и возвращают единственное значение. Функции COUNT, MIN и МАХ применимы как к числовым, так и к нечисловым полям, тогда как функции SUM и AVG могут использоваться только в случае числовых полей. За исключением COUNT ( * ) , при вычислении результатов любых функций сначала исключаются все пустые значения, после чего требуемая операция применяется только к оставшимся непустым значениям столбца. Вариант COUNT (*} является особым случаем использования функции COUNT — его назначение состоит в подсчете всех строк в таблице, независимо от того, содержатся там пустые, повторяющиеся или любые другие значения.

    Если  до применения агрегирующей функции  необходимо исключить повторяющиеся  значения, следует перед именем столбца  в определении функции поместить ключевое слово DISTINCT. Стандарт ISO допускает использование ключевого слова ALL с целью явного указания того, что исключение повторяющихся значений не требуется, хотя это ключевое слово подразумевается по умолчанию, если никакие иные определители не заданы. Ключевое слово DISTINCT не имеет смысла для функций MIN и МАХ. Однако его использование может оказывать влияние на результаты выполнения функций SUM и AVG, поэтому следует заранее обдумать, должно ли оно присутствовать в каждом конкретном случае. Кроме того, ключевое слово DISTINCT в каждом запросе может быть указано не более одного раза. Следует отметить, что агрегирующие функции могут использоваться только в списке выборки SELECT и в конструкции HAVING. Во всех других случаях применение этих функций недопустимо. Если список выборки SELECT содержит агрегирующую функцию, а в тексте запроса отсутствует конструкция GROUP BY, обеспечивающая объединение данных в группы, то ни один из элементов списка выборки SELECT не может включать каких-либо ссылок на столбцы, за исключением случая, когда этот столбец используется как параметр агрегирующей функции. Например, следующий запросы является некорректным:

Информация о работе Структура языка SQL