Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Сочетание различный видов стилей






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

Например, сделаем все заголовки < h1> оранжевого цвета, а один конкретный - красного цвета. Для оранжевых заголовков создадим глобальный стиль, а для красного - внутренний:

< head>
h1 {
color: #CD6600
}
< /head>

< body>
< h1> Заголовок 1< /h1>
< h1 style=" color: #FF0000" > Заголовок 2< /h1>
< h1> Заголовок 3< /h1>
< /body>

В результате данного примера " Заголовок 1" и " Заголовок 3" будут оранжевого цвета, а " Заголовок 2" - красного.


Лекция: Введение в MySql

В этой лекции рассматриваются вводные понятия баз данных, их виды, и даётся обзор основных характеристик MySql.

 

Компьютерные системы хранения

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

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

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

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

Для работы с базой данных необходима СУБД (система управления базами данных), т.е. программа, которая берет на себя все заботы, связанные с доступом к данным. Она содержит команды, позволяющие создавать таблицы, вставлять в них записи, искать и даже удалять записи.

MySql - это быстрая, надежная, открыто распространяемая СУБД. MySql, как и многие другие СУБД, функционирует по модели " клиент/сервер". Под этим подразумевается сетевая архитектура, в которой компьютеры играют роли клиентов либо серверов. На рис. 1.1 изображена схема передачи информации между компьютером клиента и жестким диском сервера.

 

 

Рис. 1.1. Схема передачи данных в архитектуре " клиент/сервер"

 

СУБД управляет одной или несколькими базами данных. База данных представляет собой совокупность информации, организованной в виде множеств. Каждое множество содержит записи унифицированного вида. Сами записи состоят из полей. Обычно множества называют таблицами, а записи — строками таблиц.

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

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

Отношение " один ко многим" означает ситуацию, когда строка одной таблицы соответствует нескольким строкам другой таблицы. Это наиболее распространенный тип отношений. На диаграммах он выражается записью 1: N.

Наконец, при отношении " многие ко многим" строки первой таблицы могут быть связаны с произвольным числом строк во второй таблице. Такое отношение записывается как N: M.

 

СУБД

 

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

Подобная обработка данных осуществляется посредством языка четвертого поколения (4GL), который поддерживает запросы, записываемые и исполняемые немедленно. Данные быстро утрачивают свою актуальность, поэтому скорость доступа к ним важна. Кроме того, программист должен иметь возможность формулировать новые запросы. Они называются нерегламентированными (ad hoc), поскольку не хранятся в самой базе данных и служат узкоспециализированным целям.

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

Схема предназначена для контроля целостности данных. Если, к примеру, объявлено, что поле содержит целочисленные значения, то СУБД откажется записывать в него числа с плавающей запятой или строки. Отношения между записями тоже четко контролируются, и несогласованные данные не допускаются. Операции можно группировать в транзакции, выполняемые по принципу " все или ничего".

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

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

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

 

Концепции баз данных

Системы управления файлами

 

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

Системы управления файлами нельзя классифицировать как СУБД, так как обычно они являются частью операционной систем и ничего не знают о внутреннем содержимом файлов. Это знание заложено в прикладных программах, работающих с файлами. В качестве примера можно привести таблицу пользователей UNIX, хранящуюся в файле /etc/passwd. Программы, обращающиеся к этому файлу, знают, что в его первом поле находится имя пользователя, оканчивающееся двоеточием. Если приложению нужно отредактировать эту информацию, оно должно непосредственно открыть файл и позаботиться о правильном форматировании полей.

Такая модель базы данных очень неудобна, поскольку она требует использовать язык третьего поколения (3GL). В результате время программирования запросов увеличивается, а программист должен обладать более высокой квалификацией, так как ему нужно продумать не только логическую, но и физическую структуру хранения данных. Это приводит к тому, что между приложением и файлом образуется тесная связь. Вся информация о полях таблиц закодирована в приложении. Другое приложение, обращающееся к тому же файлу, вынуждено дублировать существующий код.

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

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

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

 

Иерархические базы данных

 

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

