Федеральное агентство по образованию
Федеральное государственное образовательное учреждение
высшего профессионального образования
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
Чердынцева М.И.
ТЕХНОЛОГИИ БАЗ ДАННЫХ.
ЯЗЫК SQL
Методические указания
для студентов 3-4 курсов дневного и вечернего отделений
факультета математики, механики и компьютерных наук
Ростов-на-Дону
2009
Методические указания разработаны сотрудником кафедры прикладной математики и программирования: кандидатом технических наук, доцентом М.И. Чердынцевой.
В методических указаниях представлены сведения об основных средствах языка SQL в части подъязыка манипулирования данными (DML – Data Manipulation Language). Основную часть методических указаний составляют примеры решения задач. Методические указания могут быть использованы для проведения лабораторных работ по курсу «Технологии баз данных» и студентами при выполнении самостоятельной работы и решении индивидуальных заданий.
Методические указания предназначены для студентов 3-4 курсов.
СОДЕРЖАНИЕ
Федеральное агентство по образованию 1
Федеральное государственное образовательное учреждение 1
высшего профессионального образования 1
«ЮЖНЫЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ» 1
Чердынцева М.И. 1
ТЕХНОЛОГИИ БАЗ ДАННЫХ. 1
ВВЕДЕНИЕ 5
ВВЕДЕНИЕ 5
1. ЯЗЫК SQL 6
1. ЯЗЫК SQL 6
2.ОПИСАНИЕ ДЕМОНСТРАЦИОННОЙ БАЗЫ ДАННЫХ 7
2.ОПИСАНИЕ ДЕМОНСТРАЦИОННОЙ БАЗЫ ДАННЫХ 7
3.ОПЕРАТОР SELECT 9
3.ОПЕРАТОР SELECT 9
4.ВЫРАЖЕНИЯ И ПРЕДИКАТЫ 23
4.ВЫРАЖЕНИЯ И ПРЕДИКАТЫ 23
5.ВСТАВКА СТРОК В ТАБЛИЦУ 34
5.ВСТАВКА СТРОК В ТАБЛИЦУ 34
6.ОБНОВЛЕНИЕ СТРОК В ТАБЛИЦЕ 35
6.ОБНОВЛЕНИЕ СТРОК В ТАБЛИЦЕ 35
7.УДАЛЕНИЕ СТРОК ИЗ ТАБЛИЦЫ 35
7.УДАЛЕНИЕ СТРОК ИЗ ТАБЛИЦЫ 35
ЗАДАЧИ 37
ЗАДАЧИ 37
ЛИТЕРАТУРА 40
ЛИТЕРАТУРА 40
ПРИЛОЖЕНИЕ 42
ПРИЛОЖЕНИЕ 42
ВВЕДЕНИЕ
Рост популярности языка SQL – одна из самых важных тенденций современной компьютерной промышленности. За последние десятилетия SQL стал стандартным языком баз данных. Язык SQL является важным звеном в архитектуре систем управления базами данных, выпускаемых всеми ведущими поставщиками программных продуктов.
Нужно заметить, что в настоящее время, ни одна система не реализует стандарт SQL в полном объеме. Кроме того, во всех диалектах языка имеются возможности, не являющиеся стандартными. Таким образом, можно сказать, что каждый диалект – это надмножество некоторого подмножества стандарта SQL. Тем не менее, изучив конкретный диалект одной из СУБД, достаточно просто в дальнейшем знакомиться с версиями языка других фирм – разработчиков.
Целью данных методических указаний является демонстрация возможностей языка SQL на конкретных примерах. Поскольку методические указания предназначены для проведения лабораторных работ студентов, изложение ведется применительно к версии языка SQL, реализованной в СУБД Firebird.
-
ЯЗЫК SQL
Структурированный язык запросов SQL (Structured Query Language) является языком, предназначенным для обработки и извлечения данных, содержащихся в базе данных.
Язык SQL применяется для организации взаимодействия пользователя с реляционной базой данных.
Язык SQL является реляционно-полным. Это означает, что любой оператор реляционной алгебры может быть выражен подходящим оператором SQL.
Язык SQL оперирует терминами, несколько отличающимися от терминов реляционной теории. Например, вместо термина "отношения" используется – "таблицы". Вместо "кортежей" – "строки", вместо "атрибутов" – "колонки" или "столбцы". Стандарт языка SQL, хотя и основан на реляционной теории, но во многих местах отходит он нее. Например, отношение в реляционной модели данных не допускает наличия одинаковых кортежей, а таблицы в терминологии SQL могут иметь одинаковые строки.
В настоящий момент язык SQL представляет собой нечто гораздо большее, чем простой инструмент создания запросов, хотя первоначально он именно для этого был и предназначен. Сейчас этот язык используется для реализации всех функциональных возможностей, которые СУБД предоставляет пользователю, а именно:
SQL дает возможность изменять структуру представления данных, а также устанавливать отношения между элементами базы данных, т.е. реализует функцию организации данных.
SQL позволяет манипулировать данными, т.е. читать данные из базы данных, добавлять новые данные, удалять или изменять уже имеющиеся в базе данные. При этом реализуются функции чтения и обработки данных.
С помощью SQL можно защитить данные от несанкционированного доступа. Это обеспечивается средствами авторизации доступа.
SQL позволяет координировать совместное использование данных многими пользователями, работающими параллельно, чтобы они не мешали друг другу. Это функция совместного использования данных.
SQL позволяет обеспечить целостность базы данных, защищая ее от разрушения из-за ошибок пользователей, несогласованных изменений или отказа системы.
Следующие разделы методических указаний посвящены описанию и примерам использования группы операторов языка SQL реализующих функцию манипулирования данными. Это подмножество операторов называется DML (Data Manipulation Language) – операторы манипулирования данными. В DML входят следующие операторы:
SELECT – запросить данные из таблиц
INSERT - добавить строки в таблицу
UPDATE - изменить строки в таблице
DELETE - удалить строки в таблице
В методических указаниях рассмотрен синтаксис DML , поддерживаемый СУБД Firebird. За более подробной информацией о правилах написания запросов следует обратиться к документации по конкретной СУБД.
-
ОПИСАНИЕ ДЕМОНСТРАЦИОННОЙ БАЗЫ ДАННЫХ
Примеры, приводимые в методических указаниях и задачи для самостоятельной работы, основаны на демонстрационной базе данных СОТРУДНИКИ (EMPLOYEE), устанавливаемой автоматически при инсталляции сервера СУБД Firebird. Аналогичные демонстрационные базы устанавливаются практически всеми реляционными СУБД, однако в каждом конкретном случае структура таблиц и хранящаяся в них информация могут быть различными.
В приложении приведена схема базы данных с указанием первичных и внешних ключей. База данных employee.fdb содержит следующую информацию (в скобках указаны имена таблиц, в которых находится соответствующая информация и названия столбцов, содержащих соответствующую информацию):
информация о сотрудниках(employee) некоторой фирмы, занимающейся разработкой проектов в сфере компьютерных технологий и электроники, а так же продажей своей продукции;
фирма состоит из отделов (department): финансового, маркетинга и других. В число отделов входят и филиалы по всему миру. Каждый филиал (отдел) подчинен вышестоящему отделу (head_dept). Так, например, филиал в Италии непосредственно подчинен Европейскому управлению фирмы, которое в свою очередь подчинено главному корпоративному управлению. Отделами руководят менеджеры из числа сотрудников (mng_no). Каждый сотрудник работает в каком-то отделе (dept_no);
сотрудники приняты для выполнения определенной работы (job), вакансия по конкретной должности (job_code) предлагается в какой-то из стран (job_country) и требует определенной квалификации (job_grade). По каждой вакансии могут быть установлены дополнительные требования к кандидату и зафиксирован диапазон оплаты. Диапазон оплаты указывается в валюте той страны, в которой предоставляется вакансия;
каждый сотрудник может участвовать в выполнении одного или нескольких проектов (employee_project);
каждым проектом, выполняемым фирмой (project), руководит один из сотрудников (team_leader);
для каждого отдела, работающего над конкретным проектом, определяется годовой бюджет выполнения этого проекта (proj_dept_budget);
информация об изменении оплаты сотрудникам (salary_history) сохраняется за все время их работы;
сотрудники могут оформлять заказы на поставку технического и программного обеспечения (sales) фирмам–клиентам (customer). Конкретным заказом занимается определенный торговый представитель (sales_rep) из числа сотрудников. Каждый заказ проходит стадии: оформление, исполнение, передача клиенту. Если заказ не оплачивается в течение двух месяцев, после того как он переходит в разряд поставленных, то сотрудничество с фирмой–клиентом замораживается;
таблица COUNTRY является справочником стран, в которых расположены филиалы фирмы, сотрудники и клиенты, в ней содержится наименование основной валюты страны.
В приведенных выше описаниях имена таблиц указаны заглавными буквами, а имена полей – строчными. Следует отметить, что и стандарт SQL и большинство реализаций языка SQL безразличны к регистру символов при написании операторов SQL, указании имен таблиц и полей.
-
ОПЕРАТОР SELECT
Оператор SELECT является фактически основным и самым сложным оператором SQL. Он предназначен для выборки данных из таблиц, именно он и реализует одно их основных назначение базы данных – предоставлять по запросу информацию из базы данных пользователю. Поскольку язык SQL является не процедурным, а декларативным, оператор SELECT предназначен для того, чтобы описать какие данные должны быть получены из базы данных в результате выполнения запроса.
Полное описание синтаксиса оператора SELECT в СУБД Firebird (как и в стандарте SQL) является достаточно сложным. С ним можно ознакомиться в документации или в литературе по Firebird.
Для начального ознакомления рассмотрим упрощенную форму оператора:
SELECT
[FIRST (m)] [SKIP (n)][DISTINCT|ALL]
<список столбцов>|*
FROM <таблица> [<алиас>]|<процедура> [<алиас>]|
<�просмотр> [<алиас>]|<�соединение таблиц>
[WHERE <условия отбора строк>]
[GROUP BY <список столбцов для группировки>
[HAVING <условия отбора групп>]]
[UNION <оператор select> [ALL]]
[ORDER BY <список сортировки>]
Оператор SELECT всегда выполняется над некоторыми таблицами, входящими в базу данных.
На самом деле в базах данных могут быть не только постоянно хранимые таблицы, а также временные таблицы и, так называемые, представления. Представления – это просто хранящиеся в базе данных SELECT–выражения. С точки зрения пользователей представления – это таблица, которая не хранится постоянно в базе данных, а "возникает" в момент обращения к ней. С точки зрения оператора SELECT и постоянно хранимые таблицы, и временные таблицы и представления выглядят совершенно одинаково. Конечно, при реальном выполнении оператора SELECT системой учитываются различия между хранимыми таблицами и представлениями, но эти различия скрыты от пользователя.
Результатом выполнения оператора SELECT всегда является таблица. Таким образом, по результатам действий оператор SELECT похож на операторы реляционной алгебры. Любой оператор реляционной алгебры может быть выражен оператором SELECT. Сложность оператора SELECT определяется тем, что он содержит в себе все возможности реляционной алгебры, а также дополнительные возможности, которых в реляционной алгебре нет.
|