Данная книга является очень хорошим введением в теорию реляционных БД для пользователей-новичков, а также хорошим началом в освоении SQL, грамотном построение запросов, понимании того как эти запросы работают. Безусловно рекомендуется к прочтению для начинающих пользователей.
Содержание:
МАРТИН ГРУБЕР - Понимание SQL 1
Команда SELECT 1
Команды UPDATE, INSERT, DELETE 1
Команда CREATE TABLE 1
ПРЕДИСЛОВИЕ 2
Глава 1. ВВЕДЕНИЕ В РЕЛЯЦИОННУЮ БАЗУ ДАННЫХ 2
Глава 2. SQL : ОБЗОР. 4
Глава 3. ИСПОЛЬЗОВАНИЕ SQL ДЛЯ ИЗВЛЕЧЕНИЯ ИНФОРМАЦИИ ИЗ ТАБЛИЦ. 6
Глава 4. ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАТОРОВ ДЛЯ СОЗДАНИЯ БОЛЕЕ ИЗОЩРЕННЫХ ПРЕДИКАТОВ 8
Глава 5. ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ ОПЕРАТОРОВ В УСЛОВИЯХ 10
Глава 6. ОБОБЩЕНИЕ ДАННЫХ С ПОМОЩЬЮ АГРЕГАТНЫХ ФУНКЦИЙ 12
Глава 7. ФОРМИРОВАНИЕ ВЫВОДОВ ЗАПРОСОВ 14
Глава 8. ЗАПРАШИВАНИЕ МНОГОЧИСЛЕНЫХ ТАБЛИЦ ТАКЖЕ КАК ОДНОЙ 17
Глава 9. ОБЪЕДИНЕНИЕ ТАБЛИЦЫ С СОБОЙ 18
Глава 10. ВСТАВКА ОДНОГО ЗАПРОСА ВНУТРЬ ДРУГОГО 20
Глава 11. СООТНЕСЕННЫЕ ПОДЗАПРОСЫ 22
Глава 12. ИСПОЛЬЗОВАНИЕ ОПЕРАТОРА EXISTS 24
Глава 13. ИСПОЛЬЗОВАНИЕ ОПЕРАТОРОВ ANY, ALL, И SOME 26
Глава 14. ИСПОЛЬЗОВАНИЕ ПРЕДЛОЖЕНИЯ UNION 30
Глава 15. ВВОД, УДАЛЕНИЕ и ИЗМЕНЕНИЕ ЗНАЧЕНИЙ ПОЛЕЙ 32
Глава 16. ИСПОЛЬЗОВАНИЕ ПОДЗАПРОСОВ С КОМАНДАМИ МОДИФИКАЦИИ 34
Глава 17. СОЗДАНИЕ ТАБЛИЦ 36
Глава 18.ОГРАНИЧЕНИЕ ЗНАЧЕНИЙ ВАШИХ ДАННЫХ 38
Глава 19. ПОДДЕРЖКА ЦЕЛОСТНОСТИ ВАШИХ ДАННЫХ 41
Глава 20. ВВЕДЕНИЕ: ПРЕДСТАВЛЕНИЯ 44
Глава 21. ИЗМЕНЕНИЕ ЗНАЧЕНИЙ С ПОМОЩЬЮ ПРЕДСТАВЛЕНИЙ 46
Глава 22. КТО ЧТО МОЖЕТ ДЕЛАТЬ В БАЗЕ ДАННЫХ 49
Глава 23. ГЛОБАЛЬНЫЕ АСПЕКТЫ SQL 52
Глава 24. КАК ДАННЫЕ SQL СОДЕРЖАТСЯ В УПОРЯДОЧЕННОМ ВИДЕ 55
Глава 25. ИСПОЛЬЗОВАНИЕ SQL С ДРУГИМ ЯЗЫКОМ 59
Приложение A. ОТВЕТЫ ДЛЯ УПРАЖНЕНИЙ 64
Приложение B. ТИПЫ ДАННЫХ В SQL 66
Приложение C. НЕКОТОРЫЕ ОБЩИЕ НЕСТАНДАРТНЫЕ СРЕДСТВА SQL 67
Приложение D. СИНТАКСИС И КОМАНДА ССЫЛКИ 69
Приложение E. ТАБЛИЦЫ ИСПОЛЬЗУЕМЫЕ В КНИГЕ 73
МАРТИН ГРУБЕР
Понимание SQL
Перевод Лебедева В.Н.
Под редакцией Булычева В.Н.
МОСКВА, 1993
MARTIN GRUBER
Understanding SQL
Команда SELECT
SELECT * | { [ DISTINCT | ALL] <value expression>.,..}
FROM { <table name> [ <alias> ] }.,..
[ WHERE <predicate>]
[ GROUP BY { <column name> | <integer> }.,..]
[ HAVING <predicate>]
[ ORDERBY { <column name> | <integer> }.,..]
[ { UNION [ALL]
SELECT * | { [DISTINCT | ALL] < value expression >.,..}
FROM { <table name> [<alias>]} .,..
[ WHERE <predicate>
[ GROUP BY { <columnname> | <integer> }.,..]
[ HAVING <predicate>]
[ ORDER BY { <columnname> | <integer> }.,..] } ] ...;
Элементы, используемые в команде SELECT
ЭЛЕМЕНТ | ОПРЕДЕЛЕНИЕ |
<value expression> | Выражение, которое производит значение. Оно может включать в себя или содержать <column name>. |
<table name> | Имя или синоним таблицы или представления |
<alias> | Временный синоним для <table name>, определеный в этой таблице и используемый только в этой команде |
<predicate> | Условие , которое может быть верным или неверным для каждой строки или комбинации строк таблицы в предложении FROM. |
<column name> | Имя столбца в таблице. |
<integer> | Число с десятичной точкой. В этом случае, оно показывает <value expression> в предложении SELECT с помощью идентификации его местоположения в этом предложении. |
Команды UPDATE, INSERT, DELETE
UPDATE
UPDATE <tablename>
SET { | }.,. .< column name> = <value expresslon> [ WHERE <predlcate>
| WHERE CURRENT OF <cursor name> (*только для вложения*) ];
INSERT
INSERT INTO < table name> [(<column name> .,. ]
{ VALUES ( <value expression> .,.. ) } | <query>;
DELETE
DELETE FROM <table name>
[ WHERE <predicate>
| WHERE CURRENT OF <cursor name> (*только для вложения*) ];
ЭЛЕМЕНТ | ОПРЕДЕЛЕНИЕ |
<cursor name> | Имя курсора используемого в этой программе. |
<query> | Допустимая команда SELECT. |
Для других элементов смотри команду SELECT.
Символы Используемые в Синтаксисе Предлжения
СИМВОЛ | ОБЪЯСНЕНИЕ |
| | Любой предшествующий знаку (|) символ может быть произвольно заменен на любой следующий за (|). Это - символический способ высказывания "или" ("or"). |
{ } | Все, что включено в фигурные скобки обрабатывается как модуль с целью оценки |, .,.. или других символов. |
[ ] | Все,включенное в квадратные скобки является необязательным |
... | Любое, предшествующее этому, может повторяться любое число раз. |
.,.. | Любое, предшествующее этому, и в каждом случае отделенное |
запятыми, может повторяться любое число раз.
Команда CREATE TABLE
CREATE TABLE <table name>
( { <column name> <data type> | <size>]
[<colcnstrnt> ...]} .,.. );
[<tabconstrnt>] .,.. );
Элементы, используемые в команде CREATE TABLE
ЭЛЕМЕНТ | ОПРЕДЕЛЕНИЕ |
<table name> | Имя таблицы создаваемой этой командой. |
<column name> | Имя столбца таблицы. |
<data type> | Тип данных |
Тип данных, который может содержаться в столбце.
Может быть любым из следующих:
INTEGER (ЦЕЛОЕ ЧИСЛО),
CHARACTER (СИМВОЛЬНОЕ),
DECIMAL (ДЕСЯТИЧНОЕ),
NUMERIC (ЧИСЛОВОЕ),
SMALLINT (НАИМЕНЬШЕЕ)
FLOAT (С ПЛАВАЮЩЕЙ ТОЧКОЙ)
REAL (РЕАЛЬНОЕ),
DOUBLE PRECISION (УДВОЕННАЯ ТОЧНОСТЬ С ПЛАВАЮЩЕЙ ТОЧКОЙ),
LONG * (ДЛИННОЕ *),
VARCHAR * (ПЕРЕМЕННОЕ СИМВОЛЬНОЕ *),
DATE * (ДАТА *),
TIME * (ВРЕМЯ *)
(* - указывает на нестандартный для SQL тип данных)
<size> Размер. Его значение зависит от <data type>.
<colconstrnt> Может быть любым из следующих:
NOT NULL (НЕ НУЛЕВОЙ),
UNIQUE (УНИКАЛЬНЫЙ),
PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ),
CHECK(<predicate>) (ПРОВЕРКА предиката),
DEFAULT = <value expression> (ПО УМОЛЧАНИЮ = значимому выражению)
REFERENCES <table name> [(<column name> .,.. )] (ССЫЛКА НА имя таблицы [(имя столбца) ] )
<tabconstrnt> Может быть любым из следующих:
UNIQUE (УНИКАЛЬНЫЙ),
PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ),
CHECK (ПРОВЕРКА предиката )
FOREIGN KEY(<column name>) (ВНЕШНИЙ КЛЮЧ)
REFERENCES <table name> [(<column name> .,.. )] (ССЫЛКА НА имя таблицы [( имя столбца) ].
ПРЕДИСЛОВИЕ
"ПОНИМАНИЕ SQL" - это полный учебник по программированию на Структурированном Языке Запросов, написанный специально для тех, кто будет использовать SQL в процессе работы. Даже если это ваш первый опыт с компьютерами или управлением базами данных, книга "ПОНИМАНИЕ SQL" очень быстро научит вас свободно работать с реальной SQL, использованию простых запросов, а также снабдит вас ясными понятиями об автоматизированном управлении базой данных. Книга даст вам краткое, удобное в чтении введение в реляционные базы данных. Предоставит вам обучающие программы, чтобы, овладевая командами SQL шаг за шагом, помочь вам узнать, как извлекать и обрабатывать информацию, содержащуюся в таблицах данных, т.е.:
* выбирать информацию, с которой вы хотите работать
* добавлять, удалять, и модифицировать информацию в таблице данных
* использовать и-или, верно/неверно и другие условия для обнуления определенной информации
* использовать специальные функции SQL для суммирования ваших данных.
Книга покажет Вам, как эффективно работать с многочислеными таблицами данных, используя улучшеную технику для запроса более чем одной таблицы одновременно, строить комплекс запросов и подзапросов, и использовать представления, чтобы создавать базы данных и работать с базами данных раздельно с многими таблицами.
Научит создавать новые таблицы данных для пользовательских деловых прикладных программ. Вы исследуете принципы эффективного проектирования базы данных, а также техники для обеспечения целостности данных и их защиты.
Вы узнаете, как использовать SQL с другими языками в специальной главе SQL для программистов.
"ПОНИМАНИЕ SQL" - необходима и пригодна для любой реализации Структурированного Языка Запроса. Книга включает и краткий справочный стандарт SQL и руководство к общим нестандартным особенностям SQL.
Об Авторе
Мартин Грубер - свободный писатель, учитель и консультант из Сан-Франциско.
В дополнении к написанию и редактированию книг, руководств пользователей и документации, он работает в широком спектре интересов, связанных с компьютерами и компьютерными базами данных.
Глава 1. ВВЕДЕНИЕ В РЕЛЯЦИОННУЮ БАЗУ ДАННЫХ
SQL (ОБЫЧНО ПРОИЗНОСИМАЯ КАК "SEEQUEL" ["СЭКВЭЛ"]) символизирует собой Структурированный Язык Запросов. Это - язык который дает вам возможностьсоздавать и работать в реляционных базах данных, которые являются наборами связанной информации сохраняемой в таблицах.
Мир баз данных становится все более и более единым, что привело к необходимости создания стандартного языка который мог бы использоваться чтобы функционировать в большом количестве различных видов компьютерных сред. Стандартный язык позволит пользователям знающим один набор команд, использовать их чтобы создавать, отыскивать, изменять, и передавать информацию независимо от того работают ли они на персональном компьютере, сетевой рабочей станции, или на универсальной ЭВМ.
В нашем все более и более взаимосвязанном компьютерном мире, пользователь снабженый таким языком, имеет огромное преимущество в использовании и обобщении информации из ряда источников с помощью большого колличества способов.
Элегантность и независимость от специфики компьютерных технологий, а также его поддержка лидерами промышленности в области технологии реляционных баз данных, сделало SQL, и вероятно в течение обозримого будущего оставит его, основным стандартным языком. По этой причине, любой кто хочет работать с базами данных 90-х годов должен знать SQL.
Стандарт SQL определяется ANSI (Американским Национальным Институтом Стандартов) и в данное время также принимается ISO (МЕЖДУНАРОДНОЙ ОРГАНИЗАЦИЕЙ ПО СТАНДАРТИЗАЦИИ). Однако, большинство коммерческих программ баз данных расширяют SQL без уведомления ANSI, добавляя разные другие особенности в этот язык, которые, как они считают, будут весьма полезны. Иногда они несколько нарушают стандарт языка, хотя хорошие идеи имеют тенденцию развиваться и вскоре становиться стандартами "рынка" сами по себе в силу полезности своих качеств. В этой книге, мы будем, в основном, следовать стандарту ANSI, но одновременно иногда будет показывать и некоторые наиболее общие отклонения от его стандарта.
Вы должны проконсультироваться с документацией вашего пакета программ который вы будете использовать, чтобы знать где в нем этот стандарт видоизменен. ПРЕЖДЕ, ЧЕМ ВЫ СМОЖЕТЕ ИСПОЛЬЗОВАТЬ SQL, ВЫ должны понять что такое реляционные базы данных. В этой главе, мы это объясним, и покажем насколько реляционные базы данных полезны. Мы не будем обсуждать SQL именно здесь, и если вы уже знаете эти понятия довольно хорошо, вы можете просто пропустить эту главу. В любом случае, вы должны рассмотреть три таблицы которые предоставляются и объясняются в конце главы; они станут основой наших примеров в этой книге. Вторая копия этих таблиц находится Приложении E, и мы рекомендуем скопировать их для удобства ссылки к ним.
ЧТО ТАКОЕ - РЕЛЯЦИОННАЯ БАЗА ДАННЫХ?
Реляционная база данных - это тело связанной информации, сохраняемой в двумерных таблицах. Напоминает адресную или телефонную книгу. В книге имеется большое количество входов, каждый из которых соответствует определеной особенности. Для каждой такой особенности, может быть несколько независимых фрагментов данных, например имя, телефонный номер, и адрес. Предположим, что вы должны сформатировать эту адресную книгу в виде таблицы со строками и столбцами. Каждая строка (называемая также записью ) будет соответствовать определенной особенности; каждый столбец будет содержать значение для каждого типа данных - имени, телефонного номера, и адреса представляемого в каждой строке. Адресная книга могла бы выглядеть следующим образом:
Имя | Телефон | Адрес |
Gerry Farish | ( 415)365-8775 127 | Primrose Ave.,SF |
Celia Brock | ( 707)874-3553 246 | #3rd St.,Sonoma |
Yves Grillet | ( 762)976-3665 | 778 Modernas,Barcelona |
То что вы получили является основой реляционной базы данных как и было определено в начале этого обсуждения - а именно, двумерной (строка и столбец ) таблицей информации. Однако, реляционные базы данных редко состоят из одной таблицы. Такая таблица меньше чем файловая система. Создав несколько таблиц взаимосвязанной информации, вы сможете выполнить более сложные и мощные операции с вашими данными. Мощность базы данных зависит от связи которую вы можете создать между фрагментами информации, а не от самого фрагмента информации.