На рис. 1.2 изображена простая иерархическая база данных, в которой фиксируется деятельность независимого подрядчика. Корень дерева представляет собой запись о клиенте. Ее потомками являются две записи о счет-фактурах и три записи об оплатах счетов. Структура счета номер 17 уточняется в трех дочерних записях, у счета номер 23 одна такая запись.

 

 

Рис. 1.2. Иерархическая база данных

 

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

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

 

Сетевые базы данных

 

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

Следуя спецификации CODASYL, сетевая модель поддерживает DDL (Data Definition Language — язык определения данных) и DML (Data Manipulation Language — язык обработки данных). Это специальные языки, предназначенные для определения структуры базы данных и составления запросов. Несмотря на их наличие, программист по-прежнему должен знать структуру базы данных.

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

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

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

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

 

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

 

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

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

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

 

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

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

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

MySql — это реляционная СУБД, и настоящий учебный курс посвящен изучению именно реляционной модели. Но теория баз данных не стоит на месте. Появляются новые технологии, которые расширяют реляционную модель.

 

Объектно-ориентированные базы данных

 

Объектно-ориентированная база данных (ООБД) позволяет программистам, которые работают с языками третьего поколения, интерпретировать все свои информационные сущности как объекты, хранящиеся в оперативной памяти. Дополнительный интерфейсный уровень абстракции обеспечивает перехват запросов, обращающихся к тем частям базы данных, которые находятся в постоянном хранилище на диске. Изменения, вносимые в объекты, оптимальным образом переносятся из памяти на диск.

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

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

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

Объектно-ориентированные СУБД выполняют много дополнительных функций. Это окупается сполна, если отношения между данными очень сложны. В таком случае производительность ООБД оказывается выше, чем у реляционных СУБД. Если же данные менее сложны, дополнительные функции оказываются избыточными. В объектной модели данных поддерживаются нерегламентированные запросы, но языком их составления не обязательно является SQL. Логическое представление данных может не соответствовать реляционной модели, поэтому применение языка SQL станет бессмысленным. Зачастую удобнее обрабатывать объекты в памяти, выполняя соответствующие виды поиска.

Большим недостатком объектно-ориентированных баз данных является их тесная связь с применяемым языком программирования. К данным, хранящимся в реляционной СУБД, могут обращаться любые приложения, тогда как, к примеру, Java-объект, помещенный в ООБД, будет представлять интерес лишь для приложений, написанных на Java.

 

Объектно-реляционные базы данных

 

Объектно-реляционные СУБД объединяют в себе черты реляционной и объектной моделей. Их возникновение объясняется тем, что реляционные базы данных хорошо работают со встроенными типами данных и гораздо хуже — с пользовательскими, нестандартными. Когда появляется новый важный тип данных, приходится либо включать его поддержку в СУБД, либо заставлять программиста самостоятельно управлять данными в приложении.

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

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

 

Основные характеристики MySql

 

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

Клиентские программы могут работать не только в режиме командной строки. Есть и графические клиенты, например MySql GUI, PhpMyAdmin и др. Но они – тема отдельного курса.

MySql взаимодействует с базой данных на языке, называемом SQL (Structured Query Language — язык структурированных запросов).

SQL предназначен для манипуляции данными, которые хранятся в Системах управления реляционными базами данных (RDBMS). SQL имеет команды, с помощью которых данные можно извлекать, сортировать, обновлять, удалять и добавлять. Стандарты языка SQL определяет ANSI (American National Standards Institute). В настоящее время действует стандарт, принятый в 2003 году (SQL-3).

 

SQL можно использовать с такими RDBMS как MySql, mSQL, PostgresSQL, Oracle, Microsoft SQL Server, Access, Sybase, Ingres. Эти системы RDBMS поддерживают все важные и общепринятые операторы SQL, однако каждая из них имеет множество своих собственных патентованных операторов и расширений.

 

SQL является общим языком запросов для нескольких баз данных различных типов. Данный курс рассматривает систему MySql, которая является RDBMS c открытым исходным кодом, доступной для загрузки на сайте MySql.com.

 

Вот как характеризуют MySql её разработчики.

MySql - это система управления базами данных.

 

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

MySql - это система управления реляционными базами данных.

 

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

