Скачать 282.73 Kb.
|
Общие вопросы СУБД MySQL§ 10 Пользователи MySQL MySQL является многопользовательской средой, поэтому в ней предусмотрена регистрация пользователей, обладающих различными правами (привилегиями). Это могут быть привилегии на просмотр таблицы, на просмотр и добавление новых записей и т. д. Можно позволить пользователю обращаться к серверу MySQL только с определенного хоста и разрешить ему доступ лишь к одному столбцу некоторой таблицы. Словом, MySQL обладает гибкими возможностями предоставления различных прав своим пользователям, что обеспечивает безопасную работу с базами данных. Отметим, что под пользователем MySQL не следует понимать отдельного человека, сидящего за компьютером. Это может быть группа лиц, наделенных одинаковыми правами доступа к серверу MySQL. Информация о зарегистрированных пользователях хранится в таблице user системной базы данных mysql. В системе MySQL существует пользователь root, наделенный правами администратора, т. е. имеющий все возможные привилегии. Создать нового пользователя можно при помощи оператора CREATE USER user [IDENTIFIED BY [PASSWORD] ’password’] В следующем примере при помощи утилиты mysql создается пользователь newuser с паролем hi: mysql> CREATE USER newuser IDENTIFIED BY 'hi' ; Удаление (переименование) пользователей производится с помощью операторов DROP USER и RENAME USER соответственно: DROP USER user; RENAME USER user TO user1; Перечисленные операции могут быть осуществлены и путем прямого редактирования таблицы mysql.user (так обозначается принадлежность таблицы user к базе mysql). Для предоставления (отмены) привилегий отдельным пользователям MySQL поддерживает стандартные операторы SQL GRANT и REVOKE соответственно. Список системных привилегий в MySQL не ограничивается операциями SELECT, INSERT, UPDATE, DELETE и REFERENCES; пользователю могут быть предоставлены права на создание таблиц (CREATE), их редактирование (ALTER), на изменение (создание) хранимой процедуры (ALTER ROUTINE) и т. д. Полный список привилегий приведен в [1] § 11 Типы и структура таблиц Создание, заполнение и изменение таблиц в MySQL осуществляются с помощью стандартных SQL операторов CREATE TABLE, ALTER TABLE, INSERT, UPDATE, DELETE. Определен также оператор REPLASE, который действует аналогично INSERT, но таким образом, что если значение индекса unique или primary KEY в старой записи таблицы такое же, как и в новой, то старая запись перед занесением новой будет удалена. Оператор TRUNCATE TABLE предназначен для полного очищения таблицы. Просмотреть список таблиц текущей базы данных позволяет конструкция SHOW TABLES, а получить описание столбцов конкретной таблицы можно при помощи оператора DESCRIBE, который не является стандартным и присутствует лишь в MySQL SQL. СУБД MySQL поддерживает несколько типов таблиц. Тип MyISAM назначается по умолчанию при создании таблицы. Каждая MyISAM-таблица хранится на диске в трех файлах, имена которых совпадают с названием таблицы table_name: table_name.frm, table_name.myd и table_name.myi. Первый из них содержит структуру таблицы и информацию о столбцах и индексах. Второй содержит данные таблицы, а третий – ее индексы. Таблицы типа MyISAM можно переносить с сервера простым копированием файлов. Таблицы типа InnoDB могут достигать объема в 1 Тбайт. Таблицы этого типа хранятся в едином табличном пространстве. Данный тип таблиц поддерживает транзакции, блокировки на уровне отдельных записей и – единственный из типов таблиц MySQL – поддерживает внешние ключи и каскадное удаление (обновление). Впрочем, таблицы InnoDB уступают в скорости обработки таблицам MyISAM. Для создания InnoDB-таблицы применяется ключевое слово ENGINE= InnoDB в операторе CREATE TABLE. Также MySQL поддерживает следующие типы таблиц: MERGE (позволяет сгруппировать несколько таблиц MyISAM в одну), MEMORY (таблица хранится в оперативной памяти), EXAMPLE, BDB, NDB Cluster (для организации кластеров распределенных таблиц), ARCHIVE (для хранения больших объемов информации в сжатом виде), CSV (формат таблиц Ms Excel), FEDERATED (для хранения данных на удаленном компьютере), BLACKHOLE. § 12 Типы данных в MySQL MySQL поддерживает несколько типов данных. Числовые данные. К ним относят целые числа, не содержащие дробной части (например, 124), а также вещественные числа, имеющие как целую, так и дробную части (например, 56.45). Числовые данные делятся на точечные (bit, boolean, integer и decimal) и приближенные (float, real и double precision). MySQL имеет пять целых типов: TINYINT, SMALLINT, MEDIUMINT, BIGINT. Различие между ними заключается в диапазоне величин, которые можно хранить в столбцах такого типа. Тип TINYINT имеет диапазон от –27 до 27–1, тип SMALLINT – от –215до 215–1, тип MEDIUMINT – от –223 до 223– 1, тип BIGINT – от–263до263–1. Целые типы данных могут быть объявлены положительными. Для этого предназначено ключевое слово UNSIGNED. В этом случае элементам данного столбца нельзя будет присвоить отрицательные значения, а допустимый диапазон значений, которые может принимать тип, удваивается. При объявлении целого типа можно задать количество отводимых под число разрядов (от 1 до 255). Тип BIT предназначен для хранения битовых полей. Тип BOOLEAN является синонимом для TINYINT (1). Значение 1 рассматривается как истина (true), a 0 – как ложь (false). Тип DECIMAL, а также его синонимы NUMERIC и DEC предназначены для величин повышенной точности, например, для денежных данных. Требуемая точность задается при объявлении данных одного из этих типов, например: DECIMAL(5,2). Здесь цифра 5 определяет общее число символов, отводимых под число, а цифра 2 задает количество знаков после запятой. При этом первый параметр может принимать максимальное значение, равное 64, а второй – максимальное значение, равное 30. Для представления вещественных (приближенных) типов в СУБД MySQL имеются типы: FLOAT (диапазон от –3.4Е+38 до 3.4Е+38, точность 1.2Е–39), DOUBLE и DOUBLE PRECISION (–1.8Е+308 до 1.8Е+308, точность 2.2Е–308). Числовые типы данных с плавающей точкой также могут иметь параметр UNSIGNED. Как и в целочисленных типах, этот атрибут предотвращает хранение в отмеченном столбце отрицательных величин, но, в отличие от целочисленных типов, максимальный интервал для величин столбца остается прежним. При формировании структуры таблицы необходимо обращать внимание на размер, занимаемый тем или иным типом данных: если значения в полях столбца никогда не будут выходить за пределы 100, не следует выбирать тип больше TINYINT. Если же предполагается хранить только целочисленные данные, то применение атрибута UNSIGNED позволит увеличить диапазон в два раза. Строковые данные— последовательность символов, заключенных в одинарные или двойные кавычки: 'Hello world', '123', "MySQL". Поскольку в качестве стандарта в SQL определены одинарные кавычки, для совместимости с другими базами данных рекомендуется использовать именно их. Различают строковые типы CHAR, VARCHAR, BLOB, TEXT, MEDIUMTEXT, MEDIUMBLOB, LONGTEXT, LONGBLOB, ENUM, SET. Тип CHAR позволяет хранить строку фиксированной длины; его дополняет тип VARCHAR, позволяющий хранить строки переменной длины. Длина строки может изменяться от 0 до 65 535. При создании таблицы нельзя смешивать столбцы типа CHAR и VARCHAR. В этом случае СУБД MySQL изменит тип столбцов согласно правилу: если таблице присутствует хотя бы один столбец переменной длины, все столбцы типа CHAR будут приведены к типу varchar. Тип TEXT обычно используется для хранения больших объемов текста (до 216 –1 символов), в то время как BLOB (также до 216 –1 символов) — для больших двоичных объектов, таких как электронные документы, изображения, музыкальные файлы и т. п. Типы MEDIUMBLOB, MEDIUMTEXT имеют максимальный размер (224 – 1) символов, а типы LONGTEXT, LONGBLOB – (232 –1) символов. К особым типам данных относятся ENUM и SET. Строки этих типов принимают значения из заранее заданного списка допустимых значений. Основное различие между ними заключается в том, что значение типа ENUM должно содержать точно одно значение из указанного множества, тогда как столбцы SET могут содержать любой (или все) элементы заранее заданного множества. Так, значения для столбца, объявленного как ENUM ('y', 'n'), могут принимать значения либо 'y', либо 'n'. Для типа SET, так же как и для типа ENUM, при объявлении задается список возможных значений, но в ячейке таблицы может храниться любое значение из списка, а пустая строка означает, что ни один из элементов списка не выбран. Например, значения для столбца SET ('y', 'n') могут принимать значения ('y', 'n'), ('y'), ('n') и пустое множество ( ). Календарные данные. СУБД MySQL имеет пять календарных типов данных: DАТЕ, DATETIME, TIME, TIMESTAMP и YEAR. Тип DАТЕ предназначен для хранения даты, TIME — для времени суток, a TIMESTAMP — для представления и даты, и времени суток. Тип TIMESTAMP предназначен для представления даты и времени суток в виде числа секунд, прошедших с полуночи 1 января 1970 года. Тип данных YEAR позволяет хранить только год. Для значений, имеющих тип DATE и DATATIME принят формат YYYY-MM-DD или YY-MM-DD. В типах TIME и DATATIME время приводится в привычном формате hh:mm:ss. Если время задается в недопустимом формате, то в поле записывается нулевое значение. Нулевое значение присваивается полям временного типа и по умолчанию, когда им не присваивается инициирующее значение. Тип NULL. Если поле может принимать значение NULL, то в определении столбца после типа данных следует указать ключевое слово NULL. Если ни при каких обстоятельствах поле не должно принимать значение NULL (регистрация невозможна, если фамилия пользователя неизвестна), следует указать ключевое слово NOT NULL, например: CREATE TABLE tbl ( id INT NOT NULL, col_name VARCHAR(255) NOT NULL, ); При выборе типа данных следует помнить, что обработка числовых данных происходит быстрее строковых. Так как типы данных ENUM и SET имеют внутреннее числовое представление, им следует отдавать предпочтение перед другими видами строковых данных, если предоставляется такая возможность. Типы фиксированной длины обрабатываются быстрее типов переменной длины, т. к. в последнем случае при частых удалениях и модификациях таблицы происходит ее фрагментация. § 13 Индексы в MySQL Определение индекса по некоторому столбцу означает, что СУБД создает его копию, которая затем постоянно поддерживается в отсортированном состоянии. Поиск по такому столбцу осуществляется очень быстро, т. к. заранее известно, где необходимо искать нужное значение. Индекс может быть определен по одному или по нескольким столбцам; в одной таблице может быть несколько индексов. MySQL поддерживает несколько видов индексов: первичный ключ — главный индекс таблицы; обычный индекс — таких индексов может быть несколько; уникальный индекс — значения в индексируемом столбце не должны повторяться (уникальных индексов также может быть несколько), полнотекстовый индекс— специальный вид индекса для столбцов типа TEXT, позволяющий производить полнотекстовый поиск. Индексы могут иметь как собственные имена, так и имена индексируемых столбцов. Один индекс может охватывать один или несколько столбцов. В таблице MySQL может быть не более 32 индексов, а многостолбцовый индекс может включать не более 16 столбцов. В качестве первичного ключа может выступать не только целочисленный столбец, но и текстовые данные. В этом случае при создании таблицы необходимо добавить в круглых скобках число символов, входящих в индекс: PRYMARY KEY(name(10)). Можно индексировать от 1 до 1000 символов текстового столбца. Первичный ключ может быть объявлен не по одному столбцу: PRIMARY KEY(id_PC, name(10)). Целочисленный первичный ключ может быть снабжен атрибутом auto_increment, который обеспечивает автоматическое создание уникального значения:: id INT(11) NOT NULL PRIMARY KEY auto_increment Передача столбцу, снабженному этим атрибутом, значения null или 0 приводит к автоматическому присвоению ему максимального значения столбца плюс 1. Данный механизм является весьма удобным и позволяет не заботиться о генерации уникального значения средствами прикладной программы, работающей с СУБД MySQL. Значение AUTO_INCREMENT можно изменить и начать отсчет не с 1, а, например, с 1000. Объявление обычных индексов производится при помощи ключевого слова index или key: …name TINYTEXT NOT NULL KEY name (name(10))… Для уникальных индексов вводится дополнительное ключевое слово unique, т. е. пишется UNIQUE index и unique key: Создание обычных индексов, в отличие от первичного ключа и уникального индекса, допустимо для столбцов, снабженных атрибутом NULL. Для обычных индексов (в отличие от первичного ключа) недопустимо их определение вместе со столбцом. Ссылочная целостность и внешние ключи в СУБД MySQL поддерживаются, начиная с версии 3.23.44, но только для таблиц типа InnoDB. Отметим, что MySQL поддерживает операторы CREATE INDEX и DROP INDEX для создания (удаления) индексов после определения таблиц. § 14 Транзакции Под транзакцией понимают выполнение группы SQL-запросов как единой операции. Иными словами либо выполняются все эти запросы, либо (если на каком-то этапе произошел сбой) отменяются все результаты их работы. Транзакции выполняются независимо друг от друга, т. е. до завершения транзакции блокируется доступ к объектам базы данных, подвергаемым обработке. Транзакции поддерживаются в MySQL для таблиц типа BDB и InnoDB. Транзакции не могут быть вложенными, т.к. всякий оператор, начинающий новую транзакцию, завершает предыдущую. По умолчанию MySQL работает в режиме автоматического завершения транзакций, т. е. после выполнения всякого запроса, модифицирующего данные, результат сразу записывается в базе. Для объединения нескольких операторов в транзакцию можно отключить этот режим, используя системную переменную AUTOCOMMIT: mysql> SET AUTOCOMMIT=0; После этого для завершения транзакции (и сохранения изменений) следует использовать оператор COMMIT, а для отмены всех действий – оператор ROLLBACK, например: mysql> SET AUTOCOMMIT=0; mysql> INSERT INTO table VALUES (val1, val2); mysql> SELECT * FROM table; mysql> ROLLBACK; mysql> INSERT INTO table VALUES (val3, val4); mysql> SELECT * FROM table; mysql>COMMIT; mysql> SET AUTOCOMMIT=1; Объединить последовательность запросов в транзакцию можно также с использованием стандартного оператора SET TRANSACTION: mysql> SET TRANSACTION mysql> INSERT INTO table VALUES (value1, value2); mysql> SELECT * FROM table; mysql>COMMIT; Наконец, в MySQL (для таблиц InnoDB) существует еще одна возможность определить транзакцию: операторы SAVEPOINT и ROLLBACK TO SAVEPOINT. Первый из них устанавливает именованную точку начала транзакции; второй позволяет в случае необходимости сделать откат к состоянию, в котором находилась база в момент установки именованной точки. Если выполняется оператор COMMIT или ROLLBACK без указания имени точки возврата, все именованные точки удаляются. Например: mysql> SAVEPOINT mypoint; mysql> INSERT INTO table VALUES (value1, value2); mysql> SELECT * FROM table; mysql> ROLLBACK TO SAVEPOINT mypoint; §15 Функции и операторы в MySQL СУБД MySQL поддерживает большинство стандартных логических и битовых операторов, операторов сравнения и, конечно же, арифметические операции, среди которых целочисленное деление «div» и взятие остатка от деления «%». Если при перемножении целых чисел результат выходит за пределы типа BIGINT, то возвращается 0. Деление на 0 в MySQL не приводит к ошибке: возвращается значение NULL. Как и другие СУБД, MySQL обладает большим числом встроенных функций, среди которых математические, функции даты и времени, функции работы со строками, функции шифрования данных и многие другие. Полный список этих функций можно увидеть в [1]. Следует отметить, что синтаксис MySQL не допускает использования пробела между именем функции и круглыми скобками, которые обязательны даже в случае отсутствия аргументов. |
C одержание Целью данной работы является описание конфигурирования, администрирования и программирования субд mysql и создание программы иллюстрирующей... |
Методические указания к лабораторным работам по курсу Сети ЭВМ и... Вы познакомились с принципами установки и настройки Web-сервера с поддержкой языка серверных сценариев php. В этой работе мы продолжим... |
||
Работа с субд mysql Учебное пособие по выполнению лабораторных работ О. Н. Лучко, профессор, зав кафедрой прикладной информатики и математики Омского государственного института сервиса |
1. Понятие субд. Основные категории субд. Архитектура ansi-sparc Субд — совокупность программных и лингвистических средств общего или специального назначения, обеспечивающих управление созданием... |
||
Руководство пользователя по установке ap manager II Перед установкой ap manager II на компьютере должно быть установлено следующее программное обеспечение: Mysql serve 0 и Mysql odbc... |
Реферат объект исследования или разработки Санкт-Петербурга прикладных программ учета музейных ценностей. Исследована возможность перехода от программ, реализующих идеологию... |
||
Проблемы применения технологии cuda для улучшения времени выполнения... В данной статье приведено описание итогового sql-запроса, проблем с его производительностью в реляционных субд типа olap. Рассмотрены... |
Содержание Введение Глава Основные понятия бд и субд данные и ЭВМ Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... |
||
Литература: Дейт К. Введение в системы баз данных, 8-е издание. Вильямс, 2006 Субд; 3 оптимального доступа к данным с использованием субд. 4 нереляционная форма хранения данных. 5 Современные технологии доступа... |
Многокритериальный выбор оптимальной системы управления базы данных... Одной из главных проблем разработки приложения баз данных является выбор системы управления базами данных (далее субд). Выбранная... |
||
Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin Лабораторный... Инструментарий веб-разработчика: Apache, php, Mysql, phpMyAdmin: Лабораторный практикум по дисциплине «Сети ЭВМ и телекоммуникации»... |
Тестовые вопросы и задания по дисциплине «Разработка Web приложений... Тестовые вопросы и задания по дисциплине «Разработка Web – приложений с использованием php и Mysql» |
||
Тема : «Основы Mysql» Ожидание следующей строки, сбор строкового выражения, начинающегося с одиночной кавычки |
Инструкция по сжатию и восстановлению базы данных Access в связи... В связи с тем, что субд ms access не предназначена для обработки большого количества записей (до 12 000), рекомендуется регулярно,... |
||
Техническое описание и инстpукция по эксплуатации Техническое описание и инструкция по эксплуатации содержит технические данные, описание принципа действия и устройства, а также сведения,... |
Структура программы на pl/sql Он представляет собой расширение языка sql и предназначен для работы с субд oracle |
Поиск |