1-й час
Добро пожаловать в мир SQL

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

Основными на этом уроке будут следующие темы.

• Введение в SQL и краткая история SQL

• Введение в системы управления базами данных

• Обзор основных терминов и понятий

• Обзор базы данных, используемой в данной книге

  Определение и история SQL

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

Современная волна информационных технологий управления основывается на использовании систем управления реляционными базами данных (СУРБД), которые являются развитием традиционных СУБД. Реляционные базы данных и технологии клиент/сервер являются типичной комбинацией, позволяющей современным компаниям успешно обрабатывать данные и оставаться конкурентоспособными в своих секторах рынка. В следующих разделах мы обсудим реляционные базы данных и технологию клиент/сервер подробнее, чтобы предоставить вам более прочную основу для использования стандартного языка реляционных баз данных — SQL.

  Что такое SQL?

SQL — язык структурированных запросов — является стандартным языком управления реляционными базами данных. Его прототип был разработан фирмой IBM на основе идей, изложенных в статье д-ра Кодда (Е. F. Codd) "Реляционная модель данных для больших банков данных общего пользования". Немногим позже появления прототипа IBM, в 1979 году, на рынке появился первый продукт SQL под названием ORACLE, который был выпущен компанией Relational Software, Incorporated (впоследствии переименованной в Oracle Corporation). Сегодня эта компания является одним из выдающихся лидеров в области реализации технологий реляционных баз данных. SQL можно произносить либо по буквам — S-Q-L, либо как "сиквэл" (sequel) — оба произношения приемлемы.

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

  Что такое ANSI SQL?

Американский национальный институт стандартов (ANSI) представляет собой организацию, которая устанавливает и внедряет стандарты в самых разных отраслях производства. SQL, ставший фактически стандартным языком в области управления базами данных, сначала был утвержден таковым в 1986 году на основе реализации IBM. В 1987 году стандарт ANSI SQL был принят в качестве международного стандарта Международной организацией стандартов (ISO). Этот стандарт был вновь пересмотрен в 1992 году и получил название SQL/92. Самый новый на сегодня стандарт называется SQL3 и иногда на него ссылаются как на SQL/99.

  Новый стандарт: SQL3

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

• Часть 1 — SQL/Структура (SQL/Framework) — определяет общие требования соответствия и фундаментальные понятия SQL.

• Часть 2 — SQL/Основы (SQL/Foundation) — определяет синтаксис и операции SQL.

• Часть 3 — SQL/Интерфейс вызовов (SQL/Call-Level Interface) — определяет интерфейс программного взаимодействия приложений с SQL.

• Часть 4 — SQL/'Встроенные модули (SQL/Persistent Stored Modules) — определяет управляющие структуры, лежащие в основе SQL-программ. Часть 4 определяет и модули, содержащие SQL-программы.

• Часть 5 — SQL/Языковая привязка к серверу (SQL/Host Language Bindings) — определяет возможности встраивания операторов SQL в приложения, созданные на основе стандартных языков программирования.

Этот новый стандарт ANSI (SQL3) позволяет использовать два минимальных уровня взаимодействия, которые может объявить СУБД — это поддержка ядра SQL (Core SQL Support) и поддержка расширенного SQL (Enhanced SQL Support).

ANSI расшифровывается как American National Standards Institute (Американский Национальный институт стандартов). Этот институт представляет собой организацию, ответственную за внедрение стандартов на самые разные продукты и концепции.

Каждый новый стандарт несет в себе не только множество преимуществ, но и некоторые неудобства. Прежде всего, стандарт направляет производителей по определенному руслу развития — в случае SQL, — обеспечивая базовый каркас из основных понятий, что в конце концов обеспечивает согласованность между различными реализациями и лучшую переносимость (не только для программ управления базами данных, но и для баз данных в целом, а также для тех людей, кто управляет базами данных).

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

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

Реализация SQL — это SQL-продукт конкретного производителя.

  Что такое база данных?

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

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

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


Рис. 1.1. База данных

  Реляционные базы данных

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


Рис. 1.2. Реляционная база данных

Итак, таблицы в реляционной базе данных оказываются связанными, что позволяет извлечь только нужные данные с помощью одного запроса (хотя при этом сами требуемые данные могут извлекаться из нескольких таблиц). Вследствие наличия у таблиц общих ключей или, иначе, ключевых полей, оказывается возможным объединить данные из нескольких таблиц в одно результирующее множество. По мере углубления в материал данной книги, вы обнаружите и другие преимущества реляционных баз данных, среди которых будут и ускорение работы с данными, и более быстрый доступ к ним.

