Платформы корпоративных информационных систем


SELECT



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 имеет ряд встроенных функций, способных оперировать с данными из таблиц, возвращая пользователю вычисляемое значение. Некоторые из функций могут вернуть значение как число или как строку, в зависимости от того, какой формат необходим пользователю. Эта возможность называется «контекстом» функции. Когда выбранные значения выводятся на дисплей, используется только текстовой контекст, но при вводе выбранных данных в поля таблиц или при использовании их в качестве аргументов других функций контекст зависит от того, что ожидается получателем данных. В частности, когда данные выбраны для их последующего ввода в поля числового типа, контекст функции будет числовым.

Далее приведены все встроенные в MySQL функции:

ABS(number)

Возвращает абсолютное значение числа number (например, ABS (-10) возвращает 10).

АCOS(number)

Возвращает арккосинус числа number в радианах (например, ACOS (0) возвращает 1.570796).

ASCII(char)

Возвращает ASCII код данного символа (например, ASCII (' h') вернет 104).

ASIN(number)

Возвращает арксинус числа number в радианах (например, ASIN (0) вернет 0.000000).

ATAN(number)

Возвращает арктангенс числа number в радианах (например, ATAN (1) вернет 0.785398).

ATAN2(X, Y)

Возвращает арктангенс точки (X, Y) (например, ATAN (-3,3) возвращает-0.785398).

СHAR(num1[,num2,. . .])

Возвращает строку, полученную в результате преобразования каждого из чисел в знак, соответствующий числовому ASCII коду (например, CHAR (122) возвращает'z').

CONCAT(string 1, string2 [, strings,. . . ])

Возвращает строку, сформированную соединением всех аргументов (конкатенация) (например, CONCAT('Hi',' ','Mom','!') вернет «Hi Mom!»).

CONV( number, basel, base2 )

Возвращает значение числа number, переведенного из системы счисления basel в base2. Число должно быть целочисленным (может быть задано собственно числом либо строкой). Система счисления задается любым целым числом от 2 до 36 (например, CONV (8,10,2) возвращает 1000 (число 8 в десятичной системе, приведенное к двоичному виду)).

BIN( decimal)

Возвращает двоичное значение указанного десятичного числа decimal. Это эквивалент функции CONV (decimal, 10,2) (например, BIN(8) вернет 1000).

BIT_COUNT( number)

Возвращает число битов, установленных в 1 в двоичном представлении числа (например, BIT_COUNT (17) возвращает 2).

CEILING( number)

Возвращает наименьшее целое число, которое больше или равняется указанному числу number (например, CEILING (5.67) возвратит 6).

COS( radians )

Возвращает косинус заданного в радианах числа number (например, COS(O) вернет 1. 000000).

СОТ( radians)

Возвращает котангенс числа number, заданного в радианах (например, СОТ(1) вернет 0.642093).

CURDATE()/CURRENT_DATE()

Возвращает текущую дату. При использовании в числовом контексте возвращается число вида YYYYMMDD , иначе вернется строка вида'YYYY-MM-DD' (например, CURDATE() может вернуть «1998-08-24»).

CURTIME()/CURRENT_TIME()

Возвращает текущее время. При использовании в числовом контексте возвращается число вида HHMMSS, иначе возвращается строка вида НН: ММ: SS (например, CURRENT_TIME() может вернуть 13:02:43).

DATABASE()

Возвращает имя текущей базы данных (например, DATABASE() может вернуть «mydata»).

DATE_ADD(date, INTERVAL amount type )/ADDOATE(date, INTERVAL amount type )

Возвращает дату, сформированную добавлением заданного количества времени к указанной дате. Добавляемое время может быть представлено одним из следующих типов: SECOND, MINUTE, HOUR, DAY, MONTH, YEAR, MINUTE_SECOND (как «минутьпсекунды»), HOUR_MINUTE (как «часы:минуты»), DAY_HOUR (как «дни часы»), YEAR_MONTH (как «годы-месяцы»), HOUR_SECOND (как «часы:минуты:секунды»), DAY_MINUTE (как «дни часы:минуты») и DAY_SECOND (как «дни часы:минуты:секунды»). За исключением указанных выше типов, amount должно быть целым значением. (Например, DATE_ADD("1998-08-24 13:00:00", INTERVAL 2 MONTH) вернет «1998-10-24 13:00:00».)

DATE_FORMAT( date, format )

Возвращает дату в указанном формате. Строка формата печатается в том виде, в каком задана, с выполнением следующих подстановок:


