Справочник по MySQL

FIELDS ENCLOSED BY 'с' Определяет символ для объединения символьной строки. Например, FIELD ENCLOSED BY '' будет означать, что строка, содержащая "this, value", "this", "value" , будет записана в базу как три поля: "this,value", "this", и "value". По умолчанию считается, что в файле не используются кавычки. FIELDS ESCAPED BY 'с' Определяет символ, указывающий на то, что символ, следующий за ним, является простым, даже если обычно он считался бы управляющим. Например, FIELDS ESCAPED BY ' приведет к тому, что строка "First, Second",Third, Fourth" будет прочитана как три поля: "First", "Second,Third" и "Fourth" . Исключением являются символы нуля. Например, если FIELDS ESCAPED BY имеет значение обратной косой черты, то \0 указывает на ASCII NULL (символ с номером 0), и \N указывает на значение null в MySQL. Символ обратной косой черты является значением по умолчанию для этого параметра. Обратите внимание, что MySQL рассматривает его как спецсимвол. И если вам необходимо использовать его в этом выражении, следует отделить его еще одной обратной косой чертой: FIELDS ESCAPED BY '\\' . LINES TERMINATED BY 'C' Определяет символ для указания на начало новой строки. Значением могут быть несколько символов. Например, при LINES TERMINATED BY '.', файл, состоящий из а, b, с, d, e, f, g, h, k. , будет прочитан как три отдельные записи, с тремя полями в каждой. По умолчанию используется символ новой строки. Это означает, что по умолчанию MySQL считает каждую строку отдельной записью. Ключевое слово FIELDS следует использовать только для всего выражения. Например: LOAD DATA INFILE data.txt FIELDS TERMINATED BY ','ESCAPED BY '\\'. По умолчанию, если прочитанное из файла значение совпадает с уже имеющимся и является при этом частью уникального ключа, будет выдана ошибка. Если в выражении есть ключевое слово REPLACE, значение из файла заменит имеющееся в таблице. Ключевое слово IGNORE приведет к игнорированию нового значения и сохранению старого. Найденное в файле слово NULL считается указанием на пустое значение, если только оно не выделено символами, указанными в команде FIELDS ENCLOSED BY . Использование одного символа для разных разделителей может смутить MySQL. Например, FIELDS TERMINATED BY ',' ENCLOSED BY ', ' приведет к непредсказуемому поведению. Если задан список столбцов, данные будут записаны именно в эти поля. Если столбцы не указаны, число полей в файле с данными должно совпадать с числом полей в таблице, и они должны идти в том же порядке, что и поля в таблице. Для выполнения этого оператора вы должны обладать правами SELECT и INSERT. Пример # Загрузить данные из файла 'mydata.txt' в таблицу 'mydata'. Считается, что поля отделены табуляцией и не заключены в кавычки.