Реляционная база данных — это база данных, состоящая из связанных объектов, главным образом таблиц. Таблицы являются основной формой хранения данных в базе данных.

  Технология клиент/сервер

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

В системе клиент/сервер главный компьютер, называемый сервером, обычно доступен через сеть, как правило, это локальная сеть (LAN — Local area network) или глобальная сеть (WAN — Wide area network). Доступ к такому серверу теперь обеспечивается не посредством "тупых" терминалов, а персональных компьютеров (ПК) или других серверов. В этом случае персональный компьютер называется клиентом и должен иметь доступ к сети, чтобы между клиентом и сервером имелась возможность обмена данными. Главное различие между системой клиент/сервер и системой, основанной на использовании мэйнфрейма, заключается в том, что пользователь ПК в системе клиент/сервер может использовать вычислительные возможности своего собственного компьютера для обработки данных и выполнения других процессов непосредственно в памяти своего компьютера, но в то же время и сервер оказывается всегда доступным для пользователя через сеть. На сегодня в большинстве случаев система клиент/сервер удовлетворяет всем требованиям современного бизнеса, оказывается более гибкой и в конце концов более предпочтительной.

Реляционные базы данных размещаются как на мэйнфреймах, так и на платформах клиент/сервер. Хотя система клиент/сервер и более предпочтительна, для многих компаний по различным причинам оказывается все еще оправданным использование мэйнфреймов. Но достаточно высок процент тех компаний, которые в последнее время оставили свои мэйнфреймы в прошлом и перевели все свои данные на платформу клиент/сервер, чтобы не остаться в стороне от современных технологий, обеспечить себе и своему бизнесу большую гибкость, а своим системам — независимость от проблемы 2000 года.


Рис. 1.3. Модель клиент/сервер

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

  Популярные производители систем управления базами данных

Среди доминирующих производителей систем управления базами данных следует назвать Oracle, Microsoft, Informix, Sybase и IBM. И хотя в мире существует их значительно больше, именно представленные здесь имена вы чаще всего встречаете в книгах, газетах, журналах и в World Wide Web.

  Различия между реализациями

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

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

  Сеанс SQL

Сеанс SQL — это период взаимодействия пользователя с реляционной базой данных посредством использования команд SQL. Начинается сеанс с момента подключения пользователя к базе данных. В рамках сеанса пользователь имеет возможность вводить допустимые команды SQL для осуществления запросов, управления данными, создания новых структур базы данных (например, таблиц).

  Команда CONNECT

Сеанс SQL начинается в момент подключения пользователя к базе данных. Для этого используется команда CONNECT. С помощью команды CONNECT можно либо осуществлять подключения к базе данных, либо менять характер уже установленных подключений. Например, подключившись к базе данных под именем USER1, вы можете затем использовать команду CONNECT, чтобы подключиться к той же базе данных под именем USER2. При этом неявно прекращается сеанс SQL для пользователя  USER1. 

CONNECT user@database

При попытке подключиться к базе данных вы автоматически получите запрос на введение пароля, соответствующего введенному вами имени пользователя.

  Команда DISCONNECT

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

DISCONNECT

  Типы команд SQL

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

Такими категориями являются:

• DDL (Data Definition Language — язык определения данных);

• DML (Data Manipulation Language — язык манипуляций данными);

• DQL (Data Query Language — язык запросов к данным);

• DCL (Data Control Language — язык управления данными);

• команды администрирования данных;

• команды управления транзакциями.

  Определение структур базы данных (DDL)

Язык определения данных (DDL) является частью SQL, дающей пользователю возможность создавать различные объекты базы данных и переопределять их структуру, например, создавать или удалять таблицы.

Среди основных команд DDL, которые мы предполагаем с вами обсудить в дальнейшем, будут следующие команды.

CREATE TABLE 

ALTER TABLE 

DROP TABLE 

CREATE INDEX 

ALTER INDEX 

DROP INDEX

Эти команды будут подробно обсуждаться в ходе урока 3, "Управление объектами базы данных", и урока 17, "Повышение эффективности работы с базой данных".

  Манипуляция данными (DML)

Язык манипуляций данными (DML) является частью SQL, дающей пользователю возможность манипулировать данными внутри объектов реляционной базы данных.

Вот три основные команды DML:

INSERT 

UPDATE 

DELETE

Эти команды будут обсуждаться подробно в ходе урока 5, "Манипуляция данными".

  Отбор данных (DQL)

Хотя этот раздел языка представлен только одной командой, для пользователя реляционной базы данных язык запросов к данным (DQL) является самой главной частью SQL. Этой командой является команда