Сокращенное название дня недели (Sun, Mon и т. д.).

%b

Сокращенное название месяца (Jan, Feb и т. д.).

%D

День месяца с порядковым индексом (1-й, 2-й, 3-й и т. д.).

%d

День месяца.


24-часовый час (всегда две цифры, например 01).

%h/%I

12-часовый час (всегда две цифры, например 09).

%i

Минуты.

%j

День года.

%k

24-часовый час (одна или две цифры, например 1).

%1

12-часовый час (одна или две цифры, например 9).


День месяца.

%m

Номер месяца (1 - это январь).


AM или РМ.

%r

12-часовое полное время (включая АМ/РМ).

%S

Секунды (всегда две цифры, например 04).

%s

Секунды (одна или две цифры, например 4).


24-часовое полное время.

%U

Неделя года (новая неделя начинается с воскресенья).

%W

Название дня недели.

%w

Номер дня недели (0 - это воскресенье).

%Y

Четырехзначный год.


Год, две цифры.

%%

Символ « % ».

DATE_SUB( date, INTERVAL amount type )/SUBDATE( date, INTERVAL amount type )

Возвращает дату, сформированную вычитанием указанного количества времени из указанной даты. Используются те же самые типы, что и в команде DATE_ADD (например, SUBDATE(" 1999-05-20 11:04:23", INTERVAL 2 DAY) возвращает «1999-05-18 11:04:23»).

DAYNAME( date,)

Возвращает название дня недели для указанной даты (например,

DAYNAME(' 1998-08-22')

возвращает «Saturday»).

DAYOFMONTH( date)