LOAD DATA INFILE 'mydata.txf INTO TABLE mydata
#Загрузить данные из 'newdata.txt'. Найти два поля выделенных запятыми и вставить их значения в поля 'field"!' и 'field2' в таблице 'newtable'.
LOAD DATA INFILE 'newdata.txt' INTO TABLE newtable FIELDS TERMINATED BY
( field"!, -field2 )
LOCK LOCK TABLES name [AS alias] READ|WRITE [, name2 [AS alias] READ|WRITE, ...] Блокирует таблицу для ее использования отдельным потоком. В основном эта команда используется для эмуляции транзакций, как это описано в главе 7 «Другие СУБД среднего масштаба». Если поток создал блокировку READ, все остальные потоки могут читать из таблицы, но записывать в таблицу может только один, контролирующий поток. При создании блокировки WRITE ни один из остальных потоков не может ни читать, ни изменять таблицу. Одновременное использование заблокированных и незаблокированных таблиц может привести к зависанию потока. Вы должны заблокировать все таблицы, к которым осуществляется доступ во время блокировки. Этого не требуют таблицы, доступ к которым происходит только до или после блокирования. Последние версии MySQL выдадут ошибку при попытке доступа к незаблокированной таблице, если в это время имеются другие, блокированные таблицы. Пример # Заблокировать на запись таблицы 'table1' и 'table3'. Заблокировать любой доступ к таблице 'table2'. Также для таблицы 'table3'создать псевдоним 't3' для текущего потока.
LOCK TABLES table1 READ, table2 WRITE, tables AS t3 READ
OPTIMIZE OPTIMIZE TABLE name Обновляет таблицу, удаляя любое неиспользуемое пространство. Оптимизируемая таблица создается заново как отдельная временная таблица, а затем помещается на место текущей таблицы. Все табличные операции в это время происходят как обычно (вносимые изменения записываются во временную таблицу). Пример
OPTIMIZE TABLE mytable
REPLACE REPLACE INTO table [(column, ...)] VALUES (value, ....) REPLACE INTO table [(column, ...)] SELECT select_clause Вводит данные в таблицу, заменяя при этом все записи, вызывающие конфликт. Этот оператор аналогичен INSERT за исключением того, что при конфликте нового значения с существующим уникальным ключом новое значение будет записано вместо старого. Первый вариант оператора просто вставит указанные значения в указанные поля. Поля, значения которых не определены, получат значение по умолчанию либо NULL. Второй вариант вставляет в таблицу данные, полученные в результате запроса SELECT. Примеры # Вставить запись в таблицу 'people'.
REPLACE INTO people ( name, rank, senal_number )
VALUES ( 'Bob Smith', 'Captain', 12345 )
# Скопировать все записи, которые старше определенной даты, из таблицы 'data' в таблицу 'old_data'. Обычно за этим следует удаление старых записей из 'data'
REPLACE INTO old_data ( id, date, field )
SELECT ( id, date, field) FROM data WHERE date < 87459300
REVOKE REVOKE privilege [(column, ...)] [, privilege [(column, ...) ,..] ON table FROM user Отзывает права у пользователя. Значения privilege, table и user те же, что в операторе GRANT. У вас должно быть право GRANT для выполнения этого оператора. SELECT SELECT [STRAIGHTJOIN] [DISTINCT|ALL] value[, value2...] [INTO OUTFILE 'filename' delimiters] FROM table[, table2...] [clause] Выбирает данные из таблицы. Оператор SELECT является основным методом чтения данных из таблиц баз данных. Если вы укажете несколько таблиц, MySQL автоматически объединит таблицы таким образом, что вы сможете сравнить значения в них. В случае если MySQL недостаточно эффективно выполняет соединение, вы можете указать предикат (ключевое слово) STRAIGHT_JOIN и заставить сервер объединить таблицы в порядке, заданном в запросе. Если указано ключевое слово DISTINCT, будет показана только одна запись из каждой группы одинаковых записей возвращаемого набора. Ключевое слово ALL, напротив, выдаст все возвращенные записи. По умолчанию действует ALL. Возвращаемые значения могут быть следующего вида: Aliases Любые сложные имена столбцов или функций можно упростить, создав для них псевдонимы (alias). Внутри оператора SELECT к значению можно всегда обратиться по его псевдониму с любого места. (Например, SELECT DATE_FORMAT(date, "%W, %M %d %Y") as nice_date FROM calendar .) Column names Имена столбцов могут быть определены как column, table.column или database, table.column . Длинные формы необходимы только для того, чтобы отличать столбцы с одинаковыми именами, но их можно использовать в любое время (например, SELECT name FROM people; SELECT mydata.people.name FROM people ). Functions MySQL предлагает богатый выбор встроенных функций (см. ниже). Также всегда можно с помощью команды CREATE FUNCTION добавить пользовательские функции (например, SELECT COS(angle) FROM triangle). По умолчанию MySQL возвращает все результаты запроса пользователю, сделавшему этот запрос. Однако возможно и перенаправление результатов запроса в файл. Таким образом, можно сбросить содержимое таблицы (или выбранную из нее часть) в файл, который будет прочитан человеком либо отформатирован для легкой загрузки в другую СУБД. Спецификатор INTO OUTFILE 'filename' delimiters выполняет перенаправление. При его наличии результат запроса SELECT будет помещен в файл, указанный в filename. Формат этого файла определяется аргументами delimiters , которые практически те же, что у оператора LOAD DATA INFILE , но со следующими дополнениями:·К спецификатору FIELDS ENCLOSED BY можно добавить ключевое слово OPTIONALLY . MySQL будет в этом случае считать, что данные, заключенные в кавычки (или другие указанные символы), являются строками, а прочие данные примет за числовые.·Удаление всех разделителей полей (т. е. FIELDS TERMINATED BY ENCLOSED BY ' ' ) приведет к использованию формата с фиксированной шириной. Данные будут экспортированы в соответствии с экранными размерами каждого поля. Этот формат понимают многие настольные СУБД и электронные таблицы. По умолчанию при экспорте данных без разделителей будет внесено по одной записи на каждую строку, использовано разделение табуляцией и символ обратной косой черты (\) в качестве экранирующего символа. Список используемых таблиц может быть указан следующими способами: Table1, Таblе2, Таblе3, . . . Это самый простой метод. Таблицы соединяются так, как MySQL сочтет наиболее эффективным. Этот способ может быть также записан в виде: Table1 JOIN Table2 JOIN Таblе3..... , можно использовать ключевое слово CROSS, но оно не имеет эффекта (например, Table1 CROSS JOIN Table2 ). В объединенную таблицу войдут только те записи, которые отвечают условиям обоих столбцов. Например, запрос SELECT * FROM people, homes WHERE people. id=homes. owner создавал бы объединенную таблицу, содержащую записи из таблицы people , у которых значение поля id совпадает с полем owner в таблице homes. Как и значениям, именам таблиц тоже можно дать псевдонимы (например, SELECT tl.name, t2. address FROM long_table_name t1, longer_table_name t2). Tablel STRAIGHT_JOIN Table2 Идентично первому методу, за исключением того, что таблица слева всегда читается раньше таблицы справа. Этот метод следует ис- пользовать в случае, если MySQL выполняет сортировку неэффективно, соединяя таблицы в неправильном порядке. Table 1 LEFT [OUTER] JOIN Table2 ОN clause Сравнивает правую таблицу с выражением. Для каждой не соответствующей ему записи при соединении с левой таблицей будет использована запись, состоящая из значений NULL. В предыдущем примере SELECT * FROM people, homes LEFT JOIN people, homes ON people. id=homes. owner объединенная таблица содержала бы все записи, совпадающие в обеих таблицах, а также все записи таблицы people, которым нет соответствия в таблице homes; для соответствующих полей таблицы homes использовались бы значения NULL. Ключевое слово OUTER необязательно и не имеет эффекта. Tablel LEFT [OUTER] JOIN Table2 USING (column[, column2. . . ]) Объединяет указанные столбцы, только если они есть в обеих таблицах (например, SELECT * FROM old LEFT OUTER JOIN new USING (id) ). Tablel NATURAL LEFT [OUTER] JOIN Table2 Объединяет только те столбцы, которые существуют в обеих таблицах. Тот же эффект дает использование предыдущего способа с указанием всех столбцов, имеющихся в той и другой таблице. (Например, SELECT rich_people.salary, poor_people.salary FROM rich_people NATURAL LEFT JOIN poorjeople .) {oj Tablel LEFT OUTER JOIN Table2 ON clause } Это аналог выражения Table 1 LEFT JOIN Table2 ON clause, и поддерживается только для совместимости с ODBC («oj»заменяет «Outer Join»). Если выражение не задано, SELECT вернет все данные из выбранных таблиц (таблицы). Предложение отбора может содержать любые из следующих подфраз: WHERE statement Команда WHERE - это самый обычный способ выборки данных в SQL. Обычно фраза является сравнением какого-либо типа, но также может содержать любые из указанных ниже функций, кроме агрегатных. Также могут быть использованы имена, такие как имена столбцов и псевдонимы, числовые константы и строки. Поддерживаются следующие операторы: () Скобки используются для группировки операторов, чтобы указать старшинство. + Сложение двух числовых значений. - Вычитание двух числовых значений. * Умножение двух числовых значений. / Деление двух числовых значений. % Выдает модуль двух числовых значений (определение остатка). Осуществляет побитовое ИЛИ (OR) двух целочисленных значений. & Осуществляет побитовое И (AND) двух целочисленных значений. << Осуществляет побитовый левый сдвиг целочисленного значения. >> Осуществляет побитовый правый сдвиг целочисленного значения. NOT или ! Выполняет логическое НЕ (возвращает 1, если значение было 0, и наоборот). OR или || Выполняет логическое ИЛИ (возвращает 1, если любой из аргу-мещов не равен 0, иначе возвращает 1). AND или && Выполняет логическое И (вернет 0, если хоть один из аргументов равен 0, иначе вернет 1). = Выбирает запись, если значения совпадают. При сравнении MySQL автоматически производит преобразование типов. <> или != Выбирает запись, если значения не совпадают. <= Выбирает записи, в которых значение слева от операнда меньше или равно правому. < Выбирает запись, если левое значение меньше правого. >= Выбирает записи, где значение слева от операнда больше или равно правому. > Выбирает записи, в которых значение слева от операнда больше правого. value BETWEEN value1 AND value2 Выбирает записи, если value находится в диапазоне между valuel и value2 или равно одному из них. value IN (valuel,value2,... ) Выбирает записи, если value находится среди указанных значений. value NOT IN (value1, value2,.., ) Выбирает записи, если value не находится среди указанных значений. valuel LIKE value2 Сравнивает value1и value2 и выбирает записи, где они совпадают. Значение справа может содержать знак подстановки ' %', которому удовлетворяет любое число символов (включая 0) и знак '_', заменяющий ровно один символ. Это, возможно, самое употребительное в SQL сравнение. Чаще всего используется сравнение поля с некоторым символом и знаком подстановки (например, SELECT name FROM people WHERE name LIKE 'B%' ). valuel NOT LIKE value2 Сравнивает valuel и value2 и выбирает записи, где они не совпадают. Команда идентична NOT (valuel LIKE value2). valuel REGEXP/RLIKE value2 Сравнивает valuel и value2, используя расширенный синтаксис регулярных выражений, и выбирает записи, если они совпадают. Значение справа может содержать полные подстановочные выражения и конструкции Unix (например, SELECT name FROM people WHERE name RLIKE '^B. *'). valuel NOT REGEXP value2 Сравнивает valuel и value2, используя расширенный синтаксис регулярных выражений, и выбирает записи, если они не совпадают. Команда идентична NOT (valuel REXEXP value2). Предложение WHERE вернет все полученные в выражении значения, которые отличаются от 0 или NULL (т. е. все, что не является логически ложным). Поэтому SELECT age FROM people WHERE age>10 вернет только те записи, где возраст больше 10. GROUP BY column[, column2,...] Группирует вместе записи по значению данных в определенных столбцах, что позволяет выполнять агрегатные функции над столбцами columns (например, SELECT name, MAX(age) FROM people GROUP BY name ). HAVING clause Аналог выражения WHERE, но выполняется над уже полученными из базы данными. С помощью HAVING хорошо выполняются агрегатные функции над относительно небольшими наборами данных, -уже выбранными из больших таблиц. В этом случае будет идти работа не с целой таблицей, а только с выбранными данными (например, SELECT name, MAX(age) FROM people GROUP BY name HAVING MAX(age)>80 ). ORDER BY column [ASC |DESC][, column2 [ASC |DESC], . . . ] Сортирует возвращаемые данные по заданному столбцу (или столбцам). Если указать DESC, данные будут отсортированы по убыванию, иначе применяется сортировка по возрастанию. Сортировку по возрастанию можно задать и явным образом, указав ASC (например, SELECT name, age FROM people ORDER BY age DESC ). LIMIT [ start, ] rows Возвращает только указанное количество записей. Значение start (необязательное) определяет на количество записей, которые надо пропустить перед выборкой данных. Нумерация записей начинается с нуля. (Например, SELECT url FROM links LIMIT 5,10 возвращает адреса URL с 5 по 14.) PROCEDURE name В mSQL и ранних версиях MySQL команда ничего не выполняет. Она поддерживалась для облегчения импорта данных из других SQL-серверов. Начиная с версии MySQL 3.22 эта фраза позволяет указать процедуру, модифицирующую результаты запроса перед их возвратом клиенту. SELECT поддерживает концепцию функций. MySQL имеет ряд встроенных функций, способных оперировать с данными из таблиц, возвращая пользователю вычисляемое значение. Некоторые из функций могут вернуть значение как число или как строку, в зависимости от того, какой формат необходим пользователю. Эта возможность называется «контекстом» функции. Когда выбранные значения выводятся на дисплей, используется только текстовой контекст, но при вводе выбранных данных в поля таблиц или при использовании их в качестве аргументов других функций контекст зависит от того, что ожидается получателем данных. В частности, когда данные выбраны для их последующего ввода в поля числового типа, контекст функции будет числовым.

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...