Программное обеспечение MySql - это ПО с открытым кодом.

 

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

Технические возможности СУБД MySql

 

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

Безопасность

 

Система безопасности основана на привилегиях и паролях с возможностью верификации с удаленного компьютера, за счет чего обеспечивается гибкость и безопасность. Пароли при передаче по сети при соединении с сервером шифруются. Клиенты могут соединяться с MySql, используя сокеты TCP/IP, сокеты Unix или именованные каналы (named pipes, под NT)

Вместимость данных

 

Начиная с MySql версии 3.23, где используется новый тип таблиц, максимальный размер таблицы доведен до 8 миллионов терабайт (263 bytes). Однако следует заметить, что операционные системы имеют свои собственные ограничения по размерам файлов. Ниже приведено несколько примеров:

 

- 32-разрядная Linux-Intel – размер таблицы 4 Гб.

 

- Solaris 2.7 Intel - 4 Гб

 

- Solaris 2.7 UltraSPARC - 512 Гб

 

- WindowsXP - 4 Гб

 

Как можно видеть, размер таблицы в базе данных MySql обычно лимитируется операционной системой. По умолчанию MySql-таблицы имеют максимальный размер около 4 Гб. Для любой таблицы можно проверить/определить ее максимальный размер с помощью команд SHOW TABLE STATUS или myisamchk -dv table_name. Если большая таблица предназначена только для чтения, можно воспользоваться myisampack, чтобы слить несколько таблиц в одну и сжать ее. Обычно myisampack ужимает таблицу по крайней мере на 50%, поэтому в результате можно получить очень большие таблицы.

 

2. Лекция: Подготовка к работе с MySql

 

Лекция рассматривает способы получения и установки дистрибутивов MySql в операционных системах Windows и Linux.

 

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

Загрузка MySql

 

MySql можно инсталлировать двумя способами: скомпилировав исходные коды программы или воспользовавшись предварительно скомпилированными двоичными файлами. Первый вариант допускает больше возможностей в плане конфигурации, но более продолжителен. Второй вариант удобнее, так как есть готовые дистрибутивы для многих операционных систем. На текущий момент существуют версии MySql для FreeBSD, HP-UX, IBM AIX, Linux, MacOS X, SCO, SGI Irix, Solaris и многих вариантов Microsoft Windows.

 

Информацию обо всех дистрибутивах можно получить на Web-узле https://www.MySql.com. Там же публикуются последние новости о программе.

Проверка исходных требований

 

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

Выбор версии

 

Команда разработчиков MySql публикует тестовые и стабильные версии дистрибутивов отдельно. Информацию о статусе той или иной версии программы можно найти на Web-узле. Эти же сведения закодированы в названии дистрибутива.

 

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

Инсталляция с помощью менеджера пакетов RedHat Linux

 

Если программа MySql инсталлируется в Linux, то лучше всего воспользоваться модулем RPM (RedHat Packet Manager— менеджер пакетов RedHat). MySql работает в Linux версий 2.0 и выше. Тестирование программы выполнялось в RedHat 6.2. В программе используется библиотека glibc, подключаемая статически. Если в системе установлена более старая версия библиотеки, программу придется скомпилировать заново.

 

В приведено описание доступных модулей RPM (для последней версии пакета MySql 4.01.10, на момент создания этого материала)

MySql-4.01.10-1.1386.rpm Содержит все файлы, необходимые для запуска сервера MySql, включая клиентские программы.

MySql-4.01.10-l.src.rpm Содержит все исходные коды MySql

MySql-bench-4.01.10-1.1386.rpm Содержит программы, предназначенные для тестирования производительности MySql. Для запуска тестов необходим основной дистрибутив, а также интерпретатор Perl.

MySql-client-4.01.10-1.1386.rpm Содержит лишь клиентские программы

MySql-devel-4.01.10-1.1386.rpm Содержит библиотеки и файлы заголовков, необходимые для компиляции клиентских программ

MySql-shared-4.01.10-1.1386.rpm Содержит совместно используемые библиотеки для клиентских программ

 

 

Опытные пользователи Linux знают, что флаг -i служит программе rpm указанием инсталлировать пакет. Таким образом, основной модуль MySql инсталлируется следующей командой:

