ebook img

SQL: учебное пособие : для студентов, обучающихся по специальности Прикладная математика и информатика PDF

136 Pages·2011·0.949 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview SQL: учебное пособие : для студентов, обучающихся по специальности Прикладная математика и информатика

Министерство образования и науки Российской Федерации Ярославский государственный университет им. П. Г. Демидова О. В. Власова S Q L Учебное пособие Рекомендовано Научно-методическим советом университета для студентов, обучающихся по специальности Прикладная математика и информатика Ярославль 2011 1 УДК 51 ББК З973.223–0182я73+В1я73 В 58 Рекомендовано Редакционно-издательским советом университета в качестве учебного издания. План 2010/2011 учебного года Рецензенты: Коромыслов В. А., доктор физико-математических наук, доцент, профессор Ярославского филиала МИИТ; кафедра информационно-компьютерных технологий Института информационных технологий МУБиНТ Власова, О. В. SQL: учебное пособие / О. В. Власова ; Яросл. В 58 гос. ун-т им. П. Г. Демидова. – Ярославль : ЯрГУ, 2011. – 136 с. ISBN 978-5-8397-0806-8 Данное пособие по учебному курсу «Базы данных и эксперт- ные системы» представляет собой основы использования языка SQL на примере работы с MS SQL SERVER. Оно ориентировано в первую очередь на практическое применения языка SQL: созда- ние структуры реляционной базы данных, осуществление выбор- ки из базы данных, модификации данных, создание представле- ний, индексов. В пособии содержатся теоретические сведения, включая достаточно подробное описание синтаксиса операторов SQL и основные сведения о создании представлений и индексов, приведены методические указания по их использованию. Пособие содержит большое количество примеров на ис- пользование операторов SQL, которые могут быть полезны на этапе освоения материала, а также выступать в качестве вопро- сов для самопроверки. Предназначено для студентов, обучающихся по специальности 010501.65 Прикладная математика и информатика (дисциплина «Базы данных и экспортные системы», блок ОПД), очной формы обучения. УДК 51 ББК З973.223–0182я73+В1я73  Ярославский государственный ISBN 978-5-8397-0806-8 университет им. П. Г. Демидова, 2011 2 Введение  Основные идеи современных информационных технологий ба- зируются на концепции, согласно которой данные должны быть организованы в базы данных (БД) с целью адекватного отображе- ния изменяющегося реального мира и удовлетворения информаци- онных потребностей пользователей. Эти БД создаются и функцио- нируют под управлением специальных программных комплексов, называемых системами управления базами данных (СУБД). Увеличение объема и структурной сложности хранимых дан- ных, расширение круга пользователей информационных систем привели к широкому распространению наиболее удобных и срав- нительно простых для понимания реляционных БД. Для обеспе- чения одновременного доступа к данным множества пользовате- лей, нередко расположенных достаточно далеко друг от друга и от места хранения баз данных, созданы сетевые версии СУБД. В них тем или иным путем решаются специфические проблемы па- раллельных процессов, целостности (правильности) и безопасно- сти данных, а также санкционирования доступа. Ясно, что совместная работа пользователей в сетях с помо- щью унифицированных средств общения с базами данных воз- можна только при наличии стандартного языка манипулирования данными, обладающего средствами для реализации перечислен- ных выше возможностей. Таким языком стал SQL, разработан- ный в 1974 году фирмой IBM для экспериментальной реляцион- ной СУБД System R. Язык SQL является инструментом, предназначенным для вы- борки и обработки информации, содержащейся в компьютерной базе данных. SQL – это сокращенное название структурирован- ного языка запросов (Structured Query Language). По историче- ским причинам аббревиатура SQL читается обычно как «сиквел», но используется и альтернативное произношение «эскюэль». Как следует из названия, SQL является языком программирования, который применяется для организации взаимодействия пользова- теля с базой данных. На самом деле SQL работает только с база- ми данных одного определенного типа, называемых реляцион- ными. На рис. 1.1 изображена схема работы SQL. Согласно этой 3 схеме, в вычислительной системе имеется база данных, в которой хранится информация. Компьютерная программа, которая управ- ляет базой данных, называется системой управления базой дан- ных (СУБД). Если пользователю необходимо получить информа- цию из БД, он запрашивает её у СУБД c помощью команды SQL. СУБД обрабатывает запрос, находит требуемые данные и посы- лает их пользователю. Процесс запрашивания данных и получе- ния результата называется запросом к базе данных; отсюда и на- звание «структурированный язык запросов». SQL-запрос: Select * from R1 Система База управления базой данных данных (СУБД) Данные: ID FIO 1. Иванов И. И. Рис. 1.1. Применение SQL для доступа к базе данных Однако название SQL не совсем соответствует действитель- ности. Во-первых, сегодня SQL представляет собой нечто боль- шее, чем просто инструмент создания запросов. Сейчас этот язык используется для реализации всех функциональных возможно- стей, которые СУБД предоставляет пользователю. К ним отно- сятся:  организация данных. SQL дает пользователю возможность изменять структуру представления данных, а также устанавли- вать отношения между элементами БД;  выборка данных. SQL дает пользователю возможность из- менять БД, т. е. добавлять в неё новые данные, а также удалять или обновлять уже имеющиеся в ней данные;  управление доступом. С помощью SQL можно ограничить возможности пользователя по выборке и изменению данных и защитить их от несанкционированного доступа;  совместное использование данных. SQL координирует со- вместное использование данных пользователям, работающим па- раллельно, чтобы они не мешали друг другу; 4  целостность данных. SQL позволяет обеспечить целост- ность БД, защищая её от разрушения из-за несогласованных из- менений или отказа системы. Таким образом, SQL является достаточно мощным языком, обеспечивающим эффективное взаимодействие с СУБД. Во-вторых, SQL – это не полноценный компьютерный язык типа С++ или Java. В нем нет инструкций для проверки условий, организации циклов. SQL является подъязыком БД, в который входит около сорока инструкций, предназначенных для управле- ния БД. Инструкции SQL встраиваются в базовый язык, напри- мер С++, и дают возможность получать доступ к БД. Кроме того, из такого языка, как С++, инструкции SQL можно посылать в СУБД, используя интерфейс вызова функций. Наконец, SQL – это слабоструктурированный язык. Инструк- ции SQL напоминают английские предложения и содержат «сло- ва-пустышки», не влияющие на смысл инструкции, но облег- чающие её чтение. В SQL почти нет нелогичностей и к тому же имеется ряд специальных правил, предотвращающих создание инструкций, которые выглядят как абсолютно правильные, но не имеют смысла. SQL на сегодняшний день – единственный стандартный язык для работы с реляционными БД. Сам по себе SQL не является ни системой управления базами данных, ни отдельным программ- ным продуктом. SQL – это неотъемлемая часть СУБД, с помо- щью которой осуществляется связь пользователя с ней. Достоинства SQL SQL – это легкий для понимания язык и в то же время уни- версальное программное средство управления данными. Успех языку SQL принесли следующие его особенности: 1) независимость от конкретной СУБД; 2) межплатформенная переносимость; 3) наличие стандартов; 4) реляционная основа; 5) поддержка со стороны компаний IBM(СУБД DB2) и Mi- crosoft (протокол OBDC и технология ADO); 6) возможность выполнения специальных интерактивных за- просов; 5 7) поддержка архитектуры клиент/сервер; 8) возможность различного представления данных; 9) интеграция с языками высокого уровня; 10) расширяемость и поддержка объектно-ориентированных технологий. Недостатки SQL 1. Несоответствие реляционной модели данных. Создатели реляционной модели данных Эдгар Кодд, Кристо- фер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности, они определяют сле- дующие проблемы SQL: повторяющиеся строки; неопределённые значения (NULL); явное указание порядка колонок слева напра- во; колонки без имени и дублирующиеся имена колонок; отсут- ствие поддержки свойства «=»; использование указателей; высо- кая избыточность. 2. Сложность. Хотя SQL и задумывался как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста. 3. Отступления от стандартов. Несмотря на наличие международного стандарта SQL, мно- гие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отсту- пая от стандарта. Таким образом, появляются специфичные для каждой конкретной СУБД диалекты языка SQL. 4. Сложность работы с иерархическими структурами. Ранее диалекты SQL большинства СУБД не предлагали спо- соба манипуляции древовидными структурами. Некоторые по- ставщики СУБД предлагали свои решения (например, Oracle ис- пользует выражение CONNECT BY). В настоящее время в ANSI стандартизована рекурсивная конструкция WITH из диалекта SQL DB2. В MS SQL Server рекурсивные запросы появились лишь в версии MS SQL Server 2005. В версии MS SQL Server 2008 появился новый тип данных – hierarchyid, упрощающий ма- нипуляцию древовидными структурами. 6 Глава 1. Историческая справка  1.1. Стандарты  Язык SQL был разработан в начале 1970-х годов в одной из исследовательских лабораторий компании IBM для эксперимен- тальной реляционной СУБД IBM System R. Целью разработки было создание простого непроцедурного языка, которым мог воспользоваться любой пользователь, даже не имеющий навыков программирования. Собственно разработкой языка запросов занимались Дональд Чэмбэрлин (Donald D. Cham- berlin) и Рэй Бойс (Ray Boyce); Пэт Селинджер (Pat Selinger) зани- малась разработкой стоимостного оптимизатора (cost-based optimi- zer), Рэймонд Лори (Raymond Lorie) – компилятором запросов. Стоит отметить, что SQL был не единственным языком подоб- ного назначения. В Калифорнийском университете Беркли была разработана некоммерческая СУБД Ingres (являвшаяся прародите- лем популярной сейчас некоммерческой СУБД PostgreSQL), кото- рая являлась реляционной СУБД, но использовала свой собствен- ный язык QUEL, который, однако, не выдержал конкуренции по количеству поддерживающих его СУБД с языком SQL. Первыми СУБД, поддерживающими новый язык, стали в 1979 году Oracle V2 для машин VAX от компании Relational Software Inc. (впоследствии ставшей компанией Oracle) и System/38 от IBM, основанная на System R. Начиная с 1986 года комитеты ISO (International Organization for Standardization) и ANSI (American National Standards Institute) приступили к созданию ряда стандартов языка SQL, которые впоследствии были приняты и получили следующие названия: SQL86, SQL89, SQL92, SQL99, SQL2003 и SQL2008. Стандарт SQL86 зафиксировал минимальный стандартный синтаксис языка SQL. Стандарт SQL99, при разработке именовавшийся как SQL3, стандартизировал объектные расширения языка SQL и некоторые процедурные расширения языка SQL. К моменту принятия этого стандарта большинство коммерческих СУБД, таких как Oracle, уже де-факто ввели использование объектных типов и наследования. 7 В стандарте SQL99 определено обязательное функцио- нальное ядро (Core) и набор уровней расширенного соответст- вия. Функциональное ядро SQL99 включает в себя основной уровень соответствия SQL92. Уровни расширенного соответствия не являются обязательными для реализации в СУБД, претендую- щей на поддержку стандарта SQL99. СУБД может не поддер- живать ни одного уровня расширенного соответствия или под- держивать любые из них. Каждый уровень описывает набор воз- можностей языка SQL, которые должны поддерживать реализа- ции СУБД, претендующие на данный уровень соответствия. Стандарт SQL99 содержит следующие уровни соответствия:  функциональное ядро. Данный уровень является обяза- тельным для любой реализации СУБД. Он включает в себя ос- новной уровень соответствия SQL92, а также поддержку работы с LOB-объектами (Large Object), вызов из SQL внешних программ, написанных на других языках программирования, и простые ти- пы данных, определяемые пользователем (UDT-типы, User- Defined Datatypes). Вводится поддержка LOB-объектов двух ти- пов: бинарных BLOB-объектов (Binary Large Object) и символь- ных CLOB-объектов (Character Large Object). Внешние програм- мы определяются как объекты схемы, так же, как и таблицы. Следует отметить, что хотя использование внешних программ входит в функциональное ядро, но поддержка вызова процедур и функций SQL относится к расширенному уровню соответствия "PSM-модули" (Persistent Stored Module). Определяемые пользо- вателем типы данных могут быть простыми и структурирован- ными. Второй случай относится к уровню соответствия "Базовая поддержка объектов". Простой тип данных, определяемый поль- зователем – это существующий тип данных, для которого опре- делено новое имя и возможно некоторое ограничение по количе- ству символов или цифр;  поддержка работы с датой/временем. Этот уровень соот- ветствия вводит типы данных DATETIME и INTERVAL, а для типа DATETIME вводит поля TIMEZONE_HOUR и TIMEZO- NE_MINUTE, определяющие смещение для зонального времени относительно универсального времени. В стандарте SQL92 пол- 8 ного уровня соответствия типы данных DATETIME и INTERVAL уже были специфицированы;  управление целостностью. Этот уровень соответствия вво- дит поддержку дополнительных возможностей ссылочной целост- ности: подзапросы в ограничениях целостности CHECK оператора CREATE TABLE, триггеры. Большинство из этих возможностей входило в стандарт SQL92;  активные базы данных. На этом уровне соответствия опре- деляется поддержка триггеров базы данных, хранимых в базе дан- ных и выполняемых. Триггеры представляют собой фрагменты ко- да, выполняемые перед или после указанного изменения данных (такого как вставка строки, удаление или изменение строки);  OLAP. Этот уровень соответствия определяет средства опи- сания более сложных запросов. Так, в оператор SELECT включена фраза INTERSECT, позволяющая получать пересечения множеств, выданных несколькими запросами. В оператор SELECT включена фраза FULL OUTER JOIN, предназначенная для создания полных внешних соединений таблиц. В операторах языка SQL, применяе- мых для манипулирования данными, определяется поддержка ис- пользования конструкторов значений строк и таблиц. Конструкто- ры значений строк состоят из одного или нескольких выражений (например, (NULL, 1, 'Field1')). Конструкторы значений таблиц представляют собой набор значений конструкторов строк, описы- вающий группу строк (например, VALUES (1, 'A'), (2, 'B'));  PSM-модули. Стандарт для процедурных расширений. Этот уровень соответствия полностью описан в документе SQL/PSM стандарта SQL99. Так, язык SQL расширяется операторами управ- ления CASE, IF, WHILE, REPEAT, LOOP и FOR. Вводится под- держка процедур и функций, создаваемых операторами CREATE PROCEDURE и CREATE FUNCTION. В язык SQL введено исполь- зование переменных и применение обработчиков ошибок. Перечень процедурных расширений для самых популярных СУБД приведён в табл. 1.  CLI-интерфейс. Этот уровень соответствия вводит под- держку интерфейса уровня вызова, определяющего вызов опера- торов SQL. В свое время на базе CLI-интерфейса был разработан стандарт ODBC; 9 Таблица 1 Процедурные расширения Краткое СУБД Расшифровка название InterBase/Firebird PSQL Procedural SQL IBM DB2 SQL SQL Procedural Language (расширяет PL (англ.) SQL/PSM); также в DB2 хранимые про- цедуры могут писаться на обычных язы- ках программирования: Си, Java и т. д. MS SQL Server/ Transact- Transact-SQL SQL MySQL SQL/PSM SQL/Persistent Stored Module (соответст- вует стандарту SQL:2003) Oracle PL/SQL Procedural Language/SQL (основан на языке Ada) PostgreSQL PL/pgSQL Procedural Language/PostgreSQL Structured Query Language (очень похож на Oracle PL/SQL)  базовая поддержка объектов (Basic Object Support). Этот уровень соответствия стандартизирует использование объектов, вводя поддержку объектных типов данных, определяемых поль- зователем, применение типизированных таблиц (таблиц на базе объектных типов), использование массивов и ссылочных типов данных, а также переопределение внешних процедур;  расширенная поддержка объектов (Enhanced Object Support). Этот уровень соответствия включает все возможности, предоставляемые уровнем базовой поддержки объектов, допол- няя их поддержкой множественного наследования для типов дан- ных, определяемых пользователем. Представленные выше уровни расширенного соответствия напрямую не связаны с документами, соответствующими разде- лам стандарта. Стандарт SQL99 содержит следующие основные разделы:  SQLFramework – описывает логические основы стандарта.  SQLFoundation – определяет содержание каждого раздела стандарта и описывает функциональное ядро стандарта (Core SQL99). 10

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.