Возвращает значение дня месяца для указанной даты (например, DAYOFMONTHC1998-08-22') возвращает 22).

DAYOFWEEK( ctete)/WEEKDAY( date)

Возвращает номер дня недели (1 - это воскресенье) для указанной даты (например, DAY_ OF_WEEK('1998-08-22') возвращает 7).

DAYOFYEAR( date)

Возвращает день года для указанной даты (например, DAYOFYEAR ('1983-02-15') возвращает 46).

DEGREES( radians )

Возвращает данный аргумент, конвертированный из радианов в градусы (например, DEGREES(2 *PI()) возвращает 360.000000).

ELT(number, string1, string2, . . . )

Возвращает string?, если number равно 1, string2, если number равно 2, и т. д. Если число number не соответствует ни одной строке, возвращается NULL (например, ELT(3, "once", "twice", "thrice", "fourth") возвращает «thrice»).

ENCRYPT( string[, salt])

Шифрует, ставит пароль на данную строку. Если указана база для шифрования salt, она используется при генерации пароля (например, ENCRYPT('mypass', 'За') может вернуть «3afi4004idgv»).

ЕХР(power)

Возвращает число е, возведенное в указанную степень (например, ЕХР(1) возвращает 2.718282).

FIELD( string, string1, string2, . . . )

Возвращает позицию аргумента (начиная со stringl) в списке аргументов, который совпадает со string. Вернет 0, если совпадений нет (например, FIELD( 'abe', 'деогде', 'John', 'abe', 'bill') возвращает 3).

FINO_IN_SET( string, set)

Возвращает позицию string в наборе set. Аргумент set — это набор строк, разделенных запятыми (например, FIND_IN_SET ('abe', 'деогде, John, abe, bill') возвращает 3).

FLOOR( number)

Возвращает наибольшее целое число, которое меньше или равно number (например, FLOOR (5.67) возвращает 5).

FORMAT( number, decimals )

Аккуратно форматирует заданное число, используя заданную длину дробной части (например, FORMAT(4432.99134,2) возвращает «4,432.99»).

FROM_DAYS( days)

Возвращает дату, заданную числом дней (где день 1 - это первое января первого года) (например, FROM_DAYS(728749) вернет «1995-04-02»).

FROM_UNIXTIME( seconds [, format])

Возвращает дату (GMT), соответствующую указанному числу секунд, прошедших с начала отсчета (1-е января 1970 г. GMT). Если определен формат (с использованием тех же параметров, что и в команде DATE_FORMAT ), возвращаемое время форматируется соответствующим образом (например, FROM_UNIXTIME(903981584) возвращает «1998-08-24 18:00:02»)-

GET_LOCK( name, seconds )

Создает определяемую пользователем блокировку, которая ждет заданное количество секунд до таймаута. Ее можно использовать в клиентском приложении для выполнения блокирования в программах, которые используют одинаковые имена блокировок. Если блокировка прошла успешно, возвращается 1. Если время ожидания истекло, вернется 0. При остальных ошибках вернется значение NULL. Возможна только одна активная блокировка для одной сессии. Повторный запуск GET_LOCK() удалит любую предыдущую блокировку без предупреждения (например, GET_ LOCK("mylock", 10) может вернуть 1 в течение 10 секунд).

GREATEST (num 1, num2[, numЗ, . . . ])

Возвращает наибольший из всех имеющихся аргументов (например, GREATEST(5, 6, 68,1,4) возвращает 68).

НЕХ(decimal )

Возвращает шестнадцатеричное значение указанного десятичного числа. Эквивалент функции CONV(decimal, 10,16) (например, НЕХ(90) возвращает «За»).

HOUR(time)

Возвращает час из указанной даты (например, HOUR('15:33:30') возвращает 15).

IF(test, value1, value2 )

Если test истинно, возвращает valuel, иначе возвращает value2. Значение test должно быть целочисленным, поэтому числа с плавающей запятой следует использовать после преобразования их к типу integer (например, IF(1>0, "true", "false") возвращает true).

IFNULL( value, value2 )

Возвращает value, если оно не равно null, иначе возвращает value2 (например, IFNULL(NULL, "bar") возвращает «bar»).

INSERT( string, position, length, new )

Возвращает строку, созданную путем замены некоторых символов из строки string на символы new. Будет заменено количество символов, указанное в length, начиная с позиции position (например, INSERT( 'help', 3,1, ' can jum') возвращает «he can jump»).

INSTR( string, substring )

Идентично функции LOCATE, за исключением того, что .аргументы идут в обратном порядке (например, INSTR( 'makebelieve', 'lie') возвращает 7).

ISNULL( expression )

Возвращает 1, если выражение в expression равно NULL, иначе возвращает 0 (например, ISNULL(3) вернет 0).

INTERVAL( А, В, С, D, . . . )

Возвращает 0, если А - это наименьшее значение, 1 - если А находится между В и С, 2- если А находится между С и D, и т. д. Все значения, кроме А, должны идти по порядку (например, INTERVAL (5,2,4,6,8) возвращает 2 (так как 5 находился во втором интервале между 4 и 6).

LAST_INSERT_ID()

Возвращает последнее значение поля AUTO_INCREMENT , которое было создано автоматически (например, LAST_INSERT_ID() может вернуть 4).

LCASE( string )/LOWER( string)

Возвращает строку string, где все символы переведены в нижний регистр (например, LCASE(' ВоВ') возвращает «bob»).

LEAST(num1, num2[, num3, . . . ])

Возвращает наименьший из всех имеющихся аргументов (например, LEAST(5,6,68,1,4) возвращает 1).

LEFT( string, length )

Возвращает количество символов length из строки string, начиная с начала строки (например, LEFTC 12345", 3) возвращает «123»).

LENGTH (string)/OCTET_LENGTH( string )/CHAR_LENGTH( string)/ CHARACTER_LENGTH( string)

Возвращает длину строки string (например, CHAR_LENGTH( 'Hi Mom! ' ) возвращает 7). В многобайтных наборах символов один символ может занимать более одного байта (например, в Unicode и некоторых азиатских наборах символов). В этих случаях строковые функции MySQL должны правильно считать число символов, а не байтов. Однако в версиях до 3.23 эта функция не работала и возвращала число байт.

LOCATE( substring, string [, number ])/POSITION( substring, string )

Возвращает позицию подстроки substring в строке string. Возвращает 0, если substring не найдена. Если в LOCATE задан третий числовой аргумент, поиск подстроки начнется только с позиции, указанной этим аргументом (например, LOCATE(' SQL', ' MySQL') вернет 3).

LOG(number)

Возвращает натуральный логарифм числа number (например, LOG(2) возвращает 0.693147).

LOG10(number)

Возвращает обычный (десятичный) логарифм числа (например, LOG10(1000) возвращает 3.000000).

LPAD( string, length, padding )

Возвращает заданную строку string с дополнением padding к началу строки. Дополнение будет повторяться, пока новая строка не достигнет длины, указанной в length, (например, LPAD(' -Merry X-Mas',18, 'Но') возвращает «НоНоНо Merry X-Mas»).

LTRIM( string)

Возвращает строку string с удалением всех начальных пробелов (например, LTRIM(' Oops') возвращает «Oops»).

MID( string, position, length )/SUBSTRING( string, position, length )/

SUBSTRING( string FROM position FOR length )

Возвращает подстроку из количества символов, указанного в length, взятых из строки string, начиная с позиции position (например, SUBSTRING(' 12345', 2,3) возвращает «234»).

MINUTE( time)

Возвращает количество минут указанного времени (например, MI-NUTE('15:33:30') возвращает 33).

МOD(num1, пит2)

Возвращает модуль числа пит1, деленного на число пит2. Функция аналогична оператору % (например, MOD(11,3) возвращает 2).

MONTH (date)

Возвращает номер месяца (1 в случае января) для указанной даты (например, MONTH(' 1998-08-22') возвращает 8).

MONTHNAME( date)

Возвращает название месяца для указанной даты (например, MONTHNAME('1998-08- 22') возвращает «August»).

NOW()/SYSDATE()/CURRENT_TIMESTAMP()

Возвращает текущую дату и время. В числовом контексте возвращается число вида YYYYMMDDHHMMSS , в ином случае вернется строка вида 'YYYY-MM-DD HH:MM:SS' (например, SYSDATE() может вернуть «1998-08-24 12:55:32»).

OCT( decimal)

Возвращает восьмеричное значение заданного десятичного числа. Функция эквивалентна функции CONV(deciinal, 10,8) (например, ОСТ(8) возвращает 10).

PASSWORD( string)

Возвращает зашифрованную версию заданной строки. (Например, PASSWD( 'mypass') может вернуть «3afi4004idgv».)

PERIOD_ADD( date, months )

Возвращает дату, сформированную путем добавления указанного числа месяцев к заданной дате (которая должна быть в формате YYMM или YYYYMM) (например, PERIOD_ADD(9808,14) возвращает 199910).

PERIOD_DIFF( date1, date2 )

Возвращает количество месяцев между указанными датами (которые должны быть указаны в формате YYMM или YYYYMM) (например, PERIOD_DIFF(199901,8901) вернет 120).

PI()

Возвращает число к: 3.141593.

POW(num1, num2)/POWER( num1, num2]

Возвращает значение числа пит 1, возведенного в степень пит2- (например, POWER(3,2) возвращает 9.000000).

QUARTER( date)

Возвращает номер квартала указанной даты (1 - это январь-март) (например, QUARTER(' 1998-08-22') возвращает 3).

RADIANS( degrees)

Возвращает значение заданного аргумента, переведенное из градусов в радианы (например, RADIANS(-90) возвращает -1.570796).

RAND ([seed])

Возвращает случайную десятичную дробь от 0 до 1. Если задан аргумент, он используется как источник (seed) для генератора случайных чисел (например, RAND(3) может вернуть 0.435434).

RELEASE_LOCK( name)

Удаляет блокировку, созданную функцией GET_LOCK . Вернет 1, если снятие блокировки было успешным; 0, если блокировку не удалось снять, поскольку она не принадлежит текущему потоку; и NULL, если блокировки нет (например, RELEASE_LOCK("mylock") ).

REPEAT( string, number )

Возвращает строку, полученную путем повторения заданной строки некоторое число раз (указано в number). Вернет пустую строку, если number меньше или равно нулю (например, REPEAT( 'ma', 4) возвращает 'mamamama').

REPLACE( string, old, new )

Возвращает строку, в которой все вхождения подстроки old заменяются на подстроку new (например, REPLACE('black jack','ack1,'oke') возвращает «bloke joke»).

REVERSE( string)

Возвращает символы строки string в обратном порядке (например, REVERSE('my bologna') возвращает «angolobym»).

RIGHT( string, length )/SUBSTRING( string FROM length)

Возвращает количество символов из string, указанное в length, начиная с конца строки (например, SUBSTRING( «12345» FROM 3) возвращает «345»).

ROUND( number [.decimal ])

Округляет дробную часть числа number до указанного количества цифр. Если аргумент decimal не указан, число округляется до целого (например, ROUND(5.67,1) возвращает 5.7).

RPAD( string, length, padding )

Возвращает строку string с дополнением padding к концу строки. Дополнение будет повторяться, пока новая строка не достигнет длины, указанной в length (например, RPAD( 'Yo', 5, '! ') возвращает «Yo!!!»).

RTRIM( string)

Возвращает строку string с удалением всех концевых пробелов (например, RTRIM( 'Oops ') вернет «Oops»).

SECOND( time)

Возвращает секунды из указанного времени (например, SE-COND('15:33:30') возвращает 30).

SEC_TO_TIME( seconds )

Возвращает число часов, минут и секунд в заданном количестве секунд. При использовании в числовом контексте возвращает число в формате HHMMSS, иначе вернет строку вида HH:MM:SS (например, SEC_TO_TIME(3666) возвращает «01:01:06»).

SING( number)

Возвращает -1, если число number отрицательное, 0, если это ноль, и 1, если оно положительное (например, SIGN(4) возвращает 1).

SIN( radians)

Возвращает синус числа, заданного в радианах (например, SIN(2*РI()) возвращает0. 000000).

SOUNDEX(stdng)

Возвращает код Soundex, связанный со строкой (например, SOUNDEX(' Jello') возвращает «J400»).

SPACE(number)

Возвращает строку из пробелов, число которых указанно в number (например, SPACE( 5) возвращает<>).

SQRT(number)

Возвращает квадратный корень числа number (например, SQRT(16) возвращает 4.000000).

STRCMP( string1, string2 )

Возвращает 0, если строки совпадают, -1 если бы string1 при сортировке оказалась раньше строки string2; или 1, если string! была бы при сортировке после string2 (например, STRCMP( 'bob', 'bobbie') возвращает —1).

SUBSTRING_INDEX( string, character, number )

Считает количество указанных символов character в строке string до тех пор, пока не досчитает до заданного числа number. Если это число было отрицательным, вернется все, что слева от символа, на котором остановился счетчик, а если число положительное, то функция вернет все, что находится справа от него. (Например, SUBSTRINGJENDEXC 1,2, 3,4,5', ',',-3) возвращает «1,2,3».)

SUBSTRING( string,position )

Возвращает строку string, начиная с символа указанного в position (например, SUBSTRING(«123456», 3) возвращает «3456»).

TAN(radians )

Возвращает тангенс числа, заданного в радианах (например, TAN(0) возвращает 0.000000).

TIME_FORMAT( time, format)

Форматирует заданное время в указанный формат. Формат тот же, что и в команде DATE FORMAT , описанной выше.

TIME_TO_SEC( time)

Возвращает количество секунд в аргументе time (например, ТIМЕ_ТО_ 8ЕС(' 01:01:06') возвращает 3666).

TO_DAYS(date)

Возвращает количество дней, прошедшее до указанной даты (день 1 - это 1-е января 1-го года). Дата может быть значением типа DATE, DATETIME, TIMESTAMP или числом в формате YYMMDD либо YYYYMMDD (например, TO_DAYS( 19950402) возвращает 728749).

TRIM([BOTH|LEADING|TRAILING] [ remove ] [FROM] string)

Возвращает строку string с удаленными концевыми и начальными пробелами. Вы можете указать, какие пробелы хотите удалить (концевые, начальные или и те и другие). Также вместо пробела можно указать другой символ (например, TRIM( both ' ' from ' --look here—') возвращает «look here»).

TRUNCATE( number, decimals )

Возвращает number с дробной частью, усеченной до указанного количества цифр. (Например, TRUNCATE(3.33333333,2) возвращает 3.33.)

UCASE( string)/UPPER( string)

Возвращает string, где все символы переведены в верхний регистр (например, UPPER ('Scooby') возвращает «SCOOBY»).

UNIX_TIMESTAMP([ date])

Возвращает число секунд, прошедшее с начала отсчета (1 января 1970 г. GMT) до заданной даты (GMT). Если дата не указана, возвращает число секунд, прошедшее до текущей даты (например, UNIX_TI-MESTAMPC1998-08-24 18:00:02') возвращает 903981584).

USER()/SYSTEM_USER()/SESSION_USER()

Возвращает имя текущего пользователя (например, SYSTEM_USER() может вернуть «ryarger»).

VERSION()

Возвращает версию самого сервера MySQL (например, VERSION() может вернуть «3.22. 5c-alpha»).

WEEK(date)

Возвращает порядковый номер недели года из указанной даты (например, WEEK( '1998-12-29') возвращает 52).

YEAR (date)

Возвращает год из указанной даты (например, YEAR('1998-12-29') возвращает 1998).

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

AVG(height) FROM kids возвращала бы среднее от значений поля ' height' в таблице kids.

AVG( expression )

Возвращает среднее значение из значений в expression (например, SELECT AVG(score) FROM tests ).

BIT_AND( expression )

Возвращает результат побитового И, агрегирующего все значения в expression (например,









Начало  Назад  Вперед


Книжный магазин