Читаем Понимание SQL онлайн бесплатно


Понимание SQL

Данная книга является очень хорошим введением в теорию реляционных БД для пользователей-новичков, а также хорошим началом в освоении SQL, грамотном построение запросов, понимании того как эти запросы работают. Безусловно рекомендуется к прочтению для начинающих пользователей.

Мартин Грубер

Компьютеры и Интернет / Программирование, программы, базы данных / Базы данных / Книги по IT
<p>МАРТИН ГРУБЕР</p><p>Понимание SQL</p>

Перевод Лебедева В.Н.

Под редакцией Булычева В.Н.

МОСКВА, 1993

MARTIN GRUBER

Understanding SQL

<p>Команда SELECT</p>

SELECT * | { [ DISTINCT | ALL] .,..}

FROM {

[ ] }.,..

[ WHERE ]

[ GROUP BY { | }.,..]

[ HAVING ]

[ ORDERBY { | }.,..]

[ { UNION [ALL]

SELECT * | { [DISTINCT | ALL] < value expression >.,..}

FROM {

[]} .,..

[ WHERE

[ GROUP BY { | }.,..]

[ HAVING ]

[ ORDER BY { | }.,..] } ] ...;

Элементы, используемые в команде SELECT

ЭЛЕМЕНТ

ОПРЕДЕЛЕНИЕ

Выражение, которое производит значение. Оно может включать в себя или содержать .

Имя или синоним таблицы или представления

Временный синоним для

, определеный в этой таблице и используемый только в этой команде

Условие , которое может быть верным или неверным для каждой строки или комбинации строк таблицы в предложении FROM.

Имя столбца в таблице.

Число с десятичной точкой. В этом случае, оно показывает в предложении SELECT с помощью идентификации его местоположения в этом предложении.

<p>Команды UPDATE, INSERT, DELETE</p><p>UPDATE</p>

UPDATE

SET { | }.,. .< column name> = [ WHERE

| WHERE CURRENT OF (*только для вложения*) ];

<p>INSERT</p>

INSERT INTO < table name> [( .,. ]

{ VALUES ( .,.. ) } | ;

<p>DELETE</p>

DELETE FROM

[ WHERE

| WHERE CURRENT OF (*только для вложения*) ];

Элементы, используемые в командах МОДИФИКАЦИИ

ЭЛЕМЕНТ

ОПРЕДЕЛЕНИЕ

Имя курсора используемого в этой программе.

Допустимая команда SELECT.

Для других элементов смотри команду SELECT.

Символы Используемые в Синтаксисе Предлжения

СИМВОЛ

ОБЪЯСНЕНИЕ

|

Любой предшествующий знаку (|) символ может быть произвольно

заменен на любой следующий за (|). Это — символический способ высказывания "или" ("or").

{ }

Все, что включено в фигурные скобки обрабатывается как модуль с целью оценки |, .,.. или других символов.

[ ]

Все,включенное в квадратные скобки является необязательным

...

Любое, предшествующее этому, может повторяться любое число раз.

.,..

Любое, предшествующее этому, и в каждом случае отделенное

запятыми, может повторяться любое число раз.

<p>Команда CREATE TABLE</p>

CREATE TABLE

( { | ]

[ ...]} .,.. );

[] .,.. );

Элементы, используемые в команде CREATE TABLE

ЭЛЕМЕНТ

ОПРЕДЕЛЕНИЕ

Имя таблицы создаваемой этой командой.

Имя столбца таблицы.

Тип данных

Тип данных, который может содержаться в столбце.

Может быть любым из следующих:

INTEGER (ЦЕЛОЕ ЧИСЛО),

CHARACTER (СИМВОЛЬНОЕ),

DECIMAL (ДЕСЯТИЧНОЕ),

NUMERIC (ЧИСЛОВОЕ),

SMALLINT (НАИМЕНЬШЕЕ)

FLOAT (С ПЛАВАЮЩЕЙ ТОЧКОЙ)

REAL (РЕАЛЬНОЕ),

DOUBLE PRECISION (УДВОЕННАЯ ТОЧНОСТЬ С ПЛАВАЮЩЕЙ ТОЧКОЙ),

LONG * (ДЛИННОЕ *),

VARCHAR * (ПЕРЕМЕННОЕ СИМВОЛЬНОЕ *),

DATE * (ДАТА *),

TIME * (ВРЕМЯ *)

(* — указывает на нестандартный для SQL тип данных)

Размер. Его значение зависит от .

Может быть любым из следующих:

NOT NULL (НЕ НУЛЕВОЙ),

UNIQUE (УНИКАЛЬНЫЙ),

PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ),

CHECK() (ПРОВЕРКА предиката),

DEFAULT = (ПО УМОЛЧАНИЮ = значимому выражению)

REFERENCES

[( .,.. )] (ССЫЛКА НА имя таблицы [(имя столбца) ] )

Может быть любым из следующих:

UNIQUE (УНИКАЛЬНЫЙ),

PRIMARY KEY (ПЕРВИЧНЫЙ КЛЮЧ),

CHECK (ПРОВЕРКА предиката )

FOREIGN KEY() (ВНЕШНИЙ КЛЮЧ)

REFERENCES

[( .,.. )] (ССЫЛКА НА имя таблицы [( имя столбца) ].

<p>ПРЕДИСЛОВИЕ</p>

"ПОНИМАНИЕ SQL" - это полный учебник по программированию на Структурированном Языке Запросов, написанный специально для тех, кто будет использовать SQL в процессе работы. Даже если это ваш первый опыт с компьютерами или управлением базами данных, книга "ПОНИМАНИЕ SQL" очень быстро научит вас свободно работать с реальной SQL, использованию простых запросов, а также снабдит вас ясными понятиями об автоматизированном управлении базой данных. Книга даст вам краткое, удобное в чтении введение в реляционные базы данных. Предоставит вам обучающие программы, чтобы, овладевая командами SQL шаг за шагом, помочь вам узнать, как извлекать и обрабатывать информацию, содержащуюся в таблицах данных, т.е.:

* выбирать информацию, с которой вы хотите работать

* добавлять, удалять, и модифицировать информацию в таблице данных

* использовать и-или, верно/неверно и другие условия для обнуления определенной информации

* использовать специальные функции SQL для суммирования ваших данных.

Книга покажет Вам, как эффективно работать с многочислеными таблицами данных, используя улучшеную технику для запроса более чем одной таблицы одновременно, строить комплекс запросов и подзапросов, и использовать представления, чтобы создавать базы данных и работать с базами данных раздельно с многими таблицами.

Научит создавать новые таблицы данных для пользовательских деловых прикладных программ. Вы исследуете принципы эффективного проектирования базы данных, а также техники для обеспечения целостности данных и их защиты.

Вы узнаете, как использовать SQL с другими языками в специальной главе SQL для программистов.

"ПОНИМАНИЕ SQL" - необходима и пригодна для любой реализации Структурированного Языка Запроса. Книга включает и краткий справочный стандарт SQL и руководство к общим нестандартным особенностям SQL.

Об Авторе

Мартин Грубер - свободный писатель, учитель и консультант из Сан-Франциско.

В дополнении к написанию и редактированию книг, руководств пользователей и документации, он работает в широком спектре интересов, связанных с компьютерами и компьютерными базами данных.

<p>Глава 1. ВВЕДЕНИЕ В РЕЛЯЦИОННУЮ БАЗУ ДАННЫХ</p>

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

То что вы получили является основой реляционной базы данных как и было определено в начале этого обсуждения - а именно, двумерной (строка и столбец ) таблицей информации. Однако, реляционные базы данных редко состоят из одной таблицы. Такая таблица меньше чем файловая система. Создав несколько таблиц взаимосвязанной информации, вы сможете выполнить более сложные и мощные операции с вашими данными. Мощность базы данных зависит от связи которую вы можете создать между фрагментами информации, а не от самого фрагмента информации.

СВЯЗЫВАНИЕ ОДНОЙ ТАБЛИЦЫ С ДРУГОЙ

Позвольте нам использовать пример нашей адресной книги чтобы начать обсуждение базы данных которая может реально использоваться в деловой ситуации. Предположим, что персонажи в нашей первой таблице (адресной книги ) - это пациенты больницы. В другой таблице, мы могли бы запомнить дополнительную информацию об этих пациентах. Столбцы второй таблицы могли бы быть помечены как Пациент, Доктор, Страховка, и Балланс.

Пациент

Доктор

Страховка

Балланс

Farish

Drume

B.C./B.S.

$272.99

Grillet

Halben

None

$44. 76

Brock

Halben

Health,Inc.

$9077.47

Много мощных функций можно выполнить извлекая информацию из этих таблиц согласно указанным параметрам, особенно когда эти параметры включают в себя фрагменты информации свзанные в различных таблицах друг с другом. Например, возьмем - докторов. Предположим доктор Halben захотел получить номера телефонов всех своих пациентов. Чтобы извлечь эту информацию, он мог бы связать таблицу с номерами телефонов пациентов (по адресной книге ) с таблицей которая бы указывала, какой из пациентов - его. Хотя, в этом простом примере, он мог бы держать это в голове и сразу получать номера телефонов пациентов Grillet и Brock, эти таблицы могут быть слишком большими и слишком сложными. Программы реляционной базы данных разрабатывались для того чтобы обрабатывать большие и сложные совокупности данных такого типа, что очевидно является более универсальным методом в деловом мире. Даже если бы база данных больницы содержала сотни или тысячи имен - как это вероятно и бывает на практике - одна команда SQL могла бы выдать доктору Halben информацию в которой он нуждался почти немедленно.

ПОРЯДОК СТРОК ПРОИЗВОЛЕН

Чтобы поддерживать максимальную гибкость, строки таблицы, по определению, не должны находиться ни в каком определенном порядке. С этой точки зрения, в этом структура базы данных отличается от нашей адресной книги. Вход в адресную книгу обычно упорядочивается в алфавитном порядке. В системах с реляционной базой данных, имеется одна мощная возможность для пользоватей - это способность упорядочивать информацию так чтобы они могли восстанавливать ее.

Рассмотрим вторую таблицу. Иногда Вам необходимо видеть эту информацию упорядоченной в алфавитном порядке по именам, иногда в возрастающем или убывающем порядке, а иногда сгруппированной по отношению к какому-нибудь доктору. Наложение порядка набора в строках будет сталкиваться со способностью заказчика изменять его, поэтому строки всегда рассматриваются как неупорядоченные. По этой причине, вы не можете просто сказать:" Мы хотим посмотреть пятую строку таблицы. " Пренебрегая порядком в котором данные вводились или любым другим критерием, мы определим, не ту строку, хотя она и будет пятой. Строки таблицы которые рассматриваются, не будут в какой-либо определенной последовательности.

ИДЕНТИФИКАЦИЯ СТРОК (ПЕРВИЧНЫЕ КЛЮЧИ )

По этим и другим причинам, вы должны иметь столбец в вашей таблице который бы уникально идентифицировал каждую строку. Обычно, этот столбец содержит номер - например, номер пациента назначаемый каждому пациенту. Конечно, вы могли бы использовать имя пациентов, но возможно что имеется несколько Mary Smiths; и в этом случае, вы не будете иметь другого способа чтобы отличить этих пациентов друг от друга.

Похожие книги