rpm -i MySql-4.01.10-1.1386.rpm

 

В результате инсталляции в каталог /etc/rc.d добавляется файл сценария, содержащий команду запуска сервера MySql после перезагрузки компьютера. Однако сам серверный демон запускается немедленно.

 

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

 

Можно также инсталлировать модуль RPM с исходными кодами программы. В этом случае воспользуйтесь опцией --rebuild, чтобы подготовить бинарный модуль.

 

Обычно пользователи инсталлируют лишь модули MySql-4.01.10-1.i386.rpm и MySql-client-4.01.10-l.i386.rpm. Для тех, кто собираются писать собственные клиентские программы, потребуется также модуль MySql-devel-4.01.10-1.i386.rpm.

Инсталляция в Windows

 

Программа MySql распространяется и в виде ZIP-архива, содержащего набор инсталляционных файлов. Перед извлечением файлов из архива создайте отдельный каталог, например с: \windows\MySql, так как в архиве нет информации о путевых именах файлов.

 

Чтобы приступить к инсталляции, выполните двойной щелчок на файле setup.ехе, после чего начнут появляться различные диалоговые окна. Первый вопрос, на который предстоит ответить, касается папки, куда должна быть помещена программа. По умолчанию предлагается папка с: \MySql. Можно выбрать любую другую папку, но в таком случае придется отредактировать конфигурационный файл.

 

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

 

Далее начнется собственно установка программы. Если инсталляционный каталог называется не с: \MySql, то по окончании инсталляции нужно будет дополнительно установить файл my.ini. Для этого перейдите в каталог программы и найдите файл my-example.cnf. Скопируйте его в системный каталог (с: \windows) и переименуйте в my.ini. Можно поступить и по-другому: скопировать файл в корневой раздел диска С: и назвать его my.cnf.

 

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

basedir = d: \MySql

 

Если программа MySql инсталлируется в Windows 2000 (XP), то, возможно, ее нужно запустить в виде сервиса. Для этого требуется перейти в режим командной строки и ввести следующую команду:

c: \MySql\bin\MySqld-nt --install

 

Название сервиса появится в окне сервисов панели управления, где можно будет настроить программу на автоматический запуск. Утилита winMySqladmin, входящая в Windows-дистрибутив, позволяет автоматизировать множество задач, включая конфигурацию.

 

Если Вы хотите запустить MySql вручную, то Вам потребуется выполнить следующую последовательность действий:

запустите сеанс MS-DOS и перейдите в каталог c: \MySql\bin

введите в строке приглашения:

MySqld-shareware --standalone

 

или (в зависимости от версии)

MySqld

 

тем самым будет запущен сервер MySql.

введите " MySql" (без кавычек) в приглашении DOS.

приглашение изменится на приглашение " MySql".

чтобы протестировать сервер MySql, введите в строке приглашения " show databases; "

на экране должно появиться окно, изображенное на рис 2.1

 

 

Рис. 2.1. Запуск MySql

 

 

Если появится подобный результат, то можно считать, что установка системы MySql успешно завершена.

введите " quit" в приглашении MySql.

снова появится приглашение MS-DOS.

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

MySqladmin -u root shutdown

Инсталляция вручную

 

Если программа MySql инсталлируется не в Linux или Windows либо если услуги менеджера пакетов не нужны, можно инсталлировать двоичные файлы вручную. Соответствующий дистрибутив распространяется в виде tar-архива, сжатого с помощью программы gzip.

 

Первый этап заключается в добавлении нового пользователя, от имени которого будет работать демон MySql. Естественно, это не должен быть пользователь root.

 

Программе MySql нельзя предоставлять права суперпользователя, и никакие компромиссы здесь недопустимы. Можно, например, создать группу MySql и одноименного пользователя с помощью команд addgroup и adduser либо groupadd и useradd, в зависимости от версии UNIX. Ниже показан пример для RedHat Linux:

groupadd MySql

useradd -g MySql MySql

 

Обычно начальным каталогом MySql выбирают /usr/local/MySql. После распаковки архива будет создан каталог, имя которого совпадает с именем дистрибутива, поэтому удобнее всего просто создать символическую ссылку MySql. Вот как это делается:

cd /usr/local

tar xvfz MySql-4.01.10-pc-linux-gnu-i686.tar.gz

ln -s MySql-4.01.10-pc-linux-gnu-i686 MySql

cd MySql

 

Далее необходимо запустить сценарий MySql_install_db, находящийся в каталоге scripts. Он создаст базу данных с описанием существующих привилегий и тестовую базу данных.

 

Как правило, программа MySql инсталлируется от имени пользователя root, поэтому следующий шаг заключается в изменении владельца всех файлов программы:

chown -R MySql /usr/local/MySql

chgrp -R MySql /usr/local/MySql

 

Теперь можно запустить демон MySql с помощью сценария safe_MySqld. Следующая команда запускает демон от имени пользователя MySql:

/usr/local/MySql/bin/safe_MySqld --user=MySql &

 

Если нужно, чтобы сервер MySql запускался всякий раз после перезагрузки компьютера, добавьте соответствующую строку в файл /etc/rc.d/rc.local или же скопируйте сценарий MySql.server в каталог /etc/init.d и создайте правильные символические ссылки на него. В комментариях к файлу support-files/MySql.server рекомендуются такие ссылки:

/etc/rc3.d/S99MySql

 

и

/etc/rcO.d/SOlMySql.

 

Чтобы запустить программу клиента MySql вручную, введем в строке приглашения команду:

MySql -u root -p

 

Система попросит ввести пароль. Введите пароль для root (MySqldata).

 

Если приглашение ввести пароль не появилось, то это может означать, что сервер MySql не работает. Чтобы запустить сервер, перейдите в каталог /etc/rc.d/init.d/ и выполните команду./MySql start (или MySql start, в зависимости от значения переменной PATH). Затем вызовите программу клиента MySql.

 

Если клиент MySql работает, то появится приглашение MySql>. Введите в строке приглашения следующее:

show databases;

 

На экране должен появиться вывод, как на рис. 2.1.

 

Теперь можно считать, что система MySql успешно установлена в Linux.

Компиляция программы

 

Если в вашем распоряжении имеются исходные коды программы, создайте из них двоичные файлы и следуйте приведенным выше инструкциям. Поскольку исходные тексты были подготовлены с помощью утилиты autoconf, для компиляции программы нужно будет ввести последовательность команд configure, make и make install.

 

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

 

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

Предоставление привилегий

 

Сценарий MySql_install_db предоставляет любому пользователю локального компьютера привилегии, позволяющие регистрироваться на сервере баз данных. Сетевые соединения не допускаются. По умолчанию любой пользователь имеет доступ к базе test, а пользователь root имеет полный доступ ко всем базам данных. Если в какой-то из баз хранится важная информация, нужно назначить суперпользователю пароль.

 

Программа MySql не работает со списком пользователей, который есть у операционной системы. У нее своя таблица пользователей. Тем не менее, если при работе с имеющимися клиентскими программами не ввести имя пользователя в процессе регистрации на сервере, будет подставлено системное имя пользователя.

 

Чтобы поменять пароль пользователя root, нужно запустить интерпретатор команд MySql от имени суперпользователя. Данный интерпретатор представляет собой программу MySql, путь к которой должен быть указан в переменной среды PATH.

 

Пользователям Windows придется вводить путевое имя целиком, например c: \MySql\bin\MySql. С помощью опции --user задается имя для регистрации. В нашем случае интерпретатор запускается с помощью такой команды:

MySql --user=root MySql

 

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

UPDATE user SET Password = PASSWORD('secret')

WHERE User = 'root';

 

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

 

Далее нужно сообщить серверу об изменении привилегий. Для этого предназначена такая инструкция:

FLUSH PRIVILEGES;

 

Любой пользователь может захотеть создать персональную базу данных для собственных экспериментов, но делать это разрешено только пользователю root. Он же может создавать учетные записи новых пользователей и предоставлять им необходимые привилегии. Рассмотрим пример:

CREATE DATABASE mybase;

GRANT ALL

ON freak.*

TO freak @'%' IDENTIFIED BY PASSWORD('secret');

 

