ebook img

SQL. Справочник PDF

652 Pages·2010·4.045 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. Справочник

SQL. СПРАВОЧНИК Ох 3- Pват е ostыв из третье издание greSает да Изузедмаонмиуе вп нраеидбстоалвелея пеотп суолбяорйн ынахс нтао лсьенгоыдйн яспшрнаивйо чднениьк СпУоБ яДзы. Ккнуи SгQаL с,о идсепрожлиьт- QL и SMQySQL, ние полный алфавитный перечень операторов SQL с приведением описания реа- L Or лизации каждого из них. Serveracle, В этой книге вы найдете: • Историю реляционной модели данных, а также текущего и предыдущих стандар- S тов SQL. • Основные концепции, необходимые для понимания реляционных баз данных Q и команд SQL. • Алфавитный справочник операторов SQL согласно стандарту ANSI SQL2003. • Описание реализации каждого оператора в MySQL, Oracle, PostgreSQL и SQL Server. L • Алфавитный справочник функций SQL согласно стандарту ANSI SQL2003, с описа- нием особенностей реализации. • Описание специфических функций, реализованных в той или иной СУБД. Справочник подготовлен профессиональными администраторами и опытными раз- работчиками, использующими различные варианты SQL для поддержки сложных кор- поративных приложений. Основная задача этого издания – служить кроссплатфор- менным руководством для людей, не являющихся экспертами, но занимающихся пере- С носом кода (включая пользовательские приложения) между различными СУБД. Независимо от того, является ли читатель новичком в SQL или имеет значительный П опыт его использования, он найдет много полезных советов и приемов в этой лако- ничной и удобной в использовании книге. Р Кевин Кляйн – директор по решениям для SQL Server в компании Quest Software, А занимающейся разработкой инструментов для управления базами данных и монито- В ринга приложений. Дэниэл Кляйн – профессор и председатель аспирантуры в университете Анкориджа О штата Аляска. Ч Брэнд Хант – директор по архитектуре и проектированию в Merril Lynch. СПРА ВОЧНИК Н И К Категория: базы данных Издательство «Символ-Плюс» Уровень подготовки читателей: средний (812) 324-5353, (495) 945-8100 К. Кляйн Д. Кляйн Б. Хант ISBN 978-5-93286-165-3 www.symbol.ru Кевин Е. Кляйн, Дэниэл Кляйн и Брэнд Хант 9 785932 861653 SQL IN A NUTSHELL A Desktop Quick Reference Third edition Kevin E. Kline with Daniel Klien & Brand Hunt SQL СПРАВОЧНИК Третье издание Кевин Е. Кляйн, Дэниэл Кляйн и Брэнд Хант Санкт(cid:7)Петербург–Москва 2010 Кевин Кляйн, Дэниэл Кляйн и Брэнд Хант SQL. Справочник, 3(cid:12)е издание Перевод Е.Демьянова, А.Слинкина Главный редактор А.Галунов Зав. редакцией Н.Макарова Выпускающий редактор П.Щеголев Научный редактор А.Рындин Редактор Ю.Бочина Корректор С.Минин Верстка Д.Орлова Кляйн К., Кляйн Д., Хант Б. SQL. Справочник, 3(cid:29)е издание. – Пер. с англ. – СПб: Символ(cid:29)Плюс, 2010. – 656 с., ил. ISBN 978(cid:29)5(cid:29)93286(cid:29)165(cid:29)3 В третьем издании книги «SQL. Справочник» описываются все операторы SQL согласно последнему стандарту ANSI SQL2003, а также особенности реализа(cid:29) ции этих операторов в наиболее популярных СУБД: Microsoft SQL Server2008, Oracle11g, MySQL5.1 и PostgreSQL8.3. Издание содержит описание реляци(cid:29) онных моделей данных, объяснение основных концепций реляционных СУБД, полное описание синтаксиса SQL, а также описание специфических функций, характерных для каждой СУБД. Справочник подготовлен профессиональными администраторами и опытными разработчиками, использующими различные диалекты SQL для поддержки сложных корпоративных приложений. Основная задача издания – служить кроссплатформенным руководством для тех, кто, не будучи экспертами, зани(cid:29) мается переносом кода (включая пользовательские приложения) между раз(cid:29) личными СУБД. Независимо от того, является ли читатель новичком в SQL или имеет значительный опыт его использования, он найдет много полезных сове(cid:29) тов и приемов в этой лаконичной и удобной для работы книге. ISBN 978(cid:2)5(cid:2)93286(cid:2)165(cid:2)3 ISBN 978(cid:2)0(cid:2)596(cid:2)51884(cid:2)4 (англ) © Издательство Символ(cid:29)Плюс, 2010 Authorized translation of the English edition © 2008 O’Reilly Media, Inc. This trans(cid:29) lation is published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или час(cid:29) тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна(cid:29) ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство«Символ(cid:29)Плюс».199034,Санкт(cid:29)Петербург,16линия,7, тел.(812) 380(cid:29)5007, www.symbol.ru. Лицензия ЛП N 000054 от 25.12.98. Налоговая льгота – общероссийский классификатор продукции ОК 005(cid:29)93, том 2; 953000 – книги и брошюры. Подписано в печать 30.09.2009. Формат 70х1001 /16. Печать офсетная. Объем 41 печ.л. Тираж 1500 экз. Заказ N Отпечатано с диапозитивов в ГУП «Типографии «Наука» 199034, Санкт(cid:29)Петербург, 9 линия, 12. Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1. История и реализации SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Реляционная модель и ANSI SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Правила Кодда для реляционных баз данных. . . . . . . . . . . . . . . . . . . 16 Правила Кодда в действии: простой пример SELECT. . . . . . . . . . . . . 22 История стандарта SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Новое в SQL2006 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Новое в SQL2003 (SQL3). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Уровни соответствия стандарту . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Дополнительные пакеты возможностей в стандарте SQL3 . . . . . . . . 26 Классы операторов SQL3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Диалекты SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2. Основные концепции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Рассматриваемые СУБД. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Категории синтаксиса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Идентификаторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Литералы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Зарезервированные и ключевые слова . . . . . . . . . . . . . . . . . . . . . . . . . 44 SQL2003 и типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Типы данных MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 Типы данных Oracle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Типы данных PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Типы данных SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 Ограничения целостности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Область применения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Синтаксис. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Первичные ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Внешние ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Уникальные ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Проверочные ограничения целостности. . . . . . . . . . . . . . . . . . . . . . . . 73 6 Оглавление 3. Справочник операторов SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Как читать эту главу?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Поддержка SQL платформами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Перечень операторов SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4. Функции SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501 Классификация функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501 Детерминированные и недетерминированные функции. . . . . . . . .501 Агрегатные и скалярные функции . . . . . . . . . . . . . . . . . . . . . . . . . . .502 Оконные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502 Агрегатные функции в ANSI SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .502 Оконные функции в ANSI SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .520 Синтаксис оконных функций в ANSI SQL2003. . . . . . . . . . . . . . . . .521 Синтаксис оконных функций в Oracle . . . . . . . . . . . . . . . . . . . . . . . .521 Синтаксис оконных функций в SQL Server . . . . . . . . . . . . . . . . . . . .521 Разбиение (partitioning) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522 Упорядочение (ordering) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .522 Группировка и скользящие окна (framing) . . . . . . . . . . . . . . . . . . . .523 Перечень оконных функций. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .524 Скалярные функции в стандарте ANSI SQL. . . . . . . . . . . . . . . . . . . . . .528 Встроенные скалярные функции. . . . . . . . . . . . . . . . . . . . . . . . . . . . .529 Функции CASE и CAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .530 Числовые скалярные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .533 Строковые функции и операторы . . . . . . . . . . . . . . . . . . . . . . . . . . . .544 Платформо(cid:29)зависимые расширения . . . . . . . . . . . . . . . . . . . . . . . . . . . .550 Функции, поддерживаемые MySQL . . . . . . . . . . . . . . . . . . . . . . . . . .551 Функции, поддерживаемые Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . .570 Функции, поддерживаемые PostgreSQL . . . . . . . . . . . . . . . . . . . . . .596 Функции, поддерживаемые SQL Server . . . . . . . . . . . . . . . . . . . . . . .610 A. Ключевые слова: общие и платформо(cid:2)зависимые . . . . . . . . . . .624 Алфавитный указатель. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .633 Предисловие С момента появления в 1970(cid:29)х годах развитие языка SQL (structured query lan(cid:29) guage, структурированный язык запросов) шло в параллели с информационным бумом, иврезультате SQL стал самым широко используемым языком управле(cid:29) ния базами данных. Множество компаний и отдельных разработчиков, включая разработчиков ПО с открытым кодом (http://www.opensource.org), создали свои диалекты SQL в соответствии со своими потребностями. В то же время комите(cid:29) ты, занимающиеся стандартами, разрабатывали растущий список стандартных возможностей. В этом справочнике описываются все операторы SQL согласно последнему стан(cid:29) дарту ANSI SQL2003(SQL3), а также особенности реализации этих операторов вразличных СУБД. В этой книге вы найдете описание реляционных моделей данных, объяснение основных концепций реляционных СУБД, полное описание синтаксиса SQL. Но самое главное, особенно для программиста или разработчика (проектировщи(cid:29) ка ПО), это то, что эта книга является справочником по двум самым популярным коммерческим СУБД (Microsoft SQL Server и Oracle) и двум самым известным СУБД с открытым кодом (MySQL и PostgreSQL). Внимание, уделяемое в этой книге системам соткрытым кодом, отражает возрастающую важность таких сис(cid:29) тем для компьютерного сообщества. Синтаксис SQL, описанный в этой книге, включает следующие варианты реали(cid:29) зации: • В соответствии со стандартом ANSI SQL2003 (SQL3) • MySQL версии 5.1 • Oracle Database 11g • PostgreSQL версии 8.3 • Microsoft SQL Server 2008 Зачем нужна эта книга? Основным источником информации по реляционным СУБД традиционно являет(cid:29) ся документация и файлы справки, поставляемые разработчиками. Хотя доку(cid:29) 8 Предисловие ментация и является необходимым ресурсом, к которому большинство разработ(cid:29) чиков и администраторов обращается в первую очередь, такая документация имеет определенные ограничения: • Реализация языка SQL описывается без указания того, насколько хорошо эта реализация согласуется с ANSI стандартом • Описывается только один конкретный продукт, но не дается никакого описа(cid:29) ния возможных проблем при переводе, миграции или интеграции • Описание приводится в множестве маленьких разрозненных файлов • Описание отдельных команд зачастую настолько детально, что сбивает с тол(cid:29) ку, скрывая простые и очевидные способы применения этих команд в повсе(cid:29) дневной работе программиста или администратора. Другими словами, поставляемая с СУБД документация дает исчерпывающее объ(cid:29) яснение каждого аспекта конкретной версии продукта. И это нормально: в конце концов, документация и нужна для того, чтобы дать всю информацию о продук(cid:29) те. В документации приводится синтаксис команд (со всеми мыслимыми вариан(cid:29) тами), ивобщих чертах описывается использование. Тем не менее, если вы рабо(cid:29) таете с разными СУБД и хотите работать продуктивно, то вы вряд ли будете ис(cid:29) пользовать эти специфические особенности; наоборот, вы будете использовать те возможности, которые необходимы в большинстве реальных ситуаций. Эта книга начинается там, где заканчивается документация. В книге использо(cid:29) ван опыт профессиональных администраторов баз данных и разработчиков, ис(cid:29) пользующих различные диалекты SQL в своей каждодневной работе по поддерж(cid:29) ке сложных корпоративных приложений. Вам предлагается воспользоваться их опытом, изложенным в компактном и легко используемом формате. Независимо от того, являетесь ли вы новичком в SQL или используете его на протяжении не(cid:29) скольких лет, вы найдете множество полезных советов и приемов. А при перехо(cid:29) де от одной СУБД кдругой важно быть в курсе основных возможных проблем, которые могут возникнуть, если вы не будете осведомлены и осторожны. Для кого предназначена эта книга? Этот справочник будет полезен разным читателям. Это и программисты, кото(cid:29) рым нужен ясный и удобный справочник по SQL; и разработчики, занимающие(cid:29) ся миграцией с одного диалекта SQL на другой; и администраторы баз данных, которым нужно выполнять тысячи команд для поддержки корпоративных ин(cid:29) формационных систем в рабочем состоянии, а также управлять объектами баз данных, такими как таблицы, индексы, представления. Эта книга является справочником, а не учебником. Мы, к примеру, не объясня(cid:29) ем концепцию элементарного цикла; опытному программисту это известно, и ему «мясо» подавай. Поэтому мы объясняем, как должен работать курсор по стандар(cid:29) ту ANSI, и как курсор работает на описываемых платформах, особенности кур(cid:29) соров на каждой платформе, а также основные потенциальные проблемы при ис(cid:29) пользовании курсоров и методы решения этих проблем. Хотя эта книга не учебник по SQL или проектированию баз данных, мы даем не(cid:29) которую вводную информацию и надеемся, что она окажется вам полезной. Гла(cid:29) вы 1 и 2 дают краткое введение в SQL, описывая истоки возникновения этого Предисловие 9 языка, основные структуры и базовые операции. Если вы новичок в SQL, то эти главы помогут вам начать работать. Как организована эта книга Книга содержит четыре главы и приложение: Глава 1. История и реализации SQL Обсуждаются реляционная модель данных, описываются текущий и предыду(cid:29) щие стандарты SQL, дается введение в реализации SQL, описываемые в этой книге. Глава 2. Основные концепции Описываются концепции, необходимые для понимания реляционных баз дан(cid:29) ных и SQL команд. Глава 3. Справочник операторов SQL Приводится алфавитный справочник операторов SQL. В этой главе описыва(cid:29) ется последний стандарт ANSI (SQL3) и детали реализации каждой команды в MySQL, Oracle, PostgreSQL и SQL Server. Глава 4. Функции SQL Описываются все функции SQL по стандарту ANSI SQL3, а также особенно(cid:29) сти реализации этих функций производителями. Также приводятся все спе(cid:29) цифические функции, реализованные в каждой платформе. Приложение. Ключевые слова: общие и платформо0зависимые Приводится список ключевых слов, зарезервированных стандартом SQL3 ифирмами(cid:29)производителями. Не используйте слова из этого списка для име(cid:29) нования объектов и переменных. Как использовать эту книгу Книга в первую очередь является справочником команд. Следовательно, вы бу(cid:29) дете использовать ее для получения информации по командам и функциям SQL. Однако при наличии описания по стандарту и по четырем платформам описание каждой команды может быть очень большим. Для того чтобы избежать излишнего многословия при описании, мы сравниваем реализацию каждой платформы со стандартом SQL3. Если реализация согласу(cid:29) ется со стандартом, мы не повторяем описание еще раз. Обобщенные и переносимые между платформами примеры приводятся в описа(cid:29) нии каждой команды по стандарту SQL3. Так как стандарт развивается быстрее большинства реализаций, то для тех команд, которые не поддерживаются ни од(cid:29) ной из рассматриваемых в книге платформ, примеры не приводятся. С другой сто(cid:29) роны, приводятся примеры для пояснения многочисленных расширений и улуч(cid:29) шений команд, реализованных на каждой конкретной платформе. Мы понимаем, что при таком подходе может потребоваться неоднократно пере(cid:29) прыгивать от описания платформенной реализации команды обратно к описанию 10 Предисловие команды в стандарте SQL3. Однако мы верим, что это все же лучше, чем заби(cid:29) вать книгу сотнями страниц повторяющейся информации. Ресурсы На следующих веб(cid:29)сайтах можно найти дополнительную информацию о плат(cid:29) формах, рассматриваемых в этой книге: MySQL Корпоративным ресурсом по MySQL является http://www.mysql.com, еще один хороший сайт http://dev.mysql.com/doc/refman/5.1/en/. Хорошим ресурсом для разработчиков с множеством полезных примеров является Devshed.com Ищите информацию по MySQL по ссылке http://www.devshed.com/c/b/MySQL. PostgreSQL Домашняя страница этой СУБД с открытым кодом расположена на http:// www.postgresql.org. Помимо огромного количества информации для скачива(cid:29) ния на сайте поддерживается рассылка для пользователей PostgreSQL. Дру(cid:29) гой достойный внимания сайт, предлагающий также поддержку коммерче(cid:29) ским пользователям,– http://www.pgsql.com. Oracle Портал Oracle расположен на http://www.oracle.com. Огромное количество информации для постоянных пользователей Oracle находится по адресу http:// www.oracle.com/technology/. Вся документация доступна по ссылке http:// www.oracle.com/technology/documentation/index.html. Для полезной инфор(cid:29) мации об Oracle от независимых источников посетите сайт Independent Oracle User Group http://www.ioug.org. SQL Server Официальный сайт Microsoft SQL Server http://www.microsoft.com/sql/. Дру(cid:29) гой хороший ресурс расположен на сайте Профессиональной ассоциации пользователей SQL Server (PASS) http://www.sqlpass.org. Изменения в третьем издании Основной причиной для выпуска нового издания книги о технологии обычно яв(cid:29) ляется прогресс этой технологии. С момента выпуска второго издания этой кни(cid:29) ги был создан новый стандарт ANSI, а большинство производителей СУБД вы(cid:29) пустили как минимум по одному новому релизу. В результате наши читатели получат свежую информацию о последних версиях языка SQL, представленных на рынке. Вот основные изменения в третьем издании: Уменьшенный охват Читателям второго издания пришлось по душе представленное в нем описа(cid:29) ние всех основных СУБД. Но поддержка такого большого количества инфор(cid:29) мации вактуальном состоянии оказалась сложным делом. Поэтому по ре(cid:29) зультатам большого опроса читателей мы решили исключить из этого изда(cid:29)

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.