SELECT

Эта команда, имеющая множество опций и необязательных параметров, используется для построения запросов к реляционным базам данных. С ее помощью можно конструировать запросы любой сложности — от самых общих до очень специальных и от самых простых до невероятно сложных. Команда SELECT будет подробно обсуждаться в ходе уроков 7—16.

Запрос — это требование на получение информации из базы данных.

  Язык управления данными (DCL)

Команды управления данными в SQL позволяют осуществлять контроль над возможностью доступа к данным внутри базы данных. Команды DCL обычно используются для создания объектов, относящихся к управлению доступом пользователей к базе данных, а также для назначения пользователям подходящих уровней привилегий доступа. Вот некоторые из команд управления данными:

ALTER PASSWORD

GRANT

REVOKE

CREATE SYNONYM

Эти команды часто используются вместе с другими командами и поэтому будут появляться во многих последующих главах книги.

  Команды администрирования данных

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

START AUDIT 

STOP AUDIT

He путайте администрирование данных с администрированием всей базы данных. Администрирование базы данных — это осуществление общего управления базой данных, предполагающее возможность использования команд любого уровня.

  Команды управления транзакциями

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

• Команда COMMIT используется для того, чтобы сохранить транзакции.

• Команда ROLLBACK используется для того, чтобы отменить транзакции.

• Команда SAVEPOINT создает точки внутри групп транзакций, к которым отсылает команда ROLLBACK.

• Команда SET TRANSACTION позволяет назначить транзакции имя.

Команды управления транзакциями будут подробно обсуждаться в ходе урока 6. "Управление транзакциями".

  Описание базы данных, используемой в данной книге

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

  Схема таблиц, используемых в книге

На рис. 1.4 показаны отношения между таблицами, используемыми в этой книге для примеров, вопросов для проверки и упражнений. Каждая из таблиц имеет скос имя, точно так же свои имена назначены в таблицах каждому из полей. Линии, связывающие таблицы, указывают на связи таблиц посредством общего поля, которое в большинстве случаев называется ключевым полем (последние обсуждаются в ходе урока 3, "Управление объектами базы данных").

  Стандарты назначения имен таблицам

Стандарты назначения имен таблицам, как и любые стандарты в бизнесе вообще, очень важны с точки зрения осуществления контроля. Проанализировав таблицы и данные из предыдущих разделов, вы, наверное, заметили, что все имена таблиц имели суффикс _TBL. Наличие такого суффикса в именах таблиц принято за стандарт. В этом случае _TBL просто говорит о том, что соответствующий объект является таблицей — ведь в базе данных может содержаться и множество других объектов. Например, вы увидите, что суффикс _IDX используется для индексов таблиц. Стандарты назначения имен вводятся почти исключительно в целях упрощения общей организации и Оказываются очень полезными в деле администрирования любой реляционной базы данных. Вместе с тем, использование суффиксов при назначении имен объектам базы дйнных не является строго обязательным.

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


Рис. 1.4. Связи между таблицами, используемыми в этой книге

  Обзор данных

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

EMPLOYEE_TBL

EMP_ID

LAST NAM

FIRST NAM

ADDRESS

CITY

ST

ZIP

PHONE

311549902 442346889 213764555 313782439 220984332 443679012

STEPHENS PLEW GLASS GLASS WALLACE SPURGEON

TINA LINDA BRANDON JACOB MARIAH TIFFANY

D RR 3 BOX 17A С 3301 BEACON S 1710 MAIN ST 3789 RIVER BLVD 7789 KEYSTONE 5 GEORGE COURT

GREENWOOD INDIANAPOLIS WHITELAND INDIANAPOLIS INDIANAPOLIS INDIANAPOLIS

IN IN IN IN IN IN

47890 46224 47885 45734 46741 46234

3178784465 3172978990 3178984321 3175457676 3173325986 3175679007

EMPLOYEE PAY TBL

EMP_ID

POSITION

DATE HIRE

PAY RATE

DATE_LAST

SALARY

BONUS

311549902 442346889 213764555 313782439 220984332 443679012

MARKETING TEAM LEADER SALES MANAGER SALESMAN SHIPPER SHIPPER

23-MAY-89 17-JUN-90 14-AUG-94 28-JUN-97 22-JUL-96 14- JAN-91

14.75

11 15

Ol-MAY-99 Ol-JON-99 Ol-AUG-99

Ol-JUL-99 Ol-JAN-99

40000

30000 20000

2000 1000

CUSTOMERJTBL

ORDERS TBL

CUST ]

CD CUST_NAME

ADDRESS

