Язык запросов SQL

         

Язык запросов SQL

Добро пожаловать в область разработки баз данных, выполняемой с помощью стандартного языка запросов SQL. В системах управления базами данных (СУБД) имеется много инструментов, работающих на самых разных аппаратных платформах. Различия между этими инструментами могут быть очень существенными, но все они имеют одну общую черту — доступ к данным и их обработка выполняются с помощью SQL. Зная SQL, вы можете создавать реляционные базы данных и получать из них полезную информацию.
Системы управления базами данных играют жизненно важную роль во многих организациях. Люди часто думают, что создание и поддержание этих систем — очень сложное занятие, удел "жрецов" баз данных, которым открыта истина, недоступная простым смертным. Эта книга напрочь отметает мистику, связанную с базами данных.
Цель книги состоит в том, чтобы научить вас создавать реляционные базы данных и извлекать из них ценную информацию с помощью SQL — международного стандартного языка, используемого во всем мире для создания и поддержки реляционных баз данных. В пятом издании книги рассказывается о последней версии этого языка, SQL:2003.
В книге речь идет не о том, как проектировать базу данных, поскольку на эту тему написано много хороших книг. Предполагается, что уже существует подходящий проект базы. Здесь будет показано, как реализовать этот проект с помощью SQL. Если же у вас есть подозрение, что имеющийся проект не очень хорош, то исправьте его во что бы то ни стало, пока еще не начали создавать саму базу данных. Чем раньше вы обнаружите и исправите недостатки разработанного проекта, тем дешевле вам обойдутся те исправления, которые все-таки придется делать.
Если вам надо хранить данные в СУБД или получать их оттуда, то практическое знание SQL поможет вам делать свою работу намного лучше. Чтобы использовать SQL, не нужно быть программистом и знать программные языки, такие как COBOL, С или Basic. Синтаксис языка SQL основан на упрощенном синтаксисе английского.
А если вы все-таки программист, то сможете использовать SQL в своих программах. С его помощью у обычных языков программирования появляется мощный аппарат обработки данных. В настоящей книге рассказывается, что именно нужно знать, чтобы реализовать в своих программах богатый набор возможностей, предоставляемых SQL.

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

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

Основы SQL
Что такое SQL Заблуждения, связанные с SQL Взгляд на разные стандарты SQL Знакомство со стандартными командами и зарезервированными словами SQL Представление чисел, символов, дат, времени и других типов данных Неопределенные значения и ограничения Использование SQL в системе клиент/сервер SQL в сети

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

