Лекции SQL. Лекции по sql учебное пособие для студентов
Скачать 0.84 Mb.
|
Новосибирский государственный педагогический университет Чупин Н.А. Лекции по SQL Учебное пособие для студентов Новосибирск - 2013 [Выберите дату] — 2 — ББК 74.263.2 Ч 92 Печатается по решению … Научный редактор: Рецензенты: Ч 92 Чупин, Н.А. Лекции по SQL [Текст] : учебное пособие / Н.А. Чупин; Новосибирский гос.пед.университет. – Новосибирск: ФГБОУ ВПО НГПУ, 2013. – 60 с. – ___ экз. Краткий курс по языку SQL. Для студентов, обучающихся по дисциплине «Информационные системы». © Чупин Н.А., 2013. — 3 — Краткое содержание Введение ........................................................................................................................... 6 1. Запросы на выборку данных из таблиц .......................................................... 13 2. Агрегатные функции .............................................................................................. 24 3. Запросы к нескольким таблицам ....................................................................... 30 4. Использование вложенных запросов............................................................... 33 5. Команды DML. Добавление записей, удаление и редактирование. ...... 36 6. Команды DDL. Определение структуры БД .................................................... 39 7. Определение прав доступа к данным .............................................................. 52 8. Некоторые особенности SQL в Interbase ......................................................... 53 Сокращения ................................................................................................................... 59 Термины.......................................................................................................................... 59 Литература ..................................................................................................................... 60 Подробное содержание Введение ........................................................................................................................... 6 О языке SQL ................................................................................................................... 6 Обозначения ................................................................................................................. 9 Некоторые общие замечания по синтаксису SQL ........................................... 10 Основной пример....................................................................................................... 10 1. Запросы на выборку данных из таблиц .......................................................... 13 1.1. Простейший вариант запроса...................................................................... 13 1.2. Условия отбора записей WHERE ................................................................... 15 1.3. Логические связки AND OR NOT в WHERE .................................................... 16 1.4. Оператор IN в WHERE ...................................................................................... 17 1.5. Оператор BETWEEN в WHERE ......................................................................... 18 1.6. Оператор LIKE в WHERE .................................................................................. 18 1.7. Значение NULL в WHERE .................................................................................. 19 1.8. Оператор DISTINCT в SELECT ......................................................................... 20 1.9. Переименование полей .................................................................................... 21 1.10. Выражения в SELECT ...................................................................................... 21 — 4 — 1.11.Упорядочение выходных данных. ORDER BY. ........................................... 22 1.12. Итоги по первой главе. ................................................................................ 23 2. Агрегатные функции .............................................................................................. 24 2.1. Использование агрегатных функций. ........................................................ 24 2.2. Название поля агрегатной функции........................................................... 25 2.3. Использование * в COUNT. .............................................................................. 25 2.4. Использование DISTINCT в агрегатных функциях. .................................. 26 2.5. Использование выражений в агрегатных функциях. ............................. 26 2.6. Предложение GROUP BY ................................................................................... 27 2.7. Использование WHERE в запросах с агрегатными функциями ............ 28 2.8. Предложение HAVING ....................................................................................... 29 3. Запросы к нескольким таблицам ....................................................................... 30 3.1. Эквисоединения ................................................................................................. 30 3.2. Соединение таблицы со своей копией........................................................ 31 3.3. JOIN-соединения ................................................................................................ 31 3.4. Объединение запросов. Команда UNION. ................................................... 33 4. Использование вложенных запросов............................................................... 33 4.1.Как выполняются подзапросы....................................................................... 33 4.2. Использование агрегатных функций в подзапросах. ............................. 35 4.3. Оператор EXISTS. .............................................................................................. 35 5. Команды DML. Добавление записей, удаление и редактирование. ...... 36 5.1. Добавление записей. Команда INSERT. ....................................................... 36 5.2. Добавление множества записей. Вставка результатов запроса. .... 37 5.3. Удаление записей. Команда DELETE. ........................................................... 37 5.4. Редактирование записей. Команда UPDATE. ............................................ 38 6. Команды DDL. Определение структуры БД .................................................... 39 6.1. Создание базы данных .................................................................................... 39 6.2.Типы данных ....................................................................................................... 41 6.3. Простые варианты команд создания таблиц и изменения их структуры ................................................................................................................. 42 — 5 — 6.4. Добавление ограничений на таблицу ........................................................ 43 6.5. Определение домена ........................................................................................ 44 6.6. Изменение структуры домена ..................................................................... 46 6.7. Создание таблиц .............................................................................................. 47 6.8. Изменение структуры таблицы ................................................................. 51 7. Определение прав доступа к данным .............................................................. 52 8. Некоторые особенности SQL в Interbase ......................................................... 53 8.9. Генераторы ........................................................................................................ 54 8.10. Хранимые процедуры .................................................................................... 55 8.11. Триггеры ........................................................................................................... 57 Сокращения ................................................................................................................... 59 Термины.......................................................................................................................... 59 Литература ..................................................................................................................... 60 — 6 — Введение О языке SQL Важнейшей функцией автоматизированной информационной системы является предоставление пользователю средств для ввода, обработки и выдачи данных. На раннем этапе развития систем управления базами данных(СУБД) в условиях низких технических характеристик ЭВМ основное внимание разработчиков СУБД было направлено на проблемы размещения информации в базе и обмена данными между дисковой памятью и оперативной памятью, поскольку это в первую очередь определяло эффективность функционирования СУБД. При этом функции ввода, обработки и выдачи данных в каждой СУБД реализовались по-своему. Это приводило к тому, что для каждой конкретной СУБД требовались квалифицированные программисты, знающие особенности ее структуры и способа размещения данных, которые разрабатывали программу-интерфейс пользователя на специфичном языке данной СУБД. Такой квалифицированный программист выступал посредником между информационными потребностями пользователя и базой данных. Необходимость в таком специалисте как обязательном элементе информационной системы приводило к дополнительным затратам при создании и эксплуатации баз данных, снижало эффект от внедрения автоматизированных информационных систем и сдерживало их распространение в процессах информационного обеспечения деятельности предприятий и организаций. Язык SQL (Structured Query Language, структурированный язык запросов) был создан в 1974г. на основании теоретических идей Кодда. Благодаря удачной концептуальной основе быстро стал стандартным языком, используемым в реляционных СУБД. В 1986г. был признан Американским национальным институтом стандартов (ANSI) и Международной организацией по стандартам БД пользовател ь информационные потребности программист разработка и запуск программы обработки — 7 — (ISO) в качестве стандартного языка описания и обработки данных в реляционных базах данных. Первоначально SQL задумывался как язык общения (взаимодействия) пользователя (непрограммиста) с базами данных. Идея такого языка сводилась к набору из нескольких фраз-примитивов английского языка («выбрать», «обновить», «вставить», «удалить»), через которые пользователь-непрограммист ставил бы «вопросы» к СУБД, реализуя свои информационные потребности. В этом случае дополнительной функцией СУБД должна быть интерпретация этих «вопросов» на низкоуровневый язык машинных кодов для непосредственной обработки данных и предоставление результатов пользователю. Так родилась идея понятие «машины данных», то есть такой части СУБД, которая разделяет собственно данные и задачи по их обработке. В качестве альтернативы языку SQL некоторое время выступал еще один реляционный язык QBE (Query By Example, язык запросов по образцу). В дальнейшем он уступил первенство языку SQL, но на его основе были впоследствии построены многочисленные визуальные конструкторы запросов к БД. Большинство из этих визуальных конструкторов ныне предполагают возможность в любой момент получить текст SQL на основе визуального конструирования, и, наоборот, по тексту SQL получить визуальный вид запроса. Пример. СУБД Microsoft Access. Один и тот же запрос в режиме конструктора запросов по образцу и (ниже) в режиме SQL. — 8 — Следует заметить, что первоначальная идея создать язык, на котором пользователи-непрограммисты стали бы обращаться к СУБД, не удалась. Дело в том, что, начиная примерно с 1990 года, с внедрением графических операционных систем требования к квалификации пользователя резко понизились, и поэтому даже такой упрощенный язык рядовые пользователи осваивать не стали. Вместо него разработчики стали предлагать визуальные конструкторы запросов. Однако главная роль языка SQL состоит сегодня в том, что он позволяет отделить низкоуровневые функции по организации структуры и обработке данных от высокоуровневых функций, позволяя при эксплуатации банков данных сосредоточиться на смысловом, а не техническом аспекте работы с данными. Удачная идея универсального промежуточного языка для всех СУБД дала дополнительный импульс широкому внедрению СУБД и особенно реляционных СУБД, на долгие годы закрепив их лидирующие позиции по сравнению с другими СУБД. Язык SQL включает в себя три раздела: DDL (Data Definition Language, язык определения данных), DML (Data Manipulation Language, язык манипуляции данными) и собственно язык запросов. Впрочем, иногда еще отдельно выделяют язык безопасности данных, то есть те команды DDL, которые позволяют разграничить права отдельных пользователей и групп пользователей в доступе к объектам БД. Язык SQL относится к декларативным языкам программирования. Для понимания этого следует вспомнить, что в процедурных языках (С, Паскаль, Бейсик) программа есть запись последовательности команд, описывающая, БД пользовател ь информационные потребности интерпретация на язык машинных кодов, запуск программы обработки машина данных яз ы к SQL — 9 — как из исходных данных получить нужный результат. В отличие от этого, инструкции SQL указывают, «что нужно получить», но не «как это сделать». Как раз «машина данных» по инструкции SQL производит машинный код, выполнение которого обеспечит результат, задаваемый SQL-инструкцией. Мы в настоящем пособии приводим некоторый урезанный вариант SQL, не упоминая все второстепенные детали, имеющиеся в SQL. При этом мы ориентируемся на тот диалект, который используется в СУБД InterBase. Выбор данной СУБД обусловлен несколькими причинами: 1) наличие бесплатного аналога СУБД – СУБД FireBird разрабатывается группой программистов, работа которых оплачивается из благотворительного фонда и является бесплатной для всех пользователей; 2) наличие отличной инструментальной программы для работы с данной СУБД – программа IBExpert разработана российскими программистами и бесплатна для граждан РФ; 3) СУБД Interbase является собственностью Borland и поэтому отлично интегрирована в среду программирования Delphi; 4) СУБД InterBase является, можно сказать, классической реляционной СУБД – в ней есть практически все, что «положено» иметь реляционным СУБД, и, в то же время, нет «ничего лишнего», что делает ее удобным примером для преподавания различных аспектов теории реляционных БД. Обозначения В тексте мы выделяем следующие фрагменты: ? обозначает проблему, которую следует решить ! обозначает, как эта проблема решается √ обозначает подробности определений, пояснения, а также дополнительные замечания, особые случаи и т.п. При объяснении синтаксиса команд SQL мы будем использовать традиционные для информатики соглашения. Квадратные скобки [ ] указывают, что этот элемент может и отсутствовать. Фигурные скобки { } указывают, что следует выбрать один вариант из тех, которые перечислены в этих скобках, при этом возможные варианты разделены вертикальной чертой |. Многоточие … означает возможность многократного повторения описанных элементов. Угловые скобки <> указывают, что в этой позиции должна быть вписана синтаксически правильная конструкция, смысл которой расшифровывается далее по тексту. — 10 — Некоторые общие замечания по синтаксису SQL SQL использует типичные для многих языков программирования правила – имена должны записываться латинскими буквами, цифрами и символом подчеркивания, причем на первой позиции не допускается цифра. Впрочем, некоторые СУБД допускают отступления от этих правил, например, в СУБД Microsoft Access разрешаются и русские имена полей. Стандартный SQL не различает заглавные и строчные буквы. Поэтому мы используем регистры символов в методических целях - в командах для лучшего понимания служебные слова SQL написаны заглавными буквами, а то, что определяется текущей ситуацией (имена таблиц, полей и т.п.), записано строчными буквами. Стандартный SQL никак не использует, то есть игнорирует переходы на новую строку, а также избыточные пробелы. Иначе говоря, команду SQL можно записывать в одну строку или в несколько строк – результат будет один и тот же. Поэтому разбиение на строки мы будем выполнять из соображений обеспечения лучшей читаемости или (реже) из соображений экономии строк. Заметим также, что многие СУБД (либо инструментальные программы для работы с СУБД) в командах SQL при работе с текстовыми данными допускают использование как и одинарных апострофов ‘ ‘ (по стандарту SQL), так и двойных кавычек “ “. В некоторых книгах команды SQL заканчиваются символом ; <точка с запятой>. Однако на самом деле этот символ необходим только, если вы взаимодействуете с СУБД с помощью такой инструментальной программы, которая позволяет выполнить сразу несколько последовательных команд SQL. Такие тексты называются «скриптами на языке SQL», а инструментальные программы (или один из инструментов в «большой» программе для работы с СУБД), позволяющие их записывать и выполнять – «редакторами скриптов». При выполнении одиночной команды символ <точка с запятой> в конце команды необязателен. Основной пример Для описания большинства примеров мы будем использовать базу данных из двух таблиц - Fakultety и Spisok. |