Справочник по MySQL
Falk0ner, вс, 06/07/2008 - 15:34.
Для выполнения этой операции необходимо право DROP на таблицу. DROP - это, возможно, самое опасное из выражений SQL. Если вы имеете право на выполнение команд DROP, вы можете полностью стереть таблицу или даже целую базу данных. Это произойдет без предупреждения или запроса на подтверждение. Единственный способ отменить DROP - восстановление базы из резервной копии. Мораль отсюда такова: (1) всегда сохраняйте резервную копию базы (backup); (2) если в чем-то не уверены, - не используйте DROP; и (3) всегда сохраняйте резервную копию базы данных. Примеры # Полностью стереть с лица Земли БД 'important_data'.
DROP DATABASE important_data
# Удалить таблицы 'oh_no', 'help_me' и 'dont_do_it'
DROP TABLE oh_no, help_me, dont_do_it
#Удалить индекс с именем 'my_index' DROP INDEX my_index
# Удалить из работающего сервера БД функцию 'myfunc'. Она может быть
# добавлена обратно в любой момент с помощью CREATE FUNCTION.
DROP ФУНКЦИЯ myfunc
EXPLAIN
EXPLAIN SELECT statement
Выводит информацию о структуре и порядке выполнения запроса SELECT. Это может быть полезно для определения эффективности использования ключей.
Пример
EXPLAIN SELECT customer.name, product.name FROM customer, product,
purchases
WHERE purchases.customer=customer.id AND purchases.product=product.id
FLUSH
FLUSH option[, option...]
Перезапускает различные внутренние процессы или сбрасывает данные на диск, в зависимости от указанного параметра. Для выполнения этой операции необходимо иметь право reload . Допустимы следующие параметры:
HOSTS
Обнуляет таблицу в кэше, хранящую информацию об именах клиентских хостов. Этот параметр следует использовать, если клиент поменял IP-адрес или есть ошибки, касающиеся установки связи с хостом.
LOGS
Закрывает все обычные файлы журналов и открывает их заново. Используется при смене номера индексного дескриптора. Если обновленному журналу не дано особое расширение, новый файл будет иметь расширение, увеличенное на единицу.
PRIVILEGES
Перезагружает все внутренние таблицы разрешений MySQL. Это делается для вступления в силу любых изменений, сделанных в этих таблицах.
STATUS
Обнуляет все переменные, которые следят за состоянием сервера.
TABLES
Закрывает все открытые таблицы и сбрасывает все кэшированные данные на диск.
GRANT
purchases
WHERE purchases.customer=customer.id AND purchases.product=product.id
GRANT privilege [ (column, ...) ] [, privilege [( column, ...) ] ...]
ON {table} TO user [IDENTIFIED BY 'password']
[, user [IDENTIFIED BY 'password'] ...] [WITH GRANT OPTION]
До версии MySQL 3.22.11 оператор GRANT распознавался, но не выполнялся. В текущих версиях функциональность присутствует. Этот оператор дает пользователю (или пользователям) права доступа. Возможно предоставление прав доступа на базу данных, таблицу или на отдельный столбец. Параметр table может быть указан как имя таблицы в текущей базе; как '*', и тогда будут предоставлены права на все таблицы текущей базы; как '*. *' - права на все таблицы во всех имеющихся базах; или как 'database. *', что будет иметь эффект для всех таблиц указанной базы данных.
В настоящий момент поддерживаются следующие права:
ALL PRIVILEDGES/ALL
Все права доступа.
ALTER
Изменение структуры таблиц.
CREATE
Создание новых таблиц.
DELETE
Удаление записей из таблиц.
DROP
Удаление таблиц целиком.
FILE
Создание и удаление целых БД, а также управление файлами журналов.
INDEX
Создание и удаление индексов в таблицах.
INSERT
Ввод данных в таблицы.
PROCESS
Завершение потоков.
REFERENCES (Справочник)
Пока не реализовано.
RELOAD
Обновление различных внутренних таблиц (см. оператор FLUSH).
SELECT
Чтение данных из таблицы.
SHUTDOWN
Выключение (Shut down) сервера базы данных.
UPDATE
Модификация записей внутри таблиц.
USAGE
Нет никаких прав.
Переменная user имеет вид user@hostname (пользователь@имя хоста). И user, и hostname могут включать в себя знаки подстановки SQL. При их использовании должно быть заключено в кавычки либо полностью имя, либо только часть с подстановочными знаками (например, joe@"%. com" и «joe@%.com» одинаково правильны). Использование user без hostname равносильно использованию user@«%».
Если у вас есть право GRANT, вы можете указать необязательный параметр INDENTIFIED BY . Если описываемого пользователя не существует, он будет создан вместе с указанным паролем. Иначе будет изменен пароль существующего пользователя.
Право GRANT задается с помощью спецификатора WITH GRANT OPTION . После его выполнения пользователь сможет предоставить любое из имеющихся у него прав другому пользователю.
INSERT
ON {table} TO user [IDENTIFIED BY 'password']
[, user [IDENTIFIED BY 'password'] ...] [WITH GRANT OPTION]
INSERT [DELAYED | LOW_PRIORITY ] [INTO] table [ (column, ...) ] VALUES ( values )
[, ( values )... ]
INSERT [LOW_PRIORITY] [INTO] table [ (column, ...) ] SELECT ...
INSERT [LOW_PRIORITY] [INTO] table SET column=value, column=value,...
Записывает данные в таблицу. Первый вариант оператора просто вставит указанные значения в указанные столбцы. Поля, значения которых не определены, получат значение по умолчанию либо NULL. Второй вариант вставляет в таблицу результат запроса SELECT. Третий вариант является альтернативной формой первого, с более явным указанием того, каким полям какое, значение придать. Если INSERT первого вида написан со спецификатором DELAYED, все входящие запросы SELECT имеют приоритет перед оператором INSERT, он будет ждать окончания их действия перед добавлением данных. Таким же образом использование спецификатора LOW_PRIORITY с любой из форм INSERT приведет к тому, что добавление записей будет отложено до окончания всех других операций клиента.
Невозможно применить выражение ORDER BY вместе с запросом SELECT, используемым внутри оператора INSERT. Также вы не можете добавлять данные в таблицы, из которых осуществляется выборка. Начиная с версии 3.22.5 MySQL позволяет вставлять более одной записи в таблицу за один раз. Это делается путем добавления дополнительного списка значений, разделенных запятыми.
У вас должно быть право INSERT для использования этого оператора.
Примеры
# Вставить запись в таблицу 'people'
[, ( values )... ]
INSERT [LOW_PRIORITY] [INTO] table [ (column, ...) ] SELECT ...
INSERT [LOW_PRIORITY] [INTO] table SET column=value, column=value,...
INSERT INTO people ( name, rank, serial_number )
VALUES ( 'Bob Smith', 'Captain', 12345 );
# Скопировать все записи, которые старше определенной даты, из таблицы 'data' в таблицу 'old_data'. Обычно за этим следует удаление старых записей из 'data'.
VALUES ( 'Bob Smith', 'Captain', 12345 );
INSERT INTO old_data ( id, date, field ) SELECT ( id, date, field)
FROM data WHERE date < 87459300;
# Вставить З новые записи в таблицу 'people'.
FROM data WHERE date < 87459300;
INSERT INTO people (name, rank, serial_number )
VALUES ( 'Tim OVReilly', 'General', 1),
('Andy Oram', 'Major', 4342),
('Randy Yarger', 'Private', 9943);
KILL
KILL thread_id
Завершает указанный поток. ID потоков можно выяснить с помощью оператора SHOW PROCESSES . Завершение потоков, которые принадлежат не вам, а другим пользователям, требует права process .
Пример
# Завершить поток 3
VALUES ( 'Tim OVReilly', 'General', 1),
('Andy Oram', 'Major', 4342),
('Randy Yarger', 'Private', 9943);
KILL 3
LOAD
LOAD DATA [LOCAL] INFILE file [REPLACE|IGNORE] INTO TABLE table [delimiters] [(columns)]
Читает текстовый файл и вставляет данные в таблицу. Такой метод ввода данных гораздо быстрее, чем использование многих операторов INSERT. Хотя эта команда может быть вызвана с любого клиента, как и все остальные операторы SQL, считается, что указанный в предложении файл находится на сервере. Если путь к файлу полностью не указан, MySQL ищет его в том же каталоге, где расположена база данных. В версии MySQL3.22, при наличии спецификатора LOCAL, файл будет прочитан из локальной файловой системы клиентской машины.
Без указанных разделителей (delimiters) оператор LOAD DATA INFILE будет считать, что текстовые поля в файле разделены символом табуляции, особые символы набраны через обратную косую черту (так называемый бэкслэш - «\»), и строки заканчиваются символом конца строки.
Также можно указать собственные разделители с помощью следующих ключевых слов:
FIELDS TERMINATED BY 'с'
Определяет символ, используемый для разделения полей. Чтобы указать специальные символы, можно использовать стандартные управляющие коды языка С. Значение может содержать более одного символа. Например, FIELDS TERMINATED BY ', ' означает файл, разделенный запятыми, a FIELDS TERMINATED BY '\t' обозначает разделения табуляцией. Разделение табуляцией является значением по умолчанию.
Отправить комментарий