Создание и поддержка простой базы данных
В течение своей истории компьютерные технологии менялись так быстро, что в череде их технологических "поколений" иногда нетрудно и запутаться. Вначале для работы с большими базами данных использовались языки высокого уровня, так называемые языки третьего поколения — FORTRAN, COBOL, Basic, Pascal и С. Затем вошли в употребление языки, специально предназначенные для использования с базами данных, например dBASE, Paradox и R:BASE. (А к какому поколению отнести эти языки?

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

Манипуляции данными из базы
Работа с данными Получение из таблицы нужных данных Вывод информации, выбранной из одной или множества таблиц Обновление информации, находящейся в таблицах и представлениях Добавление новой строки в таблицу Изменение всех или только некоторых данных, находящихся в строке таблицы Удаление строки таблицы

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

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

Пристрелка к нужным данным
У системы управления базой данных есть две главные обязанности: хранение данных и обеспечение к ним легкого доступа. В хранении данных нет ничего особенного, ту же работу может выполнять и шкаф. А что действительно трудно — так это обеспечить удобный доступ к данным. Для этого необходимо иметь возможность выловить небольшое количество нужных данных из океана ненужных.

Реляционные операторы
SQL — это язык запросов, используемый в реляционных базах данных. Почти во всех примерах предыдущих глав рассматривались простые базы данных с одной таблицей. Теперь настало время показать, в чем же состоит реляционность реляционной базы. Вообще говоря, эти базы называются "реляционными" потому, что состоят из множества связанных друг с другом таблиц (а "связанные друг с другом" — это по-английски "related").

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

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

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

Защита данных
Каждый слышал о законе Мерфи, который формулируется обычно так: "Если какая-нибудь неприятность может случиться, она случается". Большую времени дела идут хорошо, и мы потешаемся над этим псевдозаконом. Временами нам даже кажется, что мы из тех немногих счастливчиков, над кем не властен один из основных законов мироздания. Даже если неприятности все-таки происходят, то мы обычно легко с ними справляемся.

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

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

SQL 2003 и XML
Одной из самых существенных новых функциональных возможностей языка SQL:2003 является поддержка файлов XML (extensible Markup Language — расширяемый язык разметки), которые все больше становятся универсальным стандартом обмена данными между разнородными платформами. Для XML не имеет значения, с какой средой приложения, операционной системой или аппаратным обеспечением работает пользователь, которому предоставляются данные.

Unix Man (Справочное руководство)

Подробное описание команд операционной системы Unix. Все материалы представлены в алфавитном порядке.

A.OUT(5)
Функция abort работает так же, как системный вызов , но вместо просто выхода (завершения процесса) abort посылает сигнал SIGABRT (6) вызывающему процессу. Если сигнал SIGABRT не перехватывается и не игнорируется, то прежде, чем он будет послан, выталкиваются все буфера, связанные со стандартным пакетом ввода/вывода , и порождается файл с образом памяти.

BACKUP(1)
Команда backup копирует все файлы, измененные после определенной даты в date параметра filesystem. Параметр key задает дату и другие опции резервной копии backup и состоит из символов следующего множества 0123456789kfusd. Значения этих символов описаны ниже:

HYPOT(3M)
Если к переполнению приводит попытка представления корректного результирующего значения, то функция hypot возвращает значение HUGE [см. ], а внешней переменной errno присваивается значение ERANGE. Изложенная процедура обработки ошибок может быть изменена посредством функции

CURSES(3X)
Забыть информацию о том, какие части окна изменились (эта информация используется для оптимизации вывода). Считать, что все окно требует перерисовки. Это часто бывает необходимо для пересекающихся окон, так как изменение одних окон вызывает изменение и других, но информация об этих изменениях в структурах данных других окон не отражается. Обращение к touchline говорит о том, что изменилось count строк окна, начиная со строки с номером start.

DAEMON.MN(7)
При вызове демон создает много копий самого себя, по одной копии для каждой последовательной строки, используемой в сети. Каждая копия открывает последовательную строку, создает начальное сообщение для файла LOG и ждет ответа от демона на другом конце. Начальное сообщение выдает имена устройств, которые следует подсоединить, последовательную строку, которую надо использовать, и текущую дату и время. Если демон получает правильный ответ, он вырабатывает последовательную связь и добавляет к файлу LOG сообщение "первое подтверждение связи завершено". Если ответа нет, то демон безразлично ждет.


ECHO(1)
Команда echo выдает на стандартный вывод свои аргументы, разделяя их пробелами и выдавая в конце символ перевода строки. Кроме того, поддерживаются следующие C-подобные соглашения о задании управляющих символов (не забывайте об особой трактовке shell'ом символа \):

GETPWENT(3C)
При первом вызове функция getpwent возвращает указатель на первую структуру типа passwd в файле; при следующем вызове возвращается указатель на следующую структуру; поэтому последовательные вызовы функции можно использовать для просмотра всего файла. Функция getpwuid ищет с начала файла строку, содержащую заданный идентификатор пользователя uid, и возвращает указатель на структуру, соответствующую искомой строке. Функция getpwnam ищет с начала файла строку, содержащую специфицированное входное имя name и возвращает указатель на соответствующую структуру. В случае неудачного поиска (в том числе из за ошибки чтения) описанные функции возвращают пустой указатель NULL.

GAMMA(3M)
При неотрицательных аргументах функция gamma возвращает значение HUGE [см. ], а внешней переменной errno присваивается значение EDOM. В стандартный протокол будет выдано сообщение о попадании в точку сингулярности. Если представление корректного результирующего значения приводит к переполнению, то функция gamma возвращает значение HUGE, а переменной errno присваивается значение ERANGE.

H2PH(1)
h2ph переводит указанный файл заголовков C в файл заголовков формата Perl. Если аргумент не указан, то файл читается со стандартного ввода и пишется на стандартный вывод.

ID(1)
Команда id выдает на стандартный вывод сообщение, содержащее идентификатор пользователя, идентификатор группы и соответствующие текстовые имена для текущего процесса. Если действующий и реальный идентификаторы различны, выдаются оба.

BESSEL(3M)
Функции j0 и j1 возвращают значения функций Бесселя первого рода, порядка 0 и 1 соответственно, для заданного аргумента x. Функция jn возвращает значение функции Бесселя первого рода, порядка n для заданного аргумента x.
Функции y0 и y1 возвращают значения функций Бесселя второго рода (или, иначе, функций Неймана), порядка 0 и 1, соответственно для заданного аргумента x. Функция yn возвращает значение функции Бесселя второго рода, порядка n для заданного аргумента x. Значение x должно быть положительным.

KBMODE(ADM)
Эта команда может быть использована для определения того, поддерживает ли ваша клавиатура режим AT. Если да, то эта утилита может осуществлять переключение между режимами AT и XT. Если задан аргумент file, то он должен представлять собой tty-устройство одного из экранов, связанных с этой клавиатурой.

L3TOL(3C)
Функция l3tol преобразует список из n трехбайтных целых, упакованных в цепочку символов, в список длинных целых чисел. Указателем на цепочку является аргумент cp, на список длинных целых - lp.
Функция ltol3 осуществляет обратное преобразование из длинных целых (lp) в трехбайтные целые числа (cp). Описанные функции полезны при работе с файловой системой, поскольку номера блоков являются трехбайтными целыми числами.

M4(1)
Макропроцессор m4 предназначен для макрогенерации на предварительном проходе в языках RATFOR, C и других. Все файлы-аргументы обрабатываются по очереди. Если файлы не указаны, или в качестве имени файла задан -, то читается стандартный ввод. Обработанный текст записывается на стандартный вывод.

NAP(3)
Ncheck без аргументов генерирует список полных имен и номеров индексных дескрипторов всех файлов в наборе файловых систем, заданных в /etc/mnttab. К именам файлов каталогов добавляются два символа "/.". Опция -i ограничивает выдачу только теми файлами, номера индексных дескрипторов которых перечисляются вслед за этой опцией. Опция -a разрешает выдачу имен . и .. , которые обычно подавляются. Опция -s ограничивает выдачу только специальными файлами и файлами с режимом проверки права доступа; она предназначается для обнаружения скрытых нарушений системы защиты. Вместо списка файловых систем, используемых по умолчанию, можно задать одну единственную файловую систему filesystem.

OD(1)
Интерпретировать байты как коды ASCII. Некоторые служебные символы выводятся по соглашениям, принятым в языке C: пусто=\0, забой=\b, переход_к_новой странице=\f, перевод_строки=\n, возврат_каретки=\r, табуляция=\t; все остальные выводятся как восьмеричные числа из 3 цифр.
Выдавать 16-разрядные слова в виде десятичных чисел без знака.
Выдавать 16-разрядные слова в восьмеричном виде.
Выдавать 16-разрядные слова в виде десятичных чисел со знаком.
Выдавать 16-разрядные слова в шестнадцатеричном виде.

PACK(1)
Команда pack предпринимает попытку сохранить указанные файлы в сжатой форме, то есть упаковать информацию. Когда только возможно (и имеет смысл), каждый входной файл заменяется упакованным вариантом с именем файл.z, который имеет тот же режим доступа, те же даты доступа и модификации, того же владельца. Опция -f вызывает принудительную упаковку файла. Она используется для того, чтобы упаковать весь каталог, даже если для некоторых файлов это невыгодно. Если команда выполняется успешно, то исходный файл удаляется. Упакованные файлы могут быть преобразованы в свою первоначальную форму с помощью команд или .

QSORT(3C)
Процедура qsort реализует алгоритм быстрой сортировки таблицы данных на своем месте. Аргумент base является указателем на начало таблицы. Nel - число элементов в таблице. Compar - функция сравнения, аргументами которой при вызове служат два указателя на сравниваемые элементы. В соответствии с тем, какое целое число она возвращает: меньшее нуля, равное нулю или большее нуля, первый аргумент считается меньшим, равным или большим по отношению ко второму.

RAMDISK(HW)
Драйвер устройства ramdisk обеспечивает блочный интерфейс к памяти. ramdisk можно использовать как и любое другое блочное устройство, включая установку файловых систем с помощью mkfs(8). Существует восемь типов доступных псевдодисков.
Характеристики файла ramdisk определяются малым числом устройства. Биты этого числа содержат информацию о размере устройства, его долговечности и номере одного из восьми псевдодисков.

SACT(1)
Команда sact выдает информацию о невыполненных командах delta для указанного SCCS-файла. Такая ситуация возникает, если для файла была сделана команда get -e без последующего выполнения delta. Если указано имя каталога, sact обрабатывает все файлы в этом каталоге, начинающиеся с s.; файлы, к которым нет доступа на чтение, игнорируются без дополнительных сообщений. Если указано имя -, происходит чтение со стандартного ввода; каждая строка при этом трактуется как имя SCCS-файла, подлежащего обработке.

STDIPC(3C)
Все средства обмена между процессами требуют от пользователя передачи ключа системным вызовам , и , предоставляющим идентификаторы очередей сообщений. Один из предлагаемых способов формирования ключа - использование описываемой ниже функции ftok. Другой путь составления ключей - поместить идентификатор проекта в старший байт и использовать оставшуюся часть как порядковый номер. Есть много других способов формирования ключей, но для каждой системы необходимо определить стандарт на их формирование. Если стандарт не соблюдается, то возможно, что не связанные между собой процессы будут непреднамеренно конфликтовать. Следует настоятельно рекомендовать помещать в старший байт ключа символ, каким-либо образом идентифицирующий проект; тогда ключи не будут пересекаться в пределах данной системы.

TABS(1)
Посредством команды tabs устанавливают позиции табуляции пользовательского терминала в соответствии с заданной разметкой. Предыдущие установки отменяются. Терминал должен допускать переустановку позиций табуляции.

U3B(1)
Система завершает работу. Все пользовательские процессы терминируются, буфера выталкиваются и корневая файловая система размонтируется. Последующие действия определяются значением аргумента fcn; на разных машинах выполняются разные действия в силу разных аппаратных возможностей. Самым разумным является перезапуск системы путем передачи управления программе загрузки, хранящейся в ПЗУ. A_REBOOT Система немедленно останавливается без каких-либо действий. Как и в предыдущем случае, дальнейшие действия определяются значением аргумента fcn. A_REMOUNT Корневая файловая система вновь монтируется после того, как она была зафиксирована. Это может быть сделано только в процессе загрузки.

VAL(1)
Команда val определяет, является ли указанный файл SCCS-файлом с атрибутами, соответствующими указанным. Опции могут задаваться в любом порядке.
У команды val есть специальный аргумент, -, который приводит к чтению строк со стандартного ввода до тех пор, пока не встретится конец файла. Каждая строка при этом обрабатывается независимо, как командная строка с опциями и аргументами.

W(1)
Команда 'w' печатает суммарную информацию об активности системы, включая данные о том, что делает каждый пользователь. Заглавная строка показывает текущее время дня, длительность работы системы, число пользователей, зарегистрированных в системе. В системах, которые обрабатывают необходимые данные, в заглавной строке также показывается средняя загрузка системы. Средняя загрузка представляет собой число процессов, находящихся в очереди на выполнение от 1,5 до 15 минут.

XARGS(1)
Команда xargs об единяет зафиксированный набор заданных в командной строке начальных_аргументов с аргументами, прочитанными со стандартного ввода, и выполняет указанную команду один или несколько раз. Число аргументов, которые должны быть прочитаны для каждого вызова команды, и способ, которым они об единяются, определяются заданными опциями.

BESSEL(3M)
Функции y0 и y1 возвращают значения функций Бесселя второго рода (или, иначе, функций Неймана), порядка 0 и 1, соответственно для заданного аргумента x. Функция yn возвращает значение функции Бесселя второго рода, порядка n для заданного аргумента x. Значение x должно быть положительным.

COMPRESS()
Команда compress берет файл, заданный параметром file, и сжимает его до минимально возможного размера, создавая при этом выходной файл cо сжатыми данными и удаляя, если не задана опция -c, первоначальный файл. Сжатие достигается кодированием одинаковых строк в файле. Команда uncompress восстанавливает ранее сжатый файл в его первоначальное состояние и удаляет версию сжатого файла. Команда zcat используется для вывода файла на экран, при этом файл восстанавливается из сжатого состояния и производится его сцепление с экранным или стандартным выводом, после чего версия сжатого файла не уничтожается.

Приемы профессиональной работы в UNIX

Непрерывное снижение цен, рост производительности в наше время и ожидаемое появление новых микро- и супер-микрокомпьютеров делают мощь системы UNIX доступной для все большего круга пользователей. Системы UNIX или типа UNIX работают на любых машинах, от уровня PC-XT до AT и выше. Доступность больших объемов оперативной памяти и мощных микропроцессоров привела к возрастанию интереса к многозадачности, системам мультипроцессирования - сфере, в которой UNIX имеет солидную репутацию.
Однако применение UNIX с максимальной отдачей - дело нелегкое. Люди годами высказывали неудовлетворение тем, что она не является "дружественной" по отношению к пользователю - и это разумная критика, хотя на самом деле UNIX содержит средства для построения интерфейсов любого требуемого уровня сложности. Наиболее важная причина трудоемкости эффективного использования UNIX состоит в том, что в системе используются очень плодотворные идеи, не знакомые многим людям, работавшим с более простыми операционными системами. UNIX предоставляет также гораздо больше инструментальных средств, более гибких и с существенно большими возможностями, чем, например, популярная MS-DOS (в чем можно убедиться беглым сравнением соответствующих руководств). Вероятно, Вы, читатель, начинали с изучения UNIX в объеме, достаточном для решения конкретных задач в вашей системе, будь то текстовая обработка и форматирование текстов, программирование или запуск статистических пакетов. Через некоторое время вы, видимо, накопили (от других людей или в результате собственной работы) небольшой набор приемов, включающий, возможно, некоторый опыт простого программирования для интерпретатора командного процессора.

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

Многообразие сред
В данной главе рассматривается среда, которая существует в системе UNIX и вокруг нее. Освещение всех аспектов среды UNIX было бы слишком громоздкой задачей и выходит за пределы данной книги. Даже отдельным утилитам, таким как fsdb и sdb, нужны свои собственные книги, чтобы отдать им должное. Мы пытаемся дать читателю начальные сведения, философию и ощущение системы UNIX

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

Сопровождение файлов
Даже "небольшая" система UNIX с малым числом пользователей порождает сотни файлов в ходе обычной работы. В процессе программирования вы можете создавать множество файлов для различных версий ваших программ. Ведение почты и запись текста при помощи редактора vi способствует тому, что накапливается еще больше файлов. Такие утилиты, как uucp, lp и другие добавляют еще больше файлов.

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

Управление делопроизводством
Мы уже многое знаем о файлах и о том, как управлять файловой структурой. Пора рассмотреть, как мы можем использовать систему UNIX для управления множеством задач, которые составляют наш рабочий день и держат нас в курсе того, что делают другие пользователи. Термин "управление личной информацией" (personal management) подразумевает, что вы хотите создать свою собственную ПЕРСОНАЛЬНУЮ рабочую среду и инструментальные средства.

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

Система UNIX и аппаратура
Ниже уровня известной нам области файловых систем находится мир устройств и их драйверов. В данной главе мы исследуем некоторые методы, необходимые для работы с терминалами, дисками и непосредственно файловыми системами. Программное средство 'c' иллюстрирует доступ к терминалу на примере операции быстрой очистки экрана. Следующие три средства - mntf, mntlook и umntsys - имеют дело с монтированием и размонтированием файловых систем.

Физическое подключение
В данной главе мы рассматриваем средства коммуникации в системе UNIX. В то время как в мире MS-DOS коммуникации ограничены обычно "черным ящиком" (программными пакетами и довольно стандартными модемами), коммуникации в системе UNIX более сложны. UNIX предлагает несколько уровней коммуникаций, включая передачу файлов, удаленную регистрацию в системе, дистанционную почту и развитые системы обмена сообщениями, которые могут связывать между собой сотни систем UNIX.

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

Способы преобразования
Поскольку компьютеры и их резидентные утилиты используют при работе разные системы счисления, часто возникает необходимость преобразования оснований систем счисления. Эти преобразования обеспечиваются хорошо знакомыми специалистам командами UNIX bc (калькулятор произвольной точности) и dc (которая предположительно расшифровывается как настольный калькулятор ("desk calculator")).

Переменные среды выполнения
Некоторые переменные среды являются зарезервированными словами, которые использует интерпретатор shell. Их значения устанавливаются, когда вы регистрируетесь в системе. Другие переменные используются различными другими частями системы UNIX. Имея под рукой полный список, вы можете убедиться, что все необходимые переменные определены.