Sql В Примерах И Задачах Астахова
УДК 004.655.3(075.8) ББК 32.973.26-018.1я73 А91 Р е ц е н з е н т ы: доцент кафедры АСИТ Московского государственного университета Н.Д. Васюкова; Воронежское научно-производственноепредприятие «РЕЛЭКС»; кафедра информатики и МПМ Воронежского государственного педагогического университета; доктор технических наук, профессор, зав. Кафедрой математического моделирования Воронежской государственной технологической академии В.В. Сысоев; доктор физико-математическихнаук, профессор, декан факультета, компьютерных наук Воронежского государственного университета Э.К.
Sql в примерах и задачах. Все очень хорошо подано, так что процесс изучения sql будет легким. Aug 31, 2015 - Астахова, Толстобров, Мельников - SQL В примерах и задачах. Рекомендую этот учебник вместе с нашими материалами по SQL. Sql в примерах и задачах: Учебное пособие. Скачать бесплатно без регистрации книгу онлайн.
Алгазинов АстаховаИ.Ф. А91 SQL в примерах и задачах; Учеб. Пособие / И.Ф. Астахова, А.П.
Мельников.—Мн.:Новоезнание, 2002. ISBN 985-475-004-3. Изложены основные понятия и способы применения SQL — популярного языка запросов к реляционным базам данных. Описаны приемы манипулирования данными и формирования запросов различной степени сложности. Каждая глава пособия сопровождается упражнениями, которые позволяют закрепить на практике теоретические знания. Книга является учебным пособием для студентов, обучающихся по направлению «Прикладная математика и информатика», а также может быть использована для самостоятельного изучения языка SQL. УДК 004.655.3(075.8) ББК 32.973.26-018.1я73 Астахова И.Ф., Толстобров А.П., Мельников В.М., 2001 ISBN 985-475-004-3 Оформление.
ООО «Новое знание», 2002. Оглавление Введение 8 1. Основные понятия и определения 10 1.1. Основные понятия реляционных баз данных 10 1.2. Отличие SQL от процедурных языков программирования. Интерактивный и встроенный SQL 13 1.4. Составные части SQL 13 1.5.
Типы данных SQL 14 1.5.1. Тип данных «строка символов» 14 1.5.2. Числовые типы данных 15 1.5.3. Дата и время 16 1.5.4.
Неопределенные или пропущенные данные (NULL) 17 1.6. Используемые термины и обозначения 18 1.7.
Учебная база данных 18 2. Выборка данных (оператор SELECT) 23 2.1.
Простейшие SELECT-запросы 23 2.2. Операторы IN, BETWEEN, LIKE, is NULL 28 2.3. Преобразование вывода и встроенные функции 31 2.3.1. Числовые, символьные и строковые константы. Арифметические операции для преобразования числовых данных 32 2.3.3.
Операция конкатенации строк 33 2.3.4. Функции преобразования символов в строке. Строковые функции 34 2.3.6.
Функции работы с числами 37 2.3.7. Функции преобразования значений 39 2.4. Агрегирование и групповые функции 43 2.5. Пустые значения (NULL) в агрегирующих функциях 46 2.5.1.
Влияние NULL-значенийв функции COUNT 46 2.5.2. Влияние NULL-значенийв функции AVG 47. Оглавление 2.6. Результат действия трехзначных условных операторов. Упорядочение выходных полей (ORDER BY) 49 2.8. Вложенные подзапросы 51 2.9. Формирование связанных подзапросов.
Связанные подзапросы в HAVING 54 2.11. Использование оператора EXISTS 56 2.12. Операторы сравнения с множеством значенийIN,ANY,All 58 2.13. Особенности применения операторов ANY, ALL, EXISTS при обработке пустых значений (NULL) 60 2.14.
Использование COUNT вместо EXISTS 62 2.15. Оператор объединения UNION 63 2.16.
Устранение дублирования в UNION 64 2.17. Использование UNION с ORDER BY 66 2.18. Внешнее объединение 67 2.19. Соединение таблиц с использованием оператора JOIN. Операции соединения таблиц посредством ссылочной целостности 70 2.19.2. Внешнее соединение таблиц 72 2.19.3.
Использование псевдонимов при соединении таблиц 74 3. Манипулированиеданными 78 3.1. Команды манипулирования данными 78 3.2. Использование подзапросов в INSERT 81 3.2.1. Использование подзапросов, основанных натаблицах внешнихзапросов 82 3.2.2.ИспользованиеподзапросовсDELETE 83 3.2.3. ИспользованиеподзапросовсUPDATE 85 4.
Создание объектов базы данных 87 4.1. Создание таблиц базы данных 87 4.2. Использование индексации для быстрого доступа к данным 88 4.3. Изменение существующей таблицы. Оглавление 4.4. Удаление таблицы 90 4.5.
Офаничения на множество допустимых значений данных.91 4.5.1. Ограничение NOT NULL 92 4.5.2. Уникальность как ограничение на столбец 93 4.5.3. Уникальность как ограничение таблицы 94 4.5.4. Присвоение имен ограничениям 95 4.5.5. Ограничение первичных ключей 96 4.5.6. Составные первичные ключи 96 4.5.7.
Проверка значений полей 97 4.5.8. Проверка ограничивающих условий с использованием составных полей 98 4.5.9. Установка значений по умолчанию. Поддержка целостности данных 101 4.6.1. Внешние и родительские ключи 101 4.6.2.
Составные внешние ключи 102 4.6.3. Смысл внешнего и родительского ключей 102 4.6.4. Ограничение FOREIGN KEY (внешнего ключа).
Внешний ключ как ограничение таблицы 103 4.6.6. Внешний ключ как ограничение столбца 105 4.6.7. Поддержание ссылочной целостности и ограничения значений родительского ключа.
Использование первичного ключа в качестве уникального внешнего ключа 107 4.6.9. Ограничения значений внешнего ключа 108 4.6.10. Действие ограничений внешнего и родительского ключей при использовании команд модификации 108 5.
Представления (VIEW) 112 5.1. Представления — именованные запросы 112 5.2.
Представления таблиц 113 5.3. Представления столбцов 113 5.4. Модифицирование представлений 114 5.5. Маскирующие представления 114 5.5.1.
Представления, маскирующие столбцы 114 5.5.2. Операции модификации в представлениях, маскирующих столбцы 115.
Оглавление 5.5.3. Представления, маскирующие строки 115 5.5.4. Операции модификации в представлениях, маскирующих строки 116 5.5.5.
Операции модификации в представлениях, маскирующих строки и столбцы 117 5.6. Агрегированные представления 119 5.7. Представления, основанные на нескольких таблицах. Представления и подзапросы 120 5.9.
Ограничения применения оператора SELECT для создания представлений 121 5.10. Удаление представлений 121 5.11. Изменение значений в представлениях 122 5.12. Примеры обновляемых и необновляемых представлений 123 5.13. Представления, базирующиеся на других представлениях 125 6. Определение прав доступа пользователей к данным 128 6.1. Пользователи и привилегии 128 6.2.
Стандартные привилегии 129 6.3. Команда GRANT 130 6.4. Использование аргументов ALL и PUBLIC 131 6.5. Отмена привилегий 131 6.6. Использование представлений для фильтрации привилегий 132 6.6.1. Ограничение привилегии SELECT для определенных столбцов 133 6.6.2. Ограничение привилегий для определенных строк 133 6.6.3.
Предоставление доступа только к извлеченным данным 134 6.6.4. Использование представлений в качестве альтернативы ограничениям 134 6.7. Другие типы привилегий. Типичные привилегии системы 136. Введение В настоящее время информационные системы, применяющие базы данных, представляют собой одну из важнейших областей современных компьютерных технологий.
С этой сферой связана большая часть современного рынка программных продуктов. Среди общих тенденций в развитии таких систем выделяются процессы интеграции и стандартизации, затрагивающие структуры данных и способы их обработки и интерпретации, системное и прикладное программное обеспечение, средства взаимодействия компонентов баз данных и многое другое.
Современные системы управления базами данных (СУБД) основаны на реляционной модели представления данных — в большой степени благодаря простоте и четкости ее концептуальных понятий и строгого математического обоснования. Неотъемлемая и важнейшая часть любой системы, применяющей базы данных, — языковые средства, обеспечивающие возможность доступа и действий над данными, определения их структур, способов использования и интерпретации. Язык SQL появился в 1970-егоды как одно из таких средств. Его прототип был разработан фирмой IBM и известен под названием SEQUEL (Structured English Query Language).
SQL вобрал в себя достоинства реляционной модели, в частности достоинства лежащего в ее основе математического аппарата реляционной алгебры и реляционного исчисления, используя при этом сравнительно небольшое число операторов и относительно простой синтаксис. Благодаря своим качествам язык SQL стал — вначале «де-факто»,а затем и официально утвержденным в качестве стандарта — языком работы с реляционными базами данных. Этот стандарт поддерживается всеми ведущими мировыми фирмами, действующими в сфере технологий баз данных.
Использование выразительного и эффективного стандартного языка позволило обеспечить высокую степень независимости разрабатываемых прикладных программных систем от конкретного типа используемой СУБД, существенно поднять уровень и унификацию инструментальных средств разработки приложений, работающих с реляционными базами данных. Говоря о стандарте языка SQL, следует заметить, что большинство его коммерческих реализаций имеют некоторые, большие или меньшие, отличия от стандарта. Это, конечно, ухудшает совместимость систем, использующих различные «диалекты» SQL.
Но, с другой стороны, полезные расширения реализаций языка обеспечивают его развитие и со временем включаются в новые редакции стандарта. Учитывая место.
Занимаемое SQL в современных информационных технологиях, его знание необходимо любому специалисту, работающему в этой области. Данное пособие в первую очередь предназначено преподавателям и студентам и ориентировано на обучение основам применения языка SQL по учебным курсам, связанным с изучением информационных систем, базирующихся на базах данных.
В настоящее время такие курсы входят в учебные планы ряда университетских специальностей. С этой целью в пособии большое внимание уделялось подбору материала для примеров, а также задач и упражнений, необходимых для получения практических навыков составления SQL-запросовк базе данных. При этом в определениях и примерах приоритет отдавался простоте и доходчивости материала, возможно, с некоторым ущербом строгости его изложения.
По этой же причине в пособие не вошли особенности языка, требующие более глубоких знаний о функционировании современных СУБД и информационных систем, изучение и использование которых имеет смысл только при условии получения навыков практического использования базовых конструкций языка. При изложении материала авторы по возможности старались, кроме специально оговоренных случаев, не отступать от стандарта языка SQL. В приложении 1 пособия содержатся ответы на большинство приведенных в нем упражнений.
Примеры и задачи упражнений протестированы с использованием СУБД Oracle и отечественной СУБД ЛИНТЕР. ЛИНТЕР представляет собой полномасштабный кросс-платформен-ный SQL-сервер,соответствующий основным мировым стандартам, предъявляемым к системам такого класса.
Для некоммерческого использования учебным заведениям он предоставляется бесплатно. Более подробную информацию о системе можно получить на сайте компании РЕЛЭКС по адресу www.relex.ru. В приложении 2 приведены тексты дополнительных задач по проектированию баз данных.
Эти задачи могут использоваться в качестве тем курсовых работ и для самостоятельной работы студентов. Авторы надеются, что пособие окажется полезным не только преподавателям и студентам, но и другим читателям, заинтересованным в получении начальных практических навыков использования языка SQL. Основныепонятия и определения 1.1.
Основные понятия реляционных баз данных Основой современных систем, применяющих базы данных, является реляционная модель данных. В этой модели данные, представляющие информацию о предметной области, организованы в виде двухмерных таблиц, называемых отношениями. На рисунке 1 приведен пример такой таблицы-отношенияи поясняются основные термины реляционной модели. Пример таблицы-отношенияреляционной базы данных Отношение — это таблица, подобная приведенной на рисунке 1 и состоящая из строк и столбцов.
Верхняя строка табли- цы-отношенияназывается заголовком отношения. Термины отношение и таблица обычно употребляются как синонимы, однако в языке SQL используется термин таблица. Основные понятия реляционных баз данных 11. Строки таблицы-отношенияназываются кортежами, или записями. Столбцы называются атрибутами.
Термины — атрибут, столбец, колонка, поле — обычно используются как синонимы. Каждый атрибут имеет имя, которое должно быть уникальным в конкретной таблице-отношении,однако в разных таблицах имена атрибутов могут совпадать.
Количество кортежей в таблице-отношенииназывается кардинальным числом отношения, а количество атрибутов — сте- пенью отношения. Ключ, или первичный ключ отношения — это уникальный идентификатор строк (кортежей), то есть такой атрибут (набор атрибутов), для которого в любой момент времени в отношении не существует строк с одинаковыми значениями этого атрибута (набора атрибутов). На приведенном рисунке таблицы ячейка с именем ключевого атрибута имеет нижнюю границу в виде двойной черты.
Домен отношения — это совокупность значений, из которых могут выбираться значения конкретного атрибута. То есть конкретный набор имеющихся в таблице значений атрибута в любой момент времени должен быть подмножеством множества значений домена, на котором определен этот атрибут. В общем случае на одном и том же домене могут быть определены значения разных атрибутов. Важным является то, что домены вводят ограничения на операции сравнения значений различных атрибутов.
Астахова Sql В Примерах И Задачах Ответы
Эти ограничения состоят в том, что корректным образом можно сравнивать между собой только значения атрибутов, определенных на одном и том же домене. Отношения реляционной базы данных обладают следующими свойствами:.
в отношениях не должно быть кортежей-дубликатов,. кортежи отношений не упорядочены,. атрибуты отношений также не упорядочены. Из этих свойств отношения вытекают важные следствия.
Уникальность кортежей определяет, что в отношении всегда имеется атрибут или набор атрибутов, позволяющих идентифицировать кортеж, другими словами, в отношении всегда есть первичный ключ. Основные понятия и определения. Неупорядоченность кортежей приводит к тому, что, во-пер-вых, в отношении не существует другого способа адресации кортежей, кроме адресации по ключу, а во-вторых— в отношении не существует таких понятий, как первый кортеж, последний, предыдущий, следующий и т.д. Неупорядоченность атрибутов определяет, что единственным способом их адресации в запросах является использова- ние наименования атрибута. Относительно свойства реляционного отношения, касающегося отсутствия кортежей-дубликатов,следует сделать важное замечание. В этом пункте SQL не полностью соответствует реляционной модели. А именно: в отношениях, являющихся результатами запросов, SQL допускает наличие одинаковых строк.
Для их устранения в запросе используется ключевое сло- во DISTINCT (см. Информация в реляционных базах данных, как правило, хранится не в одной таблице-отношении,а в нескольких. При создании нескольких таблиц взаимосвязанной информации появляется возможность выполнения более сложных операций с данными, то есть более сложной их обработки. Для работы со связанными данными из нескольких таблиц важным является понятие так называемых внешних ключей. Внешним ключом таблицы называется атрибут (набор атрибутов) этой таблицы, каждое значение которого в текущем состоянии таблицы всегда совпадает со значением атрибутов, являющихся ключом, в другой таблице. Внешние ключи используются для связывания значений атрибутов из разных таблиц.
С помощью внешних ключей обеспечивается так называемая ссылочная целостность базы данных, то есть согласованность данных, описывающих одни и те же объекты, но хранящихся в разных таблицах. Отличие SQL от процедурных языков программирования SQL относится к классу непроцедурных языков программирования. В отличие от универсальных процедурных языков, которые также могут быть использованы для работы с базами данных, SQL ориентирован не на записи, а на множества. Составные части SQL 13 Это означает следующее: в качестве входной информации для формулируемого на языке SQL запроса к базе данных используется множество кортежей-записей одной или нескольких таблиц-отношений.В результате выполнения запроса также образуется множество кортежей результирующей таблицы-отно-шения.
Другими словами, в SQL результатом любой операции над отношениями также является отношение. Запрос SQL задает не процедуру, то есть последовательность действий, необходимых для получения результата, а условия, которым должны удовлетворять кортежи результирующего отношения, сформулированные в терминах входного (или входных) отношения. Интерактивный и встроенный SQL Существуют и используются две формы языка SQL: интерактивный SQL и встроенный SQL. Интерактивный SQL используется для задания SQL-запросовпользователем и получения результата в интерактивном режиме.
Встроенный SQL состоит из команд SQL, встроенных внутрь программ, обычно написанных на каком-тодругом языке (Паскаль, С, C и др. Это делает программы, использующие такие языки, более мощными, гибкими и эффективными, обеспечивая их применение для работы с данными, хранящимися в реляционных базах. При этом, однако, требуются дополнительные средства интерфейса SQL с языком, в который он встраивается. Данная книга посвящена интерактивному SQL, поэтому в ней не обсуждаются вопросы построения интерфейса, позволяющего связать SQL с другими языками программирования.
Составные части SQL И интерактивный, и встроенный SQL подразделяются на следующие составные части. Язык определения данных — DDL (Data Definition Language) — дает возможность создания, изменения и удаления различных объектов базы данных (таблиц, индексов, пользователей, привилегий и т.д.). Основные понятия и опредепения В число дополнительных функций DDL могут быть включены и средства ограничения целостности данных, определения порядка структур их хранения, описания элементов физическо- го уровня хранения данных. Язык обработки Даннь^^х — DML (Data Manipulation Language) - предоставляет возможность выборки информации из базы дан- ных и ее преобразования. Тем не менее это не два различных языка, а компоненты единого SQL. Типы данных SQL В языке SQL имеются средства, позволяющие для каждого атрибута указывать тип данных, которому должны соответство- вать все значения этого атрибута.
Следует отметить, что определение типов данных является той частью, в которой коммерческие реализации языка не полностью согласуются с требованиями официального стандарта SQL. Это объясняется, в частности, желанием обеспечить совместимость SQL с другими языками программирования. Тип данных «строка символов» Стандарт поддерживает только один тип представления текста — CHARACTER (CHAR). Этот тип данных представляет собой символьные строки фиксированной длины. Его синтаксис име- ет вид: CHARACTER (длина) или CHAR (длына).
Текстовые значения поля таблицы, определенного как тип CHAR, имеют фиксмрованную длину, которая определяется параметром длина. Этот параметр может принимать значения от 1 до 255, то есть строка может содержать до 255 символов. Если во вводимой в поле текстовой константе фактическое число символов меньше числа, определенного параметром длмна, то эта константа автоматически дополняется справа пробелами до заданного числа символов. Типы данных SQL 15 Некоторые реализации языка SQL поддерживают в качестве типа данных строки переменной длины.
Этот тип может обозначаться ключевыми словами VARCHAR ( j, CHARACTER VARYING или CHAR VARYING (j. Он описывает текстовую строку, которая может иметь произвольную длину до определенного конкретной реализацией SQL максимума (в Oracle — до 2000 символов). В отличие от типа CHAR в этом случае при вводе текстовой константы, фактическая длина которой мены^е заданной, не производится ее дополнение пробелами до заданного максимального значения.
Константы, имеющие тип CHARACTER и VARCHAR, в выражениях SQL заключаются в одиночные кавычки, например, 'текст'. Следующие предложения эквивалентны: VARCHAR (длмня), CHAR VARYING (длмнд), CHARACTER VARYING (длмна).
Если длина строки не указана явно, она полагается равной одному символу во всех случаях. По сравнению с типом CHAR тип данных VARCHAR позволяет более экономно использоватъ память, выделяемую для хранения текстовых значений, и оказывается более удобным при выполнении операций, связанных со сравнением текстовых констант. Числовые типы данных Стандартными числовыми типами данных SQL являются:. INTEGER -используется для представления целых чисел в диапазоне от —2 31 до +2 31. SMOLLINT -используется для представления целых чисел в меньшем, чем для INTEGER, диапазоне, а именно — от -2 15 до +2 15. DECIMAL (точность,масштаб) — десятичное число с фиксированной точкой, точность определяет количество значащих цифр в числе. Масштаб указывает максимальное число цифр справа от точкм.
NUmeRIC (точность,масштаб ) — десятичное число с фиксированной точкой, такое же, как и DECIMAL. Основные понятия и определения. FLOAT (точность) — число с плавающей точкой и указанной минимальной точностью. REAL — число такое же, как при типе FLOAT, за исключением определения точности по умолчанию (в зависимости от кон- кретной реализации SQL). DOUBLE PRECISION — число аналогично REAL, но точность в два раза выше точности REAL. СУБД Oracle использует дополнительно тип данных NUMBER для представления всех числовых данных, целых, с фиксированной или плавающей точкой.
Его синтаксис: NUMBER (точность.масшта6). Если значение параметра точность не указано явно, оно полагается равным 38.
Значение параметра масштаб по умолчанию предполагается равным 0. Значение параметра точность может изменяться от 1 до 38; значение параметра масштаб может изменяться от —84до 128. Использование отрицательных значений масштаба означает сдвиг десятичной точки в сторону старших разрядов.
Sql В Примерах И Задачах Астахова
Например, определение NUMBER (7,—3)означает округление до тысяч. Типы DECIMAL (иногда обозначаемый DEC) и NUMERIC полностью эквивалентны типу NUMBER. Синтаксис: DECIMAL (точнос/иь,л«асштао), DEC (точностъ,масштаб), NUMERIC (точность,масштаб ).
Дата и время Тип данных, предназначенный для представления даты и времени, также является нестандартным, хотя и чрезвычайно полезным. Для точного определения типов данных, поддерживаемых конкретной СУБД, следует обращаться к ее документации.
В СУБД Oracle имеется тип DATE, используемый для хранения даты и времени. Поддерживаются даты, начиная от 1 января 4712 года до н.э. И до 31 декабря 4712 года.
По умолчанию при. Типы данных SQL 17 определении даты без уточнения времени принимается время полуночи. Наличие типа данных для хранения даты и времени позволяет поддерживать специальную арифметику дат и времен. Добавление к переменной типа DATE целого числа означает увеличение даты на соответствующее число дней, а вычитание соответствует определению более ранней даты. Константы типа DATE записываются в зависимости от формата, принятого в операционной системе. Например, ', или ', или '03-nov-1999',или 'ОЗ-арг-99'. Неопределенные или пропущенные данные (NOLL) Для обозначения отсутствующих, пропущенных или неизвестных значений атрибута в SQL используется ключевое слово NULL.
Довольно часто можно встретить словосочетание «атрибут имеет значение NULL». Строго говоря, NULL не является значением в обычном понимании, а используется именно для обозначения того факта, что действительное значение атрибута на самом деле пропущено или неизвестно. Это приводит к ряду особенностей, что следует учитывать при использовании значений атрибутов, которые могут находиться в состоянии NULL. В агрегирующих функциях, позволяющих получать сводную информацию по множеству значений атрибута, например суммарное или среднее значение, для обеспечения точности и однозначности толкования результатов отсутствующие или NULL-значенияатрибутов игнорируются. Условные операторы от булевой двузначной логики TRUE/FALSE расширяются до трехзначной логики TRUE/FALSE/UNKNOWN. Все операторы, за исключением оператора конкатенации строк « », возвращают пустое значение (NULL), если значение любого из операндов отсутствует (имеет «значение NULL»).
Для проверки на пустое значение следует использовать операторы is NULL и is NOT NULL (использование с этой целью оператора сравнения «=» является ошибкой). Функции преобразования типов, имеющие NULL в качестве аргумента, возвращают пустое значение (NULL).
:: ИКТ Портал:: Библиотека Информационно-коммуникационные технологии в образовании » » Описание ресурса. SQL в примерах и задачах Название: SQL в примерах и задачах Авторы: Астахова И.Ф., Толстобров А.П., Мельников В.М. Год издания: 2002 Библ. описание: Астахова И.Ф., Толстобров А.П., Мельников В.М. SQL в примерах и задачах. Учебное пособие. Минск: 'Новое знание', 2002.
ISBN: 985-475-004-3 Тип материала: Учебник, учебное пособие Рубрики: Аннотация Изложены основные понятия и способы применения SQL — популярного языка запросов к реляционным базам данных. Описаны приемы манипулирования данными и формирования запросов различной степени сложности. Каждая глава пособия сопровождается упражнениями, которые позволяют закрепить на практике теоретические знания. Книга является учебным пособием для студентов, обучающихся по направлению «Прикладная математика и информатика», а также может быть использована для самостоятельного изучения языка SQL.
© 2003-2014 Государственный научно-исследовательский институт информационных технологий и телекоммуникаций (ФГАУ ГНИИ ИТТ 'Информика').