Первая инструкция создает базу данных mybase. Вторая инструкция создает учетную запись пользователя freak и предоставляет ему доступ к одноименной базе данных. Пароль для доступа — 'secret'. Пользователь freak может подключаться к базе данных с любого компьютера, даже если он расположен в сети Internet.

 

3. Лекция: Создание базы данных, основы работы с таблицами

 

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

 

В этой лекции мы научимся создавать базы данных.

 

Команды для создания базы данных в Windows и Linux одинаковы. Однако предварительные команды в Linux немного сложнее. Так как этот материал рассчитан на широкий круг читателей, в том числе и слабо знакомых с ОС Linux, то системы Windows и Linux будут рассмотрены по отдельности.

 

Создадим базу данных с именем employees, которая содержит данные о сотрудниках некой компании BigFoot. Предполагается хранить имя, зарплату, возраст, адрес, e-mail, дату рождения, увлечения, номера телефонов, и т.д. сотрудников.

Создание базы данных в Windows

 

1. Запустите сервер MySql, выполняя команду MySqld-shareware -standalone в строке приглашения в каталоге c: \MySql\bin. Более подробно об этом сказано выше, в лекции об установке MySql в Windows.

 

2. Затем вызовите программу клиента MySql, вводя в строке приглашения MySql.

 

3. Приглашение изменится на MySql>. Введите команду:

create database employees;

 

(Примечание: Команда заканчивается символом точки с запятой).

 

4. Сервер MySql должен ответит примерно как на рис. 3.1

 

Рис. 3.1. Результат работы команды создания таблицы

 

[Запрос обработан, изменилась 1 строка (0.00 сек)]

 

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

show databases;

 

Сервер ответит списком баз данных, как показано на рис. 3.2.

 

 

Рис. 3.2. Просмотр баз данных

 

 

Здесь показаны три базы данных, две были созданы MySql во время установки и вновь созданная база данных employees.

 

6. Чтобы вернуться снова к приглашению DOS, введите команду quit в приглашении MySql.

Создание базы данных в Linux

 

1. Пусть пользователь работает под своей учетной записью, а не как суперпользователь root. Необходимо запустить терминальный сеанс и стать суперпользователем (Для этого выполните команду su и введите пароль суперпользователя root).

 

2. Запустим сервер MySql. Вводим:

MySql -u root -p

 

Система предлагает ввести пароль пользователя root MySql, который был задан при установке MySql в Linux. (Примечание: Это пароль пользователя root системы MySql, а не пользователя root системы Linux). Введите пароль, который не изображается на экране по соображениям безопасности.

 

После успешной регистрации, система выводит приветствие и приглашение MySql, как показано на рис.3.3

 

 

Рис. 3.3. Приветствие системы

 

 

(Вас приветствует монитор MySql. Команды заканчиваются символами; или \g. id соединения с MySql равен 1 для сервера версии: 5.01.01. Введите 'help', чтобы получить справку).

 

3. Теперь можно создавать базу данных employees. Выполните команду:

create database employees;

 

(Примечание: команда заканчивается точкой с запятой)

 

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

GRANT ALL ON employees.* TO freak@localhost IDENTIFIED BY " pass"

 

Эта команда предоставляет учетной записи freak@localhost все полномочия на базу данных employees и задает пароль pass. Для любого другого пользователя freak можно заменить на любое другое имя пользователя и выбрать подходящий пароль.

 

5. Закройте сеанс MySql, вводя в приглашении команду quit. Выйдите из режима суперпользователя и перейдите в свою учетную запись. (Введите exit).

 

6. Чтобы соединиться с MySql с помощью обычной учетной записи, введите:

MySql -u имя_пользователя -p

 

Затем введите после приглашения пароль. (Этот пароль был задан выше командой GRANTS ALL...). После успешной регистрации в MySql система выведет приветственное сообщение. Сеанс пользователя должен выглядеть как показано на рис. 3.4.

 

 

Рис. 3.4. Приветствие системы MySql

 

 

7. Ввод команды SHOW DATABASES; выведет список всех доступных в системе баз данных.

MySql> SHOW DATABASES;

 

На экране должно появиться окно, аналогичное рис. 3.2.

 

