- •1. История развития баз данных
- •3. Модели данных [1]
- •1. История развития баз данных
- •1.1. Файлы и файловые системы
- •1.2. Базы данных на больших эвм
- •1.3. Эпоха персональных компьютеров
- •1.4. Распределенные базы данных
- •1.5. Особенности настоящего периода:
- •2. Проблемы обработки информации
- •Основные функции субд
- •Типовая организация современной субд
- •3. Модели данных [1]
- •3.1. Системы управления файлами
- •3.2. Иерархические базы данных
- •3.3. Сетевые базы данных
- •3.4. Реляционные базы данных
- •Недостатки реляционных систем
- •3.5. Объектно-ориентированные базы данных
- •Преимущества и недостатки оосубд [8, с.817]
- •3.6. Объектно-реляционные базы данных
- •4. Реляционная модель данных [2]
- •5. Операции над отношениями
- •5.1. Теоретико-множественные операции реляционной алгебры
- •5.1.1 Объединение отношений
- •5.1.2. Пересечение отношений
- •5.1.3. Разность отношений
- •5.1.4. Расширенное декартово произведение
- •5.2. Специальные операции реляционной алгебры
- •5.2.1. Операция фильтрации
- •5.2.2. Операция проектирования
- •5.2.3. Операция условного соединения
- •5.2.4. Операция деления
- •5.2.5.Примеры использования операций реляционной алгебры
- •Целостность [8]
- •6. Проектирование бд Жизненный цикл бд
- •Проектирование бд
- •Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер
- •Структура сервера базы данных
- •Проектирование распределенных бд
- •11.1. Концепции распределенных баз данных
- •Этапы проектирования реляционной базы данных
- •6.1. Разработка технического задания
- •6.2. Разработка структуры бд
- •6.3. Нормализация
- •6.3.1. Первая нормальная форма
- •6.3.2. Вторая нормальная форма
- •6.3.3. Третья нормальная форма
- •6.3.4. Нормальная форма Бойса-Кодда
- •6.3.5. Четвертая и пятая нормальные формы
- •6.3.6. Денормализация
- •Проектирование реляционной базы данных на основе декомпозиции универсального отношения (плоской таблицы)
- •7.Язык запросов sql (Structured Query Language)
- •7.1. История развития
- •7.2. Как работает sql?
- •7.3. Интерактивный и встроенный sql
- •7.4. Типы данных
- •7.6. Оператор выбора select (MySql)
- •7.6.1. Предикаты предложения where
- •7.6.2. Примеры использования оператора select
- •7.6.3. Применение агрегатных функций и вложенных запросов в операторе выбора
- •8. Система управления базами данных (субд) MySql
- •8.1. Преимущества MySql перед другими субд. Недостатки
- •8.2. Инструментарий, поставляемый с MySql
- •8.3. Установка и завершение связи с сервером
- •8.4. Команды sql для MySql. Правила оформления листингов
- •8.5. Основы использования MySql
- •8.5.1. Замечания по организации работ с MySql
- •8.5.2. Программы MySql
- •8.5.2.1. Стандартные опции программ MySql
- •8.5.2.2. Конфигурационные файлы
- •8.5.2.3. Переменные среды
- •8.5.2.4. Клиенты mysql и mysqlc
- •Программирование приложений
- •Использование специализированных библиотек и встраиваемого sql
- •Odbc - открытый интерфейс к базам данных на платформе ms Windows
- •Jdbc - мобильный интерфейс к базам данных на платформе Java
- •9. Администрирование бд
- •9.1. Управление данными на предприятии
- •9.2. Основные функции dba
- •9.3. Администрирование в MySql [1])
- •9.3.1. Обеспечение доступности данных
- •9.3.2. Поддержание целостности данных
- •9.3.3. Подготовка к катастрофе
- •9.3.4. Поддержка пользователей
- •9.3.5. Разработка и внедрение стандартов
- •9.3.6. О хранении данных
- •9.3.6.1. Журнал транзакций
- •9.3.6.2. Журнальные файлы
- •9.3.7. Безопасность
- •9.3.7.1. Схемы привилегий
- •9.3.7.2. Задание привилегий
- •9.3.8. Оптимизация
- •9.3.8.1. Оптимизация запросов
- •9.3.8.2. Оптимизатор запросов
- •9.3.8.3. Выбор типа столбцов и эффективность запросов
- •9.3.8.4. Эффективная загрузка данных
- •9.3.8.5. Оптимизация для администратора
- •10. Транзакции и параллельные вычисления
- •10.1. Параллельные запросы
- •10.2. Транзакции
- •10.3. Уровни изоляции
- •10.4. Выполнение транзакций
- •10.5. Блокировки
- •10.6. Программные блокировки
- •Мониторы транзакций
- •12. Направления и тенденции развития баз данных
- •12.1. Ограничения реляционных систем
- •12.2. Особенности построения информационных хранилищ
- •Что достигается через использование технологии хранилищ данных?
- •Проблемы хранилищ данных
- •12.3. Olap-технология
- •Правила для olap-систем
- •12.3.1. Реляционные olap-системы
- •12.3.2. Многомерные olap-системы
- •12.3.3. Принципы построения многомерной базы данных
- •12.4. Oltp-технологии
- •13. Интеграция субд в среду Web
- •13.1. Публикация бд в Интернете
- •13.1.1. Общие концепции публикации бд в Интернете
- •13.1.2. Технологии публикации бд в Internet.
- •13.2. Сценарии JavaScript, jScript и vbScript
- •13.3. Элементы управления ActiveX
- •13.4. Апплеты и сервлеты Java
- •13.5. Интерфейсы
- •13.5.1. Интерфейсы cgi и WinCgi
- •13.5.2. Интерфейс isapi/nsapi
- •13.5.3. Asp, php, idc/htx-страницы
- •13.5.4. Формирование Web-страниц
- •13.5.5. Интерфейсы ole db, ado, odbc
- •13.6. Статическая публикация бд
- •13.7. Динамическая публикация бд
- •13.9. Протоколы передачи гипертекста
- •13.10. Универсальный указатель ресурсов
- •13.11. Состав и теги html-документа
- •13.15. Двухуровневые Web-приложения
- •13.16. Трехуровневые Web-приложения
- •13.17. Многоуровневые Web-приложения
- •13.18. Характеристики интерфейсов ole db, ado и odbc
- •Список использованной литературы
- •Приложения 1. Типы таблиц, поддерживаемых MySql
- •Приложение 2. Встроенные функции
- •Управляющие функции sql для MySql
- •Статистические функции
- •Математические функции
- •Строковые функции
- •Функции работы с датой и временем
- •Приложение 3. Инструкции языка sql для MySql
- •Приложение 4. Маленькая база для маленькой компании (OpenOffice_MySql) Приложение 5. MySql – начинающим администраторам Приложение 6. О метаданных
Приложение 3. Инструкции языка sql для MySql
При описании инструкций языка SQL используется общепринятая нотация. Элементы в квадратных скобках считаются необязательными. Если имеются альтернативные варианты, они разделяются символами вертикальной черты.
Инструкции языка даются в алфавитном порядке. Такой порядок изложения описывает возможности MySQL не лучшим образом. Однако определить оптимальную последовательность изучения вряд ли возможно, поскольку почти всегда при изложении возможностей той или иной инструкции придется делать ссылки на еще не описанные команды и опции.
Приведенный ниже материал раздела приводит данные о наиболее часто применяемых инструкциях (командах), а также некоторые основные предложения (опции) этих команд.
ALTER TABLE
Инструкция ALTER TABLE позволяет менять определение таблицы. Для выполнения команды необходимо наличие привилегий ALTER, CREATE, INSERT. Общий формат команды
ALTER [IGNORE] TABLE имя_таблицы
спецификация [,спецификация ...]
где спецификация:
ADD [COLUMN] определение [FIRST | AFTER столбец] ‑ добавляет столбец к таблице в конец, в начало или после указанного столбца;
ADD [COLUMN] (определение, определение,…) – добавляет группу новых столбцов. Определения столбцов разделяются запятыми.
ALTER [COLUMN] столбец { SET DEFAULT значение | DROP DEFAULT } ‑ устанавливает новое значение по умолчанию или отменяет старое;
CHANGE [COLUMN] столбец определение – меняет определение столбца;
DROP {[COLUMN] столбец | PRIMARY KEY | INDEX индекс} – удаляет столбец, первичный ключ или индекс из таблицы.
Команда ALTER TABLE может быть использована для изменения определения таблицы. ALTER TABLE работает с временно созданной таблицей, в которую копирует все данные из текущей таблицы. Когда копия готова, старая таблица удаляется, а новая переименуется в нее. Это выполнено таким способом, что все изменения автоматически переназначаются на новую таблицу.
Пока работает ALTER TABLE, старая таблица доступна для других клиентов. Обновления и запись в таблицу останавливаются и будут выполнены только после того, как новая таблица будет готова.
Флаг IGNORE заставляет программу MySQL игнорировать изменения, вносимые в таблицу. Если IGNORE не определен, то копирование будет прервано и процесс отработан назад в случае наличия любых уникальных ключей, дублированных в новой таблице.
Внимание!
ADD и CHANGE используют те же определения, что и CREATE TABLE. См. CREATE TABLE.
CHANGE столбец, DROP столбец и DROP INDEX являются MySQL расширениями ANSI SQL.
[COLUMN] ‑ факультативный параметр и может быть опущен.
Если вы удаляете столбец, который является частью составного ключа, то часть ключа будет удалена. Если все части ключа удалены, то будет удален весь ключ.
DROP PRIMARY KEY удаляет первый уникальный ключ в таблице.
CHANGE меняет определение столбца. Эта возможность не предусмотрена в стандарте SQL. Другие СУБД также допускают модификацию столбцов, однако MySQL наиболее гибка в этом плане.
Пример 1: Добавление столбцов в заданном порядке
ALTER TABLE address
ADD middlename VARCHAR(32) AFTER firstname,
ADD prefix VARCHAR(32) FIRST;
Пример 2: Добавление первичного ключа
ALTER TABLE address
ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
FIRST;
Пример 3: Добавление группы столбцов
ALTER TABLE address
ADD (
middlename VARCHAR(32),
prefix VARCHAR(32)
);
Пример 4: Задание значения по умолчанию
ALTER TABLE address
ALTER prefix SET DEFAULT ‘Mr.’;
Пример 5: Отмена значений по умолчанию
ALTER TABLE address
ALTER prefix DROP DEFAULT;
Пример 6: Изменение определения столбца
ALTER TABLE address
CHANGE prefix
prefix ENUM(‘Mr.’, ‘Mrs.’, ‘Miss’, ‘Ms’);
Пример 7: Удаление столбца
ALTER TABLE address
DROP middlename;
Пример 8: Изменение имени таблицы
ALTER TABLE address
RENAME addr;
CREATE DATABASE
Инструкция CREATE DATABASE создает базу данных. Синтаксис инструкции:
CREATE DATABASE [IF NOT EXISTS] имя_БД
В MySQL каждая база данных хранится в отдельном подкаталоге, поэтому при выполнении инструкции создается пустой каталог. Просмотреть список существующих баз данных можно с помощью инструкции SHOW DATABASES.
Пример:
CREATE DATABASE [IF NOT EXISTS] cars;
CREATE TABLE
Инструкция CREATE TABLE предназначена для создания таблиц. Это одна из наиболее сложных SQL-инструкций. Общий ее формат таков:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] имя
[(спецификация, ...)]
[опция…]
[[IGNORE | REPLACE] запрос_на_выборку]
TEMPORARY задает создание временной таблицы, существующей в течение текущего сеанса. По завершении сеанса таблица удаляется.
IF NOT EXIST подавляет вывод сообщений об ошибках в случаях, если таблица с указанным именем уже существует. Имени таблицы может предшествовать имя базы данных, отделенное точкой (например, Сессия.ФИО). Если это не сделано, таблица будет создана в базе данных, которая установлена по умолчанию.
Можно задать имя таблицы с пробелами, для этого следует заключить его в обратные кавычки (`имя таблицы`). То же самое нужно будет делать во всех ссылках на таблицу, т.к. пробелы используются для разделения идентификаторов.
Спецификации столбцов и индексов приводятся в круглых скобках и разделяются запятыми.
Спецификация имеет следующий формат:
Имя_столбца тип
[NOT NULL | NULL]
[DEFAULT значение]
[AUTO_INCREMENT]
[PRIMARY KEY]
[ссылка]
Спецификация типа включает название типа и его размерность. Варианты использования различных наиболее часто применяемых типов показаны ниже в примере.
У любого столбца есть значение по умолчанию, которое задается явно с помощью предложения DEFAULT или выбирается MySQL автоматически. Поля-счетчики, создаваемые с помощью AUTO_INCREMENT, игнорируют значения по умолчанию, т.к. в них записываются порядковые номера. Тип счетчика должен быть беззнаковым целым (например, INTEGER(10) UNSIGNED).
Спецификация PRIMARY KEY позволяет назначить столбец первичным ключом. При этом для столбца будет создан индекс.
В круглых скобках задаются спецификации не только столбцов, но также ограничений и индексов.
В конце инструкции CREATE TABLE может находиться запрос на выборку (в виде инструкции SELECT…). Результаты запроса на выборку будут занесены в создаваемую таблицу. Если в самой инструкции CREATE TABLE отсутствуют спецификации столбцов, то вид создаваемой таблицы будет соответствовать таблице результатов запроса. В противном случае столбцы результатов запроса будут добавлены к определенным ранее столбцам.
Для создания таблицы Вы должны иметь права доступа create.
Замечания:
Если столбец имеет дополнительное ключевое слово AUTO_INCREMENT, то при вставке значение нуля в этот столбец вы получите номер столбца, который на 1 больше, чем самый большой предварительно использованный номер.
Если Вы желаете начать отсчет не с нуля, просто вставьте желательное стартовое значение в первой записи, которую Вы вставляете в данную таблицу. В настоящее время нет никакого другого способа достичь этого эффекта.
ВНИМАНИЕ!
Если Вы используете AUTO_INCREMENT, Вы можете использовать его только в одном поле таблицы. Обратите внимание также, что это поле должно быть объявлено как первичный ключ, и должно быть числовым.
ZEROFILL означает, что значение дополняется слева нулями до максимальной длины поля.
Пример 1:
CREATE TABLE IF NOT EXISTS player
(
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT ZEROFILL,
name CHAR(8) NOT NULL,
password CHAR(8) NOT NULL,
date_insert DATE NOT NULL DEFAULT ‘2003-01-29’,
rank FLOAT(4, 2) NOT NULL DEFAULT 50.0,
region ENUM(‘North’, ‘South’, ‘East’, ‘West’) NOT NULL,
PRIMARY KEY (id),
INDEX (region, rank)
);
Пример 2:
CREATE TABLE IF NOT EXISTS otherbase.exams
SELECT * FROM mainbase
WHERE mainbase.mark=5;
CREATE INDEX
Инструкция CREATE INDEX добавляет индекс с указанным именем к заданной таблице. Формат
CREATE [UNIQUE | FULLTEXT] INDEX имя
ON таблица (столбец [(длина)], …)
UNIQUE обеспечивает создание индекса с уникальным значением по таблице таблица.
FULLTEXT обеспечивает создание индекса, используемого для поиска больших двоичных объектов.
DELETE
Инструкция DELETE удаляет записи из таблицы. Ее синтаксис:
DELETE [LOW_PRIORITY] FROM таблица
[WHERE условие]
[LIMIT число_записей]
Здесь условие имеет формат:
условие1 | условие2 [AND|OR] условие3
а любое из составляющих условий (1,2,3) имеет формат:
колонка [>|>=|=|<>|<=|<] колонка|константа or
колонка LIKE колонка|константа or
колонка IS NULL | колонка IS NOT NULL
В качестве условия в предложении WHERE допускается использование булевых выражений, составленных из произвольного числа выражений сравнения, объединяемых с помощью логических операторов.
LOW_PRIORITY откладывает операцию удаления до того момента, пока не завершатся все операции чтения таблицы.
LIMIT ограничивает число удаляемых записей.
Программа MySQL лишь помечает удаляемую строку как освобожденную. Пока она не будет затерта другой новой строкой, ее данные остаются на диске. Инструкция OPTIMIZE TABLE удаляет неиспользуемые строки и восстанавливает правильный формат таблицы, т.е. уничтожает неиспользуемые записи, соединяет разделенные строки и выполняет сортировку индексов.
Инструкция DELETE:
Возвращает количество обработанных записей.
Если она (инструкция) используется без WHERE, то таблица будет очищена. В этом случае DELETE вернет 0 для числа обработанных записей.
Замечания:
Все строки сравниваются без учета регистра. Если нужно сделать чувствительный к регистру поиск, можно использовать функцию BINARY, которая объявляет строку двоичной и позволяет учесть регистр при сравнении (например, where binary marka='ВАЗ').
Сравнение с явным NULL (столбец == NULL) эквивалентно условию IS NULL, то есть использованию (столбец IS NULL). Это было сделано для совместимости с mSQL.
Необходимо иметь права доступа delete для удаления записей.
Пример:
DELETE LOW PRIORITY FROM user
WHERE lastlogin < (NOW() – INTERVAL 30 DAY)
LIMIT 10;
Если нужно подсчитать число удаленных строк, можно использовать следующий прием:
Пример:
DELETE FROM tbl_name where 1>0;
Правда эта команда будет выполняться ощутимо медленнее.
DESCRIBE
Инструкция DESCRIBE возвращает таблицу, содержащую описание одного или нескольких столбцов заданной таблицы. Формат:
{DESCRIBE|DESC} таблица [столбец|условие отбора]
Описывает таблицу или столбец. Эта команда подобна команде SHOW. Факультативный параметр может быть именем столбца или строкой c условием отбора.
Если параметр - строка, то он может содержать символы подстановки.
DROP DATABASE
Инструкция DROP DATABASE удаляет базу данных из системы. Формат инструкции:
DROP DATABASE [IF EXISTS] имя_таблицы
Вместе с базой данных удаляются все таблицы и вся хранимая информация (в том числе индексы). Если каталог базы данных пуст, он также удаляется. Если в каталоге присутствуют посторонние файлы, то сама база данных останется. Удаление каталога файловой системы тоже приводит к удалению базы данных.
Вы должны иметь права доступа delete, чтобы использовать DROP.
DROP INDEX
Инструкция DROP INDEX удаляет индекс таблицы с указанным именем. Формат инструкции:
DROP INDEX имя ON таблица
DROP TABLE
Инструкция DROP TABLE удаляет все файлы, относящиеся к таблице. Она имеет следующий синтаксис:
DROP TABLE [IF EXISTS] таблица [, таблица ...]
Если Вы хотите только удалить все данные в таблице и сохранить ее структуру для будущего повторного заполнения, Вы можете использовать команду DELETE.
ОСТЕРЕГАЙТЕСЬ! DROP TABLE полностью удалит именованную таблицу(ы) из вашей системы. Не предусмотрено никакого UNDO или UNERASE (если Вы не имеете резервной копии, конечно).
Можно указывать несколько имен таблиц, разделяя их запятыми.
Вы должны иметь права доступа delete, чтобы использовать DROP.
Пример:
DROP TABLE IF EXISTS message, log
GRANT
Инструкция GRANT предоставляет указанным пользователям требуемые привилегии, создавая учетную запись пользователя в случае необходимости. Общий формат инструкции:
GRANT (ALL [PRIVILEGES])|(ALTER, CREATE, DELETE, DROP, FILE,
INDEX, INSERT, PROCESS, RELOAD, SELECT, SHUTDOWN, UPDATE,USAGE (список_столбцов))
ON таблица
TO пользователь[@узел] [IDENTIFIED BY пароль]
[, пользователь [IDENTIFIED BY пароль]...]
[WITH GRANT OPTION]
Некоторые основные привилегии
Тип |
Описание |
ALL [PRIVILEGES] |
Пользователю предоставляются все права, кроме права самостоятельной передачи привилегий |
ALTER |
Пользователь может изменять определение для таблиц |
CREATE |
Пользователь может создавать таблицы и базы данных |
DELETE |
Пользователь может удалять записи из таблиц |
DROP |
Пользователь может удалять таблицы и базы данных |
FILE |
Пользователь получает доступ к файлам на локальном диске и может выполнять репликацию |
INDEX |
Пользователь может добавлять и удалять индексы |
INSERT |
Пользователь может добавлять записи в таблицу |
PROCESS |
Пользователь может просматривать список активных потоков и удалять потоки |
RELOAD |
Пользователь может очищать кэш-буферы |
SELECT |
Пользователь может создавать запросы к таблицам |
SHUTDOWN |
Пользователь может останавливать работу сервера |
UPDATE |
Пользователь может изменять значения столбцов таблицы |
USAGE |
Пользователь не имеет никаких прав и может лишь регистрироваться на сервере |
Привилегии выдаются в зависимости от контекста:
‑ глобально,
‑ для конкретной базы,
‑ для таблицы или столбца.
В предложении ON возможно использование метасимвола *, соответствующего всем объектам диапазона.
Примеры использования метасимволов:
base.* ‑ соответствует выдаче привилегий для всех таблиц базы данных base.
*.* ‑ соответствует всем базам данных и всем таблицам, т.е. привилегии являются в этом случае глобальными.
Имя пользователя user[@узел] – это строка длиной не более 16 символов. Если вслед за именем стоят символ @ и сетевое имя, то привилегия применима только тогда, когда пользователь регистрируется на сервере с указанного компьютера. Если в именах пользователя и компьютера содержатся метасимволы, имена надо заключать в кавычки.
Вместо сетевого имени может стоять и IP-адрес. Если же узел не указан, то информация об узле вообще не будет учитываться.
Предложение IDENTIFIED BY задает пароль пользователя. Если учетная запись пользователя уже существует, его пароль меняется.
Спецификация WITH GRANT OPTION разрешает пользователю предоставлять имеющиеся привилегии другим пользователям.
Список привилегий для пользователя выводится инструкцией SHOW GRANTS.
Пример:
GRANT SELECT, INSERT, UPDATE, DELETE
ON store.*
TO gwb@’%.whitehowse.gov’
WITH GRANT OPTION
INSERT
Инструкция INSERT добавляет записи в таблицу. Ее синтаксис:
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] таблица [(столбец, …)]
{VALUES (значение, …),(…), … | запрос | SET столбец=значение, …}
LOW_PRIORITY означает, что операция вставки должна быть отложена до окончания всех операций чтения. Во время вставки на таблицу накладывается жесткая блокировка, разрешающая доступ к таблице для чтения и записи только потоку-владельцу.
После ключевого слова VALUES в скобках приводится набор значений, разделенных запятыми, соответствующих одной записи. Разрешается в одном предложении VALUES вводить значения сразу для нескольких записей (набор значений для каждой записи в отдельных скобках), что запрещено в стандарте.
Флаг IGNORE подавляет вывод сообщений об ошибках, выдаваемых в случае обнаружения дубликатов. При наличии флага дублирующая запись будет отброшена и операция продолжится.
Пример:
INSERT IGNORE INTO team (name)
VALUES (‘ЦСКА’, ‘Спартак’, ‘Динамо’);
KILL
Инструкция KILL разрывает соединение с базой данных. Ей передается идентификатор потока:
KILL поток
Все потоки пронумерованы. Инструкция SHOW PROCESSLIST отображает список активных потоков. Обычно пользователь имеет право уничтожать только свои собственные потоки, но с помощью привилегии PROCESS ему можно удалять любые потоки.
LOAD DATA INFILE
Инструкция LOAD DATA INFILE читает данные из текстового файла и вставляет их в указанную таблицу. Неполный формат инструкции:
LOAD DATA [LOW PRIORITY] [LOCAL] INFILE файл
INTO TABLE таблица
[FIELDS [TERMINATED BY разделитель]…
[ENCLOSED by ‘ ” ’]
[ESCAPED BY ‘\\’]]
[LINES TERMINATED BY признак_конца_строки]
[IGNORE число_строк LINES]
[(список_колонок)]
LOW PRIORITY означает, что процесс импорта данных должен быть отложен, пока не завершатся все операции чтения таблицы.
При отсутствии LOCAL файл открывается на сервере, в противном случае – в клиентской файловой системе. Для открытия файла на сервере следует иметь привилегию FILE.
Файл предполагает задание полного путевого имени файла. Неполные путевые имена вычисляются относительно каталога данных MySQL.
TERMINATED BY разделитель – указывает разделитель полей,
LINES TERMINATED BY признак_конца_строки – задает конечный символ строки.
ENCLOSED by – задает символ (обычно кавычку), который задается для дополнительного обособления значений.
ESCAPED BY ‘\\’ – задает символ, который будет отменять специальное назначение управляющих символов. Ограждающие символы разрешается просто удваивать. Например, если все поля файла заключены в двойные кавычки, то для вставки такой кавычки в поле можно записать “”, \”.
С помощью предложения IGNORE…LINES можно пропустить требуемое число строк файла (например, заголовки в импортируемых файлах).
Пример 1
LOAD DATA INFILE ‘/tmp/teams.txt’
INTO TABLE team
FIELDS TERMINATED by ‘\t’ /*Табуляция*/
ENCLOSED by ‘ ” ’ /*Двойные кавычки*/
ESCAPED BY ‘\\’
LINES TERMINATED BY ‘\r\n’ /*Возврат кар-ки, нов строка*/
IGNORE 1 LINES
(Name, id)
Пример 2 (Если значения разделены между собой запятыми, а поля заключены в двойные кавычки)
LOAD DATA LOCAL INFILE “my_tbl.txt” INTO TABLE my_tbl
FIELDS TERMINATED BY “,” ENCLOSED BY “\””
LOCK TABLES
Инструкция LOCK TABLES запрещает другим потокам осуществлять запись в ту или иную таблицу. Синтаксис инструкции:
LOCK TABLES таблица [AS псевдоним]
{READ [LOCAL] | [LOW_PRIORITY] WRITE}
[, таблица [AS псевдоним] {READ [LOCAL] | [LOW_PRIORITY] WRITE}
Инструкция ожидает бесконечно долго, пока требуемые блокировки не будут получены. В ней указывается список имен таблиц, разделенных запятыми, После каждого имени задается тип блокировки:
READ (нежесткая) – запрещает запись в таблицу всем потокам, включая тот, кому она принадлежит,
WRITE (жесткая) – разрешает доступ к таблице для чтения и записи только потоку-владельцу.
LOCAL – разрешает выполнять инструкции INSERT, не приводящие к конфликтам. Но тогда файлы с табличными данными становятся доступными для записи и появляется угроза нарушения целостности данных.
LOW_PRIORITY – жесткая блокировка будет представлена только тогда, когда нет отложенных нежестких блокировок. Обычно же приоритет жестких блокировок выше, чем у нежестких.
Пример:
LOCK TABLES team t READ, record r WRITE;
SELECT @max:=MAX(Score) FROM team t;
INSERT INTO record VALUES (NOW(), @max);
UNLOCK TABLES;
В примере блокируются две таблицы, Из таблицы team извлекается максимальное значение поля Score, которое заносится в переменную @max. Далее это значение заносится в таблицу record, после чего обе таблицы разблокируются.
Обратите внимание! В инструкцию SELECT встроен оператор присваивания (:=), который присваивает переменной @max значение поля Score.
Для снятия блокировок предназначена инструкция UNLOCK TABLES. Кроме того, блокировки снимаются при завершении потока или вводе другой инструкции LOCK TABLES.
С блокировками связаны также функции GET_LICK() и RELEASE_LOCK().
REPLACE
Инструкция REPLACE аналогична инструкции INSERT, за исключением того, что дублирующиеся записи заменяют собой существующие.
REPLACE [LOW_PRIORITY | DELAYED]… [INTO] таблица [(столбец, …)]
{VALUES (значение, …),(…), … | запрос | SET столбец=значение, …}
REVOKE
Инструкция REVOKE отменяет привилегии, выданные ранее инструкцией GRANT. Ее формат такой же, как и у инструкции GRANT:
REVOKE тип [(столбец), …)] [, тип [(столбец, …)] …]
ON таблица
FROM пользователь [, пользователь …]
Типы привилегий те же, что и для инструкции GRANT. Инструкция REVOKE должна соответствовать определенному контексту и распространяет свое действие глобально, на базу данных, таблицу или столбцы.
Привилегии с более узким или более широким контекстом не затрагиваются.
Пример:
REVOKE INSERT, DELETE, UPDATE ON samp_db.member
FROM member_mgr@boa.snake.net
SET
Инструкция SET меняет значения опций и переменных. Синтаксис инструкции:
SET [OPTION] параметр=значение [, параметр=значение]…
Устанавливаемые значения действительны лишь в течение текущего сеанса и по его завершении сбрасываются.
Пример:
SET @text=”Проба”;
SHOW
Инструкция SHOW отображает различную информацию о базе данных MySQL. Формат инструкции для различных вариантов использования:
SHOW [COLUMNS|FIELDS] FROM таблица [FROM база_данных] ‑
[LIKE шаблон]
возвращает описание столбцов таблицы; возвращается таблица со столбцами:
-имя столбца таблицы;
-тип столбца;
- может или нет содержать значение NULL;
-является ли столбец индексируемым;
-значение по умолчанию;
-дополнительная информация о столбце;
-привилегии, выделенные для столбца.
SHOW CREATE TABLE таблица –
возвращает описание запроса, который необходим для создания указанной таблицы.
SHOW DATABASES [LIKE шаблон] ‑
возвращает список баз данных на сервере;
Пример:
SHOW DATABASES LIKE “test%”
SHOW GRANTS FOR пользователь ‑
выводит список привилегий для пользователя;
Пример 1:
SHOW GRANTS FOR Ivanov
Пример 2:
SHOW GRANTS FOR root@localhost
SHOW {INDEX | KEYS} FROM таблица [FROM база_данных] ‑
возвращает информацию об индексах таблицы;
SHOW [MASTER | SLAVE] STATUS [LIKE шаблон] ‑
возвращает статистическую информацию о сервере. Флаги MASTER или SLAVE указывают на то, что информация выдается соответственно о главном или подчиненном сервере;
SHOW TABLES [FROM база_данных] [LIKE шаблон] ‑
возвращает список таблиц в базе;
SHOW TABLE STATUS [FROM база_данных] [LIKE шаблон] ‑
выводит статусную информацию о таблицах;
-имя таблицы,
-тип таблицы,
-формат хранения строки,
-число строк в таблице,
-среднее число байт на строку,
-размер файла в байтах,
-время создания таблицы,
-время последнего изменения таблицы,
-…
Пример:
SHOW TABLE STATUS FROM mysql LIKE %priv
SHOW VARIABLES [LIKE шаблон] ‑
возвращает список серверных переменных.
При составлении шаблона (в правом операнде) метасимвол '%' соответствует произвольному числу символов, а метасимвол '_' – одиночному символу.
UPDATE
Инструкция изменяет содержимое строк таблицы. Изменению подлежат строки, выбранные с помощью определенного в предложении WHERE выражения.
Формат команды
UPDATE [LOW_PRIORITY] таблица
SET колонка=выражение [, колонка1=выражение1] …
[WHERE условие] [LIMIT n]
LOW_PRIORITY означает, что инструкция не выполняется до тех пор, пока все клиенты не перестанут читать таблицу.
n в предложении LIMIT определяет максимальное число строк, которые будут обновлены.
USE
Инструкция USE задает базу данных, используемую по умолчанию:
USE база_данных
В последующих инструкциях все таблицы, имена которых приведены в коротком формате, будут считаться принадлежащими к этой базе данных.