CUST_CITY

ST

ZIP CUST_PHONE CUST FAX

232 109

345 090 12 432 333

21

43

287 288 590

610 560 221

LESLIE GLEASON NANCY BUNKER

ANGELA DOBKO WENDY WOLF MARYS GIFT SHOP SCOTTYS MARKET JASONS AND DALLAS GOODIES MORGAN CANDIES AND TREATS SCHYLERS NOVELTIES GAVINS PLACE HOLLYS GAMEARAM HEALTHERS FEATHERS AND THINGS RAGANS HOBBIES ANDYS CANDIES RYANS STUFF

798 HARDAWAY DR APT A 4556 WATERWAY RR3 BOX 76 3345 GATEWAY DR 435MAIN ST RR2 BOX 17 LAFAYETTE SQ MALL

5657 W TENTH ST 17 MAPLE ST

9880 ROCKVILLE RD 567 US 31 4090 N SHADELAND AVE

451 GREEN RR 1 BOX 34 2337 S SHELBY ST

INDIANAPOLIS BROAD RIPPLE

LEBANON INDIANAPOLIS DANVILLE BROWNSBURG INDIANAPOLIS

INDIANAPOLIS LEBANON

INDIANAPOLIS WHITELAND INDIANAPOLIS

PLAINFIELD NASHVILLE INDIANAPOLIS

IN IN

IN IN IL IN IN

IN IN

IN IN IN

IN IN IN

47856 3175457690 46950 3174262323

49967 7658970090 46224 3172913421 47978 3178567221 3178523434 45687 3178529835 3178529836 47856 3172978886 3172978887

46950 3172714398 49967 3174346758

46224 3172719991 3172719992 47978 3178879023 47856 3175456768

46950 3178393441 3178399090 49967 8123239871 46224 3175634402

ORD NUM

CUST_ID

PROD_ID

QTY

ORD DATE

56A901 56A917 32A132 16C17 18D778 23E934

232

12 43 090 287 432

11235 87 222 222 90 13

1 100 25 2 10 20

22-OCT-99 30-SEP-99 10-OCT-99 17-OCT-99 17-OCT-99 15-OCT-99

PRODUCTS_TBL

PROD_ID

PROD_DESC

COST

11235 

222 

13 

90 

15 

87 

119 

1234 

2345

КОСТЮМ ВЕДЬМЫ 

ПЛАСТИКОВЫЕ ТЫКВЫ 

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 

ФОНАРИ 

КОСТЮМЫ В АССОРТИМЕНТЕ 

СЛАДКАЯ КУКУРУЗА 

ТЫКВЕННЫЕ КОНФЕТЫ 

ПЛАСТИКОВЫЕ ПАУКИ 

МАСКИ В АССОРТИМЕНТЕ 

ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 

ПОЛОЧКА ИЗ ДУБА

29.99

7.75 

1.10

14.50 

10.00 

1.35 

1.45 

1.05 

4.95 

5.95

59.99


  Из чего состоят таблицы

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

  Поле

Всякая таблица делится на меньшие элементы, называемые полями. Полями В Таблице PRODUCTSJTBL ЯВЛЯЮТСЯ PROD_ID, PROD_DESC И COST. Эти поля распределяют хранимую в таблице информацию по категориям. Поле — это столбец в таблице, предназначенный для хранения определенной специфической информации о каждой записи в таблице.

  Запись или строка данных

Записью, а также строкой данных, называют строки таблиц. Например, в приведенной выше таблице PRODUCTSJTBL первой будет следующая запись:

11235 КОСТЮМ ВЕДЬМЫ 29.99

Ясно, что в данном случае запись состоит из кода товара, описания товара и цены за его единицу. Для каждого из товаров предполагается наличие в таблице PRODUCTS_TBL отдельной записи. Запись представляет собой целую строку таблицы.

Строка данных — это отдельная запись в таблице реляционной базы данных.

  Столбец

Столбец — это колонка таблицы, содержащая все данные, относящиеся к заданному полю таблицы. Например, столбец таблицы PRODUCTS_TBL, соответствующий описанию товара, содержит следующие данные:

КОСТЮМ ВЕДЬМЫ

ПЛАСТИКОВЫЕ ТЫКВЫ

ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ

ФОНАРИ

КОСТЮМЫ В АССОРТИМЕНТЕ

СЛАДКАЯ КУКУРУЗА

ТЫКВЕННЫЕ КОНФЕТЫ

ПЛАСТИКОВЫЕ ПАУКИ

МАСКИ В АССОРТИМЕНТЕ

ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ

ПОЛОЧКА ИЗ ДУБА

Этот столбец соответствует полю PROD_DESC, в котором хранятся описания товаров. Столбец выделяет информацию об определенном поле из каждой записи в таблице.

  Ключевое поле

Ключевое поле (primary key) — это столбец, данные в котором однозначно идентифицируют каждую строку данных в таблице реляционной базы данных. Ключевым полем в таблице PROD_TBL является PROD_ID, которое обычно за-

полняется уже в процессе создания таблицы. Задачей ключевого поля является обеспечение уникальности кода каждого из товаров, и в таблице PROD_TBL каждая запись имеет свой отличный от других PROD_ID. Наличие ключевых полей сокращает возможности для ввода в таблицу дубликатов записей. Имеются и другие возможности для применения ключевых полей, о чем вы узнаете из урока 3.

  Значение NULL

NULL используется для обозначения отсутствия значения. При наличии значения NULL в поле, это поле выглядит как пустое. Поле со значением NULL является полем, которое не имеет значения. Очень важно понять, что значение NULL отличается от нулевого значения и от поля, содержащего только пробелы. Поля со значением NULL — это те поля, которые остаются пустыми при создании записи. Обратите внимание, что в таблице EMPLOYEE__TBL не каждый из служащих имеет второй инициал. На соответствующем месте для служащих, которые не имеют второго инициала, стоит именно значение NULL.

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

  Резюме

Вы прочитали введение в стандартный язык SQL и ознакомились с краткой историей и эволюцией его стандарта за последние несколько лет. Обсуждались также системы баз данных и современные технологии, основанные на использовании реляционных баз данных и систем клиент/сервер, — обе они исключительно важны для понимания SQL. Речь шла и о главных компонентах SQL и о том, что на рынке реляционных баз данных конкурирует достаточно много производителей, вследствие чего имеется целый ряд различных вариаций SQL. Но, несмотря на все вариации, большинство производителей в известной степени придерживаются текущего стандарта ANSI SQL, тем самым обеспечивая кросс-платформенную совместимость и стимулируя создание переносимых SQL-приложений.

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

  Вопросы и ответы

Изучив SQL, смогу ли я воспользоваться любой из реализаций SQL, если это потребуется?

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

В рамках технологии клиент/сервер персональный компьютер является клиентом или сервером?

Персональный компьютер, как правило, является клиентом, но и сервер может выступать в качестве клиента.

Должен ли я обязательно использовать суффикс _твь для каждой из создаваемых таблиц?

Определенно нет. Суффикс _TBL выбран в качестве стандарта для того, чтобы легче было распознавать таблицы в базе данных. Таким образом, можно вместо TBL использовать TABLE или вообще отказаться от использования суффикса. Например, таблицу EMPLOYEE_TBL МОЖНО было бы назвать просто EMPLOYEE.

Что будет, если при вводе новой записи в таблицу я не введу, например, номер телефона нового служащего, а в столбце для номера телефона стоит NOT NULL?

В этом случае имеется два варианта. Поскольку для столбца предусмотрено значение NOT NULL (и значит, обязательно что-нибудь должно быть введено) и поскольку у вас нет нужной информации, вы можете отложить ввод всей записи до тех пор, пока не получите нужный номер телефона. Другой возможностью является изменение значения NOT NULL в столбце на NULL, что позволит обновить запись позже, когда нужная информация станет доступной. Можно также ввести какое-нибудь стандартное замещающее значение, например, 1111111111, которое можно будет изменить после того, как будет получена правильная информация. Изменение определения столбцов будет обсуждаться в ходе урока 3.

  Практикум

Задания практических занятий разделены на тесты и упражнения. Тесты предназначены для проверки общего уровня понимания рассмотренного материала. Упражнения дают возможность применить на практике идеи, обсуждавшиеся в ходе текущего урока, в комбинации с идеями из предыдущих уроков. Мы-рекомендуем ответить на тестовые вопросы и выполнить упражнения прежде, чем продолжать дальнейшее чтение книги. Ответы можно проверить по Приложению Б, "Ответы".

  Тесты

1. Что означает аббревиатура SQL?

2. На какие шесть категорий разделяются команды SQL?

3. Какие четыре команды являются командами управления транзакциями?

4. Каковы главные отличия технологии клиент/сервер от технологии, использующей мэйнфрейм?

5. Если поле определено как NULL, значит ли это, что в это поле обязательно должно быть что-нибудь введено?

  Упражнения

1. Идентифицируйте категории, к которым относятся следующие команды SQL:

CREATE TABLE

DELETE

SELECT

INSERT

ALTER TABLE

UPDATE