Введите quit в строке приглашения MySql>, чтобы выйти из программы клиента MySql.

Команда CREATE DATABASE

 

Синтаксис команды CREATE DATABASE имеет вид:

CREATE DATABASE [IF NOT EXISTS] имя_базы_данных

[спецификация_create[, спецификация_create]...]

 

Команда CREATE DATABASE создает базу данных с указанным именем. Для использования команды необходимо иметь привилегию CREATE для базы данных. Если база данных с таким именем существует, генерируется ошибка.

спецификация_create:

[DEFAULT] CHARACTER SET имя_набора_символов

[DEFAULT] COLLATE имя_порядка_сопоставления

 

Опция спецификация_сrеаtе может указываться для определения характеристик базы данных. Характеристики базы данных сохраняются в файле db.opt, расположенном в каталоге данных. Конструкция CHARACTER SET определяет набор символов для базы данных по умолчанию. Конструкция COLLATION задает порядок сопоставления по умолчанию.

 

Базы данных в MySql реализованы в виде каталогов, которые содержат файлы, соответствующие таблицам базы данных. Поскольку изначально в базе нет никаких таблиц, оператор CREATE DATABASE только создает подкаталог в каталоге данных MySql.

Работа с таблицами

 

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

 

Базы данных хранят данные в таблицах. Чем же являются эти таблицы?

 

Проще всего таблицы можно представлять себе, как состоящие из строк и столбцов. Каждый столбец определяет данные определенного типа. Строки содержат отдельные записи.

 

Рассмотрим таблицу 3.1, в которой приведены персональные данные некоторых людей:

Возраст Страна e-mail

Михаил Петров 28 Россия misha@yandex.ru

Джон Доусон 32 Австралия j.dow@australia.com

Морис Дрюон 48 Франция md@france.fr

Снежана 19 Болгария sneg@bulgaria.com

 

 

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

 

База данных может содержать множество таблиц, именно таблицы содержат реальные данные.

 

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

 

Команда SQL для создания такой таблицы выглядит следующим образом:

CREATE TABLE employee_data

(

emp_id int unsigned not null auto_increment primary key,

f_name varchar(20),

l_name varchar(20),

title varchar(30),

age int,

yos int,

salary int,

perks int,

email varchar(60)

);

 

Примечание: в MySql команды и имена столбцов не различают регистр символов, однако имена таблиц и баз данных могут зависеть от регистра в связи с используемой платформой (как в Linux). Поэтому можно вместо CREATE TABLE использовать create table.

 

За ключевыми словами CREATE TABLE следует имя создаваемой таблицы employee_data. Каждая строка внутри скобок представляет один столбец. Эти столбцы хранят для каждого сотрудника идентификационный номер (emp_id), фамилию (f_name), имя (l_name), должность (title), возраст (age), стаж работы в компании (yos), зарплату (salary), надбавки (perks), и адрес e-mail (email).

 

За именем каждого столбца следует тип столбца. Типы столбцов определяют тип данных, которые будет содержать столбец. В данном примере столбцы f_name, l_name, title и email будут содержать текстовые строки, поэтому тип столбца задан как varchar, что означает переменное количество символов. Максимальное число символов для столбцов varchar определяется числом, заключенным в скобки, которое следует сразу за именем столбца. Столбцы age, yos, salary и perks будут содержать числа (целые), поэтому тип столбца задается как int. Первый столбец (emp_id) содержит идентификационный номер (id) сотрудника. Его тип столбца выглядит несколько перегруженным, поэтому рассмотрим его по частям:

int: определяет тип столбца как целое число.

unsigned: определяет, что число будет без знака (положительное целое).

not null: определяет, что значение не может быть null (пустым); то есть каждая строка в этом столбце должна иметь значение.

auto_increment: когда MySql встречается со столбцом с атрибутом auto_increment, то генерируется новое значение, которое на единицу больше чем наибольшее значение в столбце. Поэтому мы не должны задавать для этого столбца значения, MySql генерирует их самостоятельно. Из этого также следует, что каждое значение в этом столбце будет уникальным.

primary key: помогает при индексировании столбца, что ускоряет поиск значений. Каждое значение должно быть уникально. Ключевой столбец необходим для того, чтобы исключить возможность совпадения данных. Например, два сотрудника могут иметь одно и то же имя, и тогда встанет проблема – как различать этих сотрудников, если не задать им уникальные идентификационные номера. Если имеется столбец с уникальными значениями, то можно легко различить две записи. Лучше всего поручить присваивание уникальных значений самой системе MySql.

Использование базы данных

 

База данных employees уже создана. Для работы с ней, необходимо её " активировать" или " выбрать". В приглашении MySql выполните команду:

SELECT DATABASE();

 

На экране увидим ответ системы, как показано на рис. 3.5

 

 

Рис. 3.5. Выбор базы данных

 

 

Это говорит о том, что ни одна база данных не была выбрана. На самом деле всякий раз при работе с клиентом MySql необходимо определять, какая база данных будет использоваться.

 

Определить текущую базу данных можно несколькими способами:

определение имени базы данных при запуске

 

Введите в приглашении системы следующее:

MySql employees (в Windows)

MySql employees -u manish -p (в Linux)

определение базы данных с помощью оператора USE в приглашении MySql

MySql> USE employees;

Определение базы данных с помощью \u в приглашении MySql

MySql> \u employees;

 

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

Создание таблицы

 

После выбора базы данных employees, выполните в приглашении MySql команду CREATE TABLE.

CREATE TABLE employee_data

(

emp_id int unsigned not null auto_increment primary key,

f_name varchar(20),

l_name varchar(20),

title varchar(30),

age int,

yos int,

salary int,

perks int,

email varchar(60)

);

 

Примечание: нажатие клавиши Enter после ввода первой строки изменяет приглашение MySql на ->. Это означает, что MySql понимает, что команда не завершена и приглашает ввести дополнительные операторы. Помните, что каждая команда MySql заканчивается точкой с запятой, а каждое объявление столбца отделяется запятой. Можно также при желании ввести всю команду на одной строке.

 

Вывод на экране должен соответствовать рис. 3.6.

 

 

Рис. 3.6. Создание таблицы

 

Синтаксис команды CREATE TABLE

 

Общий формат инструкции CREATE TABLE таков:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] имя

[(спецификация,...)]

[опция,...]

[ [IGNORE | REPLACE] запрос]

 

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

 

Чтобы задать имя таблицы с пробелами, необходимо заключить его в обратные кавычки, например 'courses list'. То же самое нужно будет делать во всех ссылках на таблицу, поскольку пробелы используются для разделения идентификаторов.

 

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

имя тип

[NOT NULL | NULL]

[DEFAULT значение]

[AUTO_INCREMENT]

[KEY]

[ссылка]

 

Спецификация типа включает название типа и его размерность. По умолчанию столбцы принимают значения NULL. Спецификатор NOT NULL запрещает подобное поведение.

 

У любого столбца есть значение по умолчанию. Если оно не указано, программа MySql выберет его самостоятельно. Для столбцов, принимающих значения NULL, значением по умолчанию будет NULL, для строковых столбцов — пустая строка, для численных столбцов — нуль. Изменить эту установку позволяет предложение DEFAULT.

 

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

Удаление таблиц

 

Для того, чтобы удалить таблицу, убедимся сперва что она существует. Это можно проверить с помощью команды SHOW TABLES, как показано на рис. 3.7.

 

 

Рис. 3.7. Просмотр таблиц в базе

 

 

Для удаления таблицы используется команда DROP TABLE, как показано на рис. 3.8.

 

 

Рис. 3.8. Удаление таблицы

 

 

Теперь команда SHOW TABLES; этой таблицы больше не покажет.

Синтаксис команды DROP TABLE

 

Инструкция DROP TABLE имеет следующий синтаксис:

DROP TABLE [IF EXISTS] таблица [RESTRICT | CASCADE]

 

Спецификация IF EXISTS подавляет вывод сообщения об ошибке, выдаваемого в случае, если заданная таблица не существует. Можно указывать несколько имен таблиц, разделяя их запятыми.

 

Флаги RESTRICT и CASCADE предназначены для выполнения сценариев, созданных в